From 7005fbb5d4cf44adf1f195281a7d07d720aa4328 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 14 Jul 2020 11:22:06 -0700 Subject: [PATCH 01/56] Add GDB. --- src/awp/pmcl3d.c | 14 +++++++++++ src/debug/debug.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index 69e5ae4..ec9deb5 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -34,6 +34,10 @@ #define VERBOSE 1 +// Uncomment this line to allow for gdb to attach to the mpi process with +// rank = 0 +// #define GDB_ATTACH + int main(int argc,char **argv) { // variable definition begins @@ -317,6 +321,16 @@ int main(int argc,char **argv) MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Comm_size(MPI_COMM_WORLD,&size_tot); +#ifdef GDB_ATTACH + if ( rank == 0) { + volatile int i = 0; + printf("Process ID %d is ready for attach\n", getpid()); + fflush(stdout); + while (0 == i) + sleep(5); + } +#endif + time_init = gethrtime(); if (rank == 0) fprintf(stdout, "Initializing...\n"); diff --git a/src/debug/debug.md b/src/debug/debug.md index ddcef8c..6e7e44e 100644 --- a/src/debug/debug.md +++ b/src/debug/debug.md @@ -3,6 +3,68 @@ These notes describe a set of scripts that are helpful for both debugging and fu developing AWP. Before you use any of these scripts, please commit your work beforehand so that you can easily revert the changes in case something goes wrong. +## Debugging +It is not uncommon for segmentation faults to occur when running AWP. Sometimes, +these are caused by user errors and other times they are caused by bugs in the +program. In either case, these errors can be time consuming to identity without +a systematic approach and proper tools. This guide is meant to show you one +effective way of catching segmentation fault using the gdb debugger. + +If you can read this document, +then chances are that you have access to a sufficiently recent version of AWP +that enables gdb to attach to one of your runs. + +1. Search for `GDB_ATTACH` +at the top of `pmcl3d.c` and uncomment the line. If you cannot find this macro, +go ahead and copy and paste the following block of code after the `MPI_Init, +MPI_Comm_rank, MPI_Comm_size` calls. + +```C + if ( rank == 0) { + volatile int i = 0; + printf("Process ID %d is ready for attach\n", getpid()); + fflush(stdout); + while (0 == i) + sleep(5); + } + +``` + +2. Compile AWP in debug mode: +``` +$ cd build +$ make clean +$ cmake -DCMAKE_BUILD_TYPE=Debug .. +$ make + +``` +3. Launch an interactive job and load gdb. On summit, see the user guide for + launching interactive jobs: https://docs.olcf.ornl.gov/systems/summit_user_guide.html#interactive-jobs + To use gdb on Summit, you need to load it: `module load gdb`. +4. Run AWP: Once your interactive jobs has started, call AWP with its usual input + arguments associated with your particular run. Put `&` at the end of the + command to spawn it in a background process so that you regain control of the + terminal. For e.g, + ``` + jsrun -n 4 -a 3 -c 3 -g 1 -r 4 -d cyclic pmcl3d [ARGS]& + ``` + After a while, you should see: + ``` + Process ID 23969 is ready for attach + ``` +5. Run gdb: `gdb ---pid PID`, but replace PID with process ID displayed in the + previous step. Press `n` followed by the return key until you see + ``` + while (0 == i) + ``` + Run the command: + `set var i = 1` + This command will cause gdb do modify the variable `i` and therefore exit the + while loop. Next, you can proceed using gdb as you please. To simplify go to + the next error, type `c` and gdb should run until the error occurs and tell + you what statement in the source code that caused the error. + + ## Memory issues We have found that certain bugs in AWP are due to memory errors. Tools such as `valgrind` and `cuda-memcheck` are excellent for reporting many memory related issues. You are highly From d6f70612f2307a117d55d9e2f4af5194e1eac8ec Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 14 Jul 2020 11:24:01 -0700 Subject: [PATCH 02/56] Set CUDA compile flags. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cd29ed6..6c3ed15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ if (DEFINED ENV{ARCH}) else() set(ARCH sm_70) endif() -set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=${ARCH} -Xptxas=-v -lineinfo -use_fast_math") +set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O4 -use_fast_math -arch=${ARCH} -Xptxas=-v -lineinfo") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COMPILE_FLAGS} -D${ARCH}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu11 -D${ARCH}") From 258c5e503f51891cb4f9caa52f037ea07f5600a1 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 14 Jul 2020 11:27:28 -0700 Subject: [PATCH 03/56] Fix segmentation fault when using point forces on multiple GPUs. --- src/topography/sources/forces.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/topography/sources/forces.c b/src/topography/sources/forces.c index 4e172a2..b562ace 100644 --- a/src/topography/sources/forces.c +++ b/src/topography/sources/forces.c @@ -43,7 +43,7 @@ void forces_init(const char *filename, const grids_t *grids, int ngrids, Fy = source_init("fy", Y, &input, grids, ngrids, f, rank, comm); Fz = source_init("fz", Z, &input, grids, ngrids, f, rank, comm); - AWPCHK(forces_boundary_check(&Fx)); + if (Fx.use) AWPCHK(forces_boundary_check(&Fx)); } From 501f464fc0d3365afa3cf33f02495779821633ca Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 14 Jul 2020 11:34:47 -0700 Subject: [PATCH 04/56] Fix force parallel bug. --- include/topography/grids.h | 6 +++++- src/topography/grids.c | 14 ++++++++++++++ src/topography/sources/forces.c | 6 +++--- src/topography/sources/sources.c | 9 +++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/include/topography/grids.h b/include/topography/grids.h index 89b1303..7f956d7 100644 --- a/include/topography/grids.h +++ b/include/topography/grids.h @@ -16,6 +16,10 @@ typedef struct grid3_t x; grid3_t y; grid3_t z; + + grid3_t sx; + grid3_t sy; + grid3_t sz; grid3_t xx; grid3_t yy; @@ -27,7 +31,7 @@ typedef struct grid3_t node; } grids_t; -enum grid_types {X, Y, Z, XX, YY, ZZ, XY, XZ, YZ, NODE}; +enum grid_types {X, Y, Z, SX, SY, SZ, XX, YY, ZZ, XY, XZ, YZ, NODE}; grids_t grids_init(const int nx, const int ny, const int nz, const int coord_x, const int coord_y, const int coord_z, diff --git a/src/topography/grids.c b/src/topography/grids.c index 3d21776..57ec2af 100644 --- a/src/topography/grids.c +++ b/src/topography/grids.c @@ -27,6 +27,11 @@ grids_t grids_init(const int nx, const int ny, const int nz, const int coord_x, grids.x = grid_init(size, grid_x(), coord, bnd1, bnd2, 0, h); grids.y = grid_init(size, grid_y(), coord, bnd1, bnd2, 0, h); grids.z = grid_init(size, grid_z(), coord, bnd1, bnd2, 0, h); + + // Point force grids + grids.sx = grid_init(size, grid_x(), coord, bnd1, bnd2, ngsl / 2, h); + grids.sy = grid_init(size, grid_y(), coord, bnd1, bnd2, ngsl / 2, h); + grids.sz = grid_init(size, grid_z(), coord, bnd1, bnd2, ngsl / 2, h); // stress grids grids.xx = grid_init(size, grid_xx(), coord, bnd1, bnd2, ngsl / 2, h); @@ -78,6 +83,15 @@ grid3_t grids_select(const enum grid_types grid_type, const grids_t *grids) case Z: return grids->z; break; + case SX: + return grids->sx; + break; + case SY: + return grids->sy; + break; + case SZ: + return grids->sz; + break; case XX: return grids->xx; break; diff --git a/src/topography/sources/forces.c b/src/topography/sources/forces.c index b562ace..812f134 100644 --- a/src/topography/sources/forces.c +++ b/src/topography/sources/forces.c @@ -39,9 +39,9 @@ void forces_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - Fx = source_init("fx", X, &input, grids, ngrids, f, rank, comm); - Fy = source_init("fy", Y, &input, grids, ngrids, f, rank, comm); - Fz = source_init("fz", Z, &input, grids, ngrids, f, rank, comm); + Fx = source_init("fx", SX, &input, grids, ngrids, f, rank, comm); + Fy = source_init("fy", SY, &input, grids, ngrids, f, rank, comm); + Fz = source_init("fz", SZ, &input, grids, ngrids, f, rank, comm); if (Fx.use) AWPCHK(forces_boundary_check(&Fx)); diff --git a/src/topography/sources/sources.c b/src/topography/sources/sources.c index 8c42ac9..7c99f45 100644 --- a/src/topography/sources/sources.c +++ b/src/topography/sources/sources.c @@ -122,6 +122,15 @@ source_t sources_get_source(enum grid_types grid_type) case YZ: return Myz; break; + case SX: + fprintf(stderr, "No source can exist on grid SX\n"); + break; + case SY: + fprintf(stderr, "No source can exist on grid SY\n"); + break; + case SZ: + fprintf(stderr, "No source can exist on grid SZ\n"); + break; case X: fprintf(stderr, "No source can exist on grid X\n"); break; From b839697ea53e3eb7c1b41fde6cfa02afc2cc0ffb Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 14 Jul 2020 13:59:54 -0700 Subject: [PATCH 05/56] Fix ngsl. --- include/awp/definitions.h | 4 +- include/awp/pmcl3d_cons.h | 4 +- include/topography/metrics/metrics.h | 9 ++- include/topography/metrics/shift.h | 9 +++ include/topography/topography.h | 1 + src/topography/geometry.c | 8 +- src/topography/metrics/CMakeLists.txt | 3 +- src/topography/metrics/kernel.c | 76 ++++++++++--------- src/topography/metrics/metrics.c | 48 ++++++++---- src/topography/metrics/shift.c | 23 ++++++ src/topography/readers/serial_reader.c | 13 ++-- src/topography/topography.c | 31 ++++---- tests/topography/geometry/test_geometry.c | 4 +- tests/topography/metrics/test_metrics.c | 2 +- tests/topography/readers/test_serial_reader.c | 24 +++--- 15 files changed, 169 insertions(+), 90 deletions(-) create mode 100644 include/topography/metrics/shift.h create mode 100644 src/topography/metrics/shift.c diff --git a/include/awp/definitions.h b/include/awp/definitions.h index 5a530d7..1d1c411 100644 --- a/include/awp/definitions.h +++ b/include/awp/definitions.h @@ -29,11 +29,11 @@ typedef float prec; #endif #ifndef ngsl -#define ngsl 8 +#define ngsl 4 #endif #ifndef ngsl2 -#define ngsl2 16 +#define ngsl2 8 #endif #ifndef align diff --git a/include/awp/pmcl3d_cons.h b/include/awp/pmcl3d_cons.h index 8808c48..98e1486 100644 --- a/include/awp/pmcl3d_cons.h +++ b/include/awp/pmcl3d_cons.h @@ -19,8 +19,8 @@ // In the future, it should be possible to keep this number at four, but modify // the vertical velocity exchange so that 6 points is exchanged instead of 4. // No modifications necessary to the other velocity components. -#define ngsl 8 /* number of ghost cells x loop */ -#define ngsl2 16 /* ngsl * 2 */ +#define ngsl 4 /* number of ghost cells x loop */ +#define ngsl2 8 /* ngsl * 2 */ #define Both 0 #define Left 1 diff --git a/include/topography/metrics/metrics.h b/include/topography/metrics/metrics.h index 52c4881..f4e6a35 100644 --- a/include/topography/metrics/metrics.h +++ b/include/topography/metrics/metrics.h @@ -22,6 +22,9 @@ #include #include +// This parameter pads the compute region. Its needed for the computation of +// derivative and interpolation stencils. Do not change its value. + #define pmetrics_f_index(g,i,j) ((g)->offset[1] + (g)->bounds_y[0] + j) + \ ((g)->offset[0] + (g)->bounds_x[0] + i) * \ (g)->slice @@ -29,6 +32,8 @@ ((g).offset[0] + (g).bounds_x[0] + i) * \ (g).slice +static const int metrics_padding = 8; + /* * Topography function `f(x1, x2)`. * The topography function is a 2D scalar field that defines the elevation at @@ -128,7 +133,8 @@ typedef struct } g_grid_t; -f_grid_t metrics_init_f(const int *size, const _prec gridspacing); +f_grid_t metrics_init_f(const int *size, const _prec gridspacing, + const int pad); void metrics_build_f(f_grid_t *f); void metrics_free_f(f_grid_t *f); void metrics_print_info_f(const f_grid_t *f); @@ -142,6 +148,7 @@ void metrics_h_free_f(f_grid_t *f); void metrics_d_free_f(f_grid_t *f); void metrics_interpolate_f(f_grid_t *f); void metrics_differentiate_f(f_grid_t *f); +void metrics_shift_f(f_grid_t *fout, const f_grid_t *fin); int metrics_interpolate_f_point(const f_grid_t *f, prec *out, const prec *in, const prec *x, const prec *y, const grid3_t grid, const prec *qx, diff --git a/include/topography/metrics/shift.h b/include/topography/metrics/shift.h new file mode 100644 index 0000000..7288fd3 --- /dev/null +++ b/include/topography/metrics/shift.h @@ -0,0 +1,9 @@ +#ifndef METRICS_SHIFT_H +#define METRICS_SHIFT_H + +#include + +void metrics_shift_f_apply(float *fout, const float *fin, const int nx, + const int ny); + +#endif diff --git a/include/topography/topography.h b/include/topography/topography.h index 43de102..81ecac5 100644 --- a/include/topography/topography.h +++ b/include/topography/topography.h @@ -248,6 +248,7 @@ typedef struct // Topography function f_grid_t metrics_f; + f_grid_t metrics_f_init; // Grid stretching function g_grid_t metrics_g; grid3_t topography_grid; diff --git a/src/topography/geometry.c b/src/topography/geometry.c index 85fe370..957626a 100644 --- a/src/topography/geometry.c +++ b/src/topography/geometry.c @@ -73,11 +73,11 @@ void topo_write_geometry_vtk(topo_t *T, const int mode) _prec *y = malloc(T->topography_grid.num_bytes); _prec *z = malloc(T->topography_grid.num_bytes); - grid_fill3_x(x, T->x1, T->stress_grid); - grid_fill3_y(y, T->y1, T->stress_grid); - grid_fill3_z(z, T->z1, T->stress_grid); + grid_fill3_x(x, T->x1, T->velocity_grid); + grid_fill3_y(y, T->y1, T->velocity_grid); + grid_fill3_z(z, T->z1, T->velocity_grid); - geom_mapping_z(z, T->stress_grid, grid_node(), &T->metrics_f, + geom_mapping_z(z, T->velocity_grid, grid_node(), &T->metrics_f, &T->metrics_g); char vtk_file[256]; diff --git a/src/topography/metrics/CMakeLists.txt b/src/topography/metrics/CMakeLists.txt index f5d431e..af61a0d 100644 --- a/src/topography/metrics/CMakeLists.txt +++ b/src/topography/metrics/CMakeLists.txt @@ -3,9 +3,10 @@ set(HEADERS ${AWP_MINI_SOURCE_DIR}/include/functions/functions.h ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/metrics.h ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/kernel.h + ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/shift.h ) -add_library(metrics metrics.c kernel.c) +add_library(metrics metrics.c kernel.c shift.c) target_include_directories(metrics PUBLIC diff --git a/src/topography/metrics/kernel.c b/src/topography/metrics/kernel.c index a01e307..02325eb 100644 --- a/src/topography/metrics/kernel.c +++ b/src/topography/metrics/kernel.c @@ -1,14 +1,18 @@ #include +# +// This parameter pads the compute region. Its needed for the computation of +// derivative and interpolation stencils. Do not change its value. +#define padding 8 void metrics_f_interp_1_111(float *df1, const float *f, const int nx, const int ny, const int nz) { const float phy[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; for (int k = 0; k < 1; ++k) { - for (int j = 0; j < 2*ngsl + ny - 4; ++j) { - for (int i = 0; i < 2*ngsl + nx - 4; ++i) { - #define _f(i,j) f[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - #define _df1(i,j) df1[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - _df1(-ngsl + i + 2,-ngsl + j + 2) = phy[0]*_f(-ngsl + i + 2,-ngsl + j) + phy[1]*_f(-ngsl + i + 2,-ngsl + j + 1) + phy[2]*_f(-ngsl + i + 2,-ngsl + j + 2) + phy[3]*_f(-ngsl + i + 2,-ngsl + j + 3); + for (int j = 0; j < 2*padding + ny - 4; ++j) { + for (int i = 0; i < 2*padding + nx - 4; ++i) { + #define _f(i,j) f[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + #define _df1(i,j) df1[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + _df1(-padding + i + 2,-padding + j + 2) = phy[0]*_f(-padding + i + 2,-padding + j) + phy[1]*_f(-padding + i + 2,-padding + j + 1) + phy[2]*_f(-padding + i + 2,-padding + j + 2) + phy[3]*_f(-padding + i + 2,-padding + j + 3); #undef _f #undef _df1 @@ -22,11 +26,11 @@ void metrics_f_interp_2_111(float *df1, const float *f, const int nx, const int { const float px[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; for (int k = 0; k < 1; ++k) { - for (int j = 0; j < 2*ngsl + ny - 4; ++j) { - for (int i = 0; i < 2*ngsl + nx - 4; ++i) { - #define _f(i,j) f[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - #define _df1(i,j) df1[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - _df1(-ngsl + i + 2,-ngsl + j + 2) = px[0]*_f(-ngsl + i + 1,-ngsl + j + 2) + px[1]*_f(-ngsl + i + 2,-ngsl + j + 2) + px[2]*_f(-ngsl + i + 3,-ngsl + j + 2) + px[3]*_f(-ngsl + i + 4,-ngsl + j + 2); + for (int j = 0; j < 2*padding + ny - 4; ++j) { + for (int i = 0; i < 2*padding + nx - 4; ++i) { + #define _f(i,j) f[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + #define _df1(i,j) df1[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + _df1(-padding + i + 2,-padding + j + 2) = px[0]*_f(-padding + i + 1,-padding + j + 2) + px[1]*_f(-padding + i + 2,-padding + j + 2) + px[2]*_f(-padding + i + 3,-padding + j + 2) + px[3]*_f(-padding + i + 4,-padding + j + 2); #undef _f #undef _df1 @@ -41,11 +45,11 @@ void metrics_f_interp_c_111(float *df1, const float *f, const int nx, const int const float phy[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; const float px[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; for (int k = 0; k < 1; ++k) { - for (int j = 0; j < 2*ngsl + ny - 4; ++j) { - for (int i = 0; i < 2*ngsl + nx - 4; ++i) { - #define _f(i,j) f[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - #define _df1(i,j) df1[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - _df1(-ngsl + i + 2,-ngsl + j + 2) = phy[0]*(px[0]*_f(-ngsl + i + 1,-ngsl + j) + px[1]*_f(-ngsl + i + 2,-ngsl + j) + px[2]*_f(-ngsl + i + 3,-ngsl + j) + px[3]*_f(-ngsl + i + 4,-ngsl + j)) + phy[1]*(px[0]*_f(-ngsl + i + 1,-ngsl + j + 1) + px[1]*_f(-ngsl + i + 2,-ngsl + j + 1) + px[2]*_f(-ngsl + i + 3,-ngsl + j + 1) + px[3]*_f(-ngsl + i + 4,-ngsl + j + 1)) + phy[2]*(px[0]*_f(-ngsl + i + 1,-ngsl + j + 2) + px[1]*_f(-ngsl + i + 2,-ngsl + j + 2) + px[2]*_f(-ngsl + i + 3,-ngsl + j + 2) + px[3]*_f(-ngsl + i + 4,-ngsl + j + 2)) + phy[3]*(px[0]*_f(-ngsl + i + 1,-ngsl + j + 3) + px[1]*_f(-ngsl + i + 2,-ngsl + j + 3) + px[2]*_f(-ngsl + i + 3,-ngsl + j + 3) + px[3]*_f(-ngsl + i + 4,-ngsl + j + 3)); + for (int j = 0; j < 2*padding + ny - 4; ++j) { + for (int i = 0; i < 2*padding + nx - 4; ++i) { + #define _f(i,j) f[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + #define _df1(i,j) df1[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + _df1(-padding + i + 2,-padding + j + 2) = phy[0]*(px[0]*_f(-padding + i + 1,-padding + j) + px[1]*_f(-padding + i + 2,-padding + j) + px[2]*_f(-padding + i + 3,-padding + j) + px[3]*_f(-padding + i + 4,-padding + j)) + phy[1]*(px[0]*_f(-padding + i + 1,-padding + j + 1) + px[1]*_f(-padding + i + 2,-padding + j + 1) + px[2]*_f(-padding + i + 3,-padding + j + 1) + px[3]*_f(-padding + i + 4,-padding + j + 1)) + phy[2]*(px[0]*_f(-padding + i + 1,-padding + j + 2) + px[1]*_f(-padding + i + 2,-padding + j + 2) + px[2]*_f(-padding + i + 3,-padding + j + 2) + px[3]*_f(-padding + i + 4,-padding + j + 2)) + phy[3]*(px[0]*_f(-padding + i + 1,-padding + j + 3) + px[1]*_f(-padding + i + 2,-padding + j + 3) + px[2]*_f(-padding + i + 3,-padding + j + 3) + px[3]*_f(-padding + i + 4,-padding + j + 3)); #undef _f #undef _df1 @@ -59,11 +63,11 @@ void metrics_f_diff_1_1_111(float *df1, const float *f, const float hi, const in { const float dhx[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; for (int k = 0; k < 1; ++k) { - for (int j = 0; j < 2*ngsl + ny - 4; ++j) { - for (int i = 0; i < 2*ngsl + nx - 4; ++i) { - #define _f(i,j) f[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - #define _df1(i,j) df1[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - _df1(-ngsl + i + 2,-ngsl + j + 2) = hi*(dhx[0]*_f(-ngsl + i,-ngsl + j + 2) + dhx[1]*_f(-ngsl + i + 1,-ngsl + j + 2) + dhx[2]*_f(-ngsl + i + 2,-ngsl + j + 2) + dhx[3]*_f(-ngsl + i + 3,-ngsl + j + 2)); + for (int j = 0; j < 2*padding + ny - 4; ++j) { + for (int i = 0; i < 2*padding + nx - 4; ++i) { + #define _f(i,j) f[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + #define _df1(i,j) df1[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + _df1(-padding + i + 2,-padding + j + 2) = hi*(dhx[0]*_f(-padding + i,-padding + j + 2) + dhx[1]*_f(-padding + i + 1,-padding + j + 2) + dhx[2]*_f(-padding + i + 2,-padding + j + 2) + dhx[3]*_f(-padding + i + 3,-padding + j + 2)); #undef _f #undef _df1 @@ -77,11 +81,11 @@ void metrics_f_diff_1_2_111(float *df1, const float *f, const float hi, const in { const float dx[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; for (int k = 0; k < 1; ++k) { - for (int j = 0; j < 2*ngsl + ny - 4; ++j) { - for (int i = 0; i < 2*ngsl + nx - 4; ++i) { - #define _f(i,j) f[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - #define _df1(i,j) df1[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - _df1(-ngsl + i + 2,-ngsl + j + 2) = hi*(dx[0]*_f(-ngsl + i + 1,-ngsl + j + 2) + dx[1]*_f(-ngsl + i + 2,-ngsl + j + 2) + dx[2]*_f(-ngsl + i + 3,-ngsl + j + 2) + dx[3]*_f(-ngsl + i + 4,-ngsl + j + 2)); + for (int j = 0; j < 2*padding + ny - 4; ++j) { + for (int i = 0; i < 2*padding + nx - 4; ++i) { + #define _f(i,j) f[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + #define _df1(i,j) df1[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + _df1(-padding + i + 2,-padding + j + 2) = hi*(dx[0]*_f(-padding + i + 1,-padding + j + 2) + dx[1]*_f(-padding + i + 2,-padding + j + 2) + dx[2]*_f(-padding + i + 3,-padding + j + 2) + dx[3]*_f(-padding + i + 4,-padding + j + 2)); #undef _f #undef _df1 @@ -95,11 +99,11 @@ void metrics_f_diff_2_1_111(float *df1, const float *f, const float hi, const in { const float dhy[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; for (int k = 0; k < 1; ++k) { - for (int j = 0; j < 2*ngsl + ny - 4; ++j) { - for (int i = 0; i < 2*ngsl + nx - 4; ++i) { - #define _f(i,j) f[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - #define _df1(i,j) df1[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - _df1(-ngsl + i + 2,-ngsl + j + 2) = hi*(dhy[0]*_f(-ngsl + i + 2,-ngsl + j) + dhy[1]*_f(-ngsl + i + 2,-ngsl + j + 1) + dhy[2]*_f(-ngsl + i + 2,-ngsl + j + 2) + dhy[3]*_f(-ngsl + i + 2,-ngsl + j + 3)); + for (int j = 0; j < 2*padding + ny - 4; ++j) { + for (int i = 0; i < 2*padding + nx - 4; ++i) { + #define _f(i,j) f[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + #define _df1(i,j) df1[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + _df1(-padding + i + 2,-padding + j + 2) = hi*(dhy[0]*_f(-padding + i + 2,-padding + j) + dhy[1]*_f(-padding + i + 2,-padding + j + 1) + dhy[2]*_f(-padding + i + 2,-padding + j + 2) + dhy[3]*_f(-padding + i + 2,-padding + j + 3)); #undef _f #undef _df1 @@ -113,11 +117,11 @@ void metrics_f_diff_2_2_111(float *df1, const float *f, const float hi, const in { const float dy[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; for (int k = 0; k < 1; ++k) { - for (int j = 0; j < 2*ngsl + ny - 4; ++j) { - for (int i = 0; i < 2*ngsl + nx - 4; ++i) { - #define _f(i,j) f[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - #define _df1(i,j) df1[(j) + align + ngsl + ((i) + ngsl + 2)*(2*align + 2*ngsl + ny + 4) + 2] - _df1(-ngsl + i + 2,-ngsl + j + 2) = hi*(dy[0]*_f(-ngsl + i + 2,-ngsl + j + 1) + dy[1]*_f(-ngsl + i + 2,-ngsl + j + 2) + dy[2]*_f(-ngsl + i + 2,-ngsl + j + 3) + dy[3]*_f(-ngsl + i + 2,-ngsl + j + 4)); + for (int j = 0; j < 2*padding + ny - 4; ++j) { + for (int i = 0; i < 2*padding + nx - 4; ++i) { + #define _f(i,j) f[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + #define _df1(i,j) df1[(j) + align + padding + ((i) + padding + 2)*(2*align + 2*padding + ny + 4) + 2] + _df1(-padding + i + 2,-padding + j + 2) = hi*(dy[0]*_f(-padding + i + 2,-padding + j + 1) + dy[1]*_f(-padding + i + 2,-padding + j + 2) + dy[2]*_f(-padding + i + 2,-padding + j + 3) + dy[3]*_f(-padding + i + 2,-padding + j + 4)); #undef _f #undef _df1 @@ -289,4 +293,4 @@ void metrics_g_diff_c_112(float *g3, const float *g, const float hi, const int n } - +#undef padding diff --git a/src/topography/metrics/metrics.c b/src/topography/metrics/metrics.c index eb85be7..e302250 100644 --- a/src/topography/metrics/metrics.c +++ b/src/topography/metrics/metrics.c @@ -8,23 +8,27 @@ #include #include #include +#include #include #include "interpolation/interpolation.h" -f_grid_t metrics_init_f(const int *size, const _prec gridspacing) -{ - f_grid_t out = { - .size = {size[0], size[1], 1}, - .mem = {size[0] + 4 + 2*ngsl, size[1] + 4 + 2*ngsl + 2 * align, 1}, - .bounds_x = {-ngsl, size[0] + ngsl}, - .bounds_y = {-ngsl, size[1] + ngsl}, - .bounds_stress_x = {-ngsl / 2, size[0] + ngsl / 2}, - .bounds_stress_y = {-ngsl / 2, size[1] + ngsl / 2}, - .offset = {2 + ngsl, 2 + ngsl + align, 0}, - .hi = 1.0/gridspacing - }; + +// This parameter pads the compute region. Its needed for the computation of +// derivative and interpolation stencils. Do not change its value. + +f_grid_t metrics_init_f(const int *size, const _prec gridspacing, + const int pad) { + f_grid_t out = {.size = {size[0], size[1], 1}, + .mem = {size[0] + 4 + 2 * pad, + size[1] + 4 + 2 * pad + 2 * align, 1}, + .bounds_x = {-pad, size[0] + pad}, + .bounds_y = {-pad, size[1] + pad}, + .bounds_stress_x = {-pad / 2, size[0] + pad / 2}, + .bounds_stress_y = {-pad / 2, size[1] + pad / 2}, + .offset = {2 + pad, 2 + pad + align, 0}, + .hi = 1.0 / gridspacing}; out.line = out.mem[2]; - out.slice = out.mem[1]*out.mem[2]; + out.slice = out.mem[1] * out.mem[2]; metrics_h_malloc_f(&out); metrics_d_malloc_f(&out); @@ -168,6 +172,24 @@ void metrics_differentiate_f(f_grid_t *f) f->size[2]); } +void metrics_shift_f(f_grid_t *fout, const f_grid_t *fin) +{ + int nx = fout->size[0]; + int ny = fout->size[1]; + metrics_shift_f_apply(fout->f, fin->f, nx, ny); + metrics_shift_f_apply(fout->f_1, fin->f_1, nx, ny); + metrics_shift_f_apply(fout->f_2, fin->f_2, nx, ny); + metrics_shift_f_apply(fout->f_c, fin->f_c, nx, ny); + + metrics_shift_f_apply(fout->f1_1, fin->f1_1, nx, ny); + metrics_shift_f_apply(fout->f1_2, fin->f1_2, nx, ny); + metrics_shift_f_apply(fout->f1_c, fin->f1_c, nx, ny); + + metrics_shift_f_apply(fout->f2_1, fin->f2_1, nx, ny); + metrics_shift_f_apply(fout->f2_2, fin->f2_2, nx, ny); + metrics_shift_f_apply(fout->f2_c, fin->f2_c, nx, ny); +} + int metrics_interpolate_f_point(const f_grid_t *f, prec *out, const prec *in, const prec *x, const prec *y, grid3_t grid, const prec *qx, diff --git a/src/topography/metrics/shift.c b/src/topography/metrics/shift.c new file mode 100644 index 0000000..a64e74d --- /dev/null +++ b/src/topography/metrics/shift.c @@ -0,0 +1,23 @@ +#include +#include + +void metrics_shift_f_apply(float *fout, const float *fin, const int nx, + const int ny) +{ + int mx = nx + 2 * ngsl; + int my = ny + 2 * ngsl; + const int padding = 8; + +#define _fout(i, j) \ + fout[(j) + align + \ + ((i) + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _fin(i, j) \ + fin[(j) + align + \ + ((i) + 2) * (2 * align + 2 * padding + ny + 4) + 2] + for (int i = 0; i < mx; ++i) { + for (int j = 0; j < my; ++j) { + _fout(i, j) = + _fin(i + padding - ngsl, j + padding - ngsl); + } + } +} diff --git a/src/topography/readers/serial_reader.c b/src/topography/readers/serial_reader.c index 1178193..010c774 100644 --- a/src/topography/readers/serial_reader.c +++ b/src/topography/readers/serial_reader.c @@ -5,6 +5,7 @@ #include #include #include +#include int topo_read_serial(const char *filename, const int rank, const int px, @@ -28,9 +29,9 @@ int topo_read_serial(const char *filename, const int rank, const int px, assert(count > 0); assert(nx * px == gnx); assert(ny * py == gny); - assert(padding >= ngsl); + assert(padding >= metrics_padding); - if (nx * px != gnx || ny * py != gny || padding < ngsl) { + if (nx * px != gnx || ny * py != gny || padding < metrics_padding) { fclose(fh); return ERR_INCONSISTENT_SIZE; } @@ -38,15 +39,15 @@ int topo_read_serial(const char *filename, const int rank, const int px, float *data = malloc(sizeof data * gmx * gmy); count = fread(data, sizeof data, gmx * gmy, fh); - int lmx = 4 + nx + 2 * ngsl; - int lmy = 4 + ny + 2 * ngsl + 2 * align; + int lmx = 4 + nx + 2 * metrics_padding; + int lmy = 4 + ny + 2 * metrics_padding + 2 * align; if (alloc) { *out = malloc(sizeof out * lmx * lmy); } - for (int i = 0; i < (nx + 2 * ngsl); ++i) { - for (int j = 0; j < (ny + 2 * ngsl); ++j) { + for (int i = 0; i < (nx + 2 * metrics_padding); ++i) { + for (int j = 0; j < (ny + 2 * metrics_padding); ++j) { size_t global_pos = (ny * coord[1] + j) + (nx * coord[0] + i) * gmy; size_t local_pos = 2 + align + j + (2 + i) * lmy; diff --git a/src/topography/topography.c b/src/topography/topography.c index b24c90b..0db1c24 100644 --- a/src/topography/topography.c +++ b/src/topography/topography.c @@ -13,6 +13,7 @@ #include #include #include +#include topo_t topo_init(const int USETOPO, const char *INTOPO, @@ -207,25 +208,16 @@ void topo_d_free(topo_t *T) CUCHK(cudaFree(T->dcrjz)); } -void topo_init_metrics(topo_t *T) -{ - if (!T->use) return; - - int size[3] = {T->nx, T->ny, T->nz}; - T->metrics_f = metrics_init_f(size, T->gridspacing); - T->metrics_g = metrics_init_g(size, T->gridspacing); -} - void topo_init_geometry(topo_t *T) { int err = 0; int alloc = 0; err |= topo_read_serial(T->topography_file, T->rank, T->px, T->py, - T->coord, T->nx, T->ny, alloc, &T->metrics_f.f); + T->coord, T->nx, T->ny, alloc, &T->metrics_f_init.f); geom_no_grid_stretching(&T->metrics_g); - geom_custom(&T->metrics_f, T->topography_grid, T->px, T->py, - T->metrics_f.f); + geom_custom(&T->metrics_f_init, T->topography_grid, T->px, T->py, + T->metrics_f_init.f); if (err > 0) { printf("%s \n", error_message(err)); @@ -234,11 +226,24 @@ void topo_init_geometry(topo_t *T) } } +void topo_init_metrics(topo_t *T) +{ + if (!T->use) return; + int size[3] = {T->nx, T->ny, T->nz}; + T->metrics_f_init = metrics_init_f(size, T->gridspacing, metrics_padding); + T->metrics_f = metrics_init_f(size, T->gridspacing, ngsl); + T->metrics_g = metrics_init_g(size, T->gridspacing); +} + void topo_build(topo_t *T) { if (!T->use) return; - metrics_build_f(&T->metrics_f); + metrics_build_f(&T->metrics_f_init); + metrics_shift_f(&T->metrics_f, &T->metrics_f_init); + metrics_d_copy_f(&T->metrics_f); + metrics_free_f(&T->metrics_f_init); + metrics_build_g(&T->metrics_g); #if TOPO_USE_CONST_MATERIAL diff --git a/tests/topography/geometry/test_geometry.c b/tests/topography/geometry/test_geometry.c index 4261863..5ebb245 100644 --- a/tests/topography/geometry/test_geometry.c +++ b/tests/topography/geometry/test_geometry.c @@ -53,7 +53,7 @@ void test_gaussian(_prec **x, _prec **y, _prec **z, const int write_vtk, _prec h = gridspacing; int gsize[3] = {128, 128, 32}; - f_grid_t metrics_f = metrics_init_f(gsize, gridspacing); + f_grid_t metrics_f = metrics_init_f(gsize, gridspacing, 8); g_grid_t metrics_g = metrics_init_g(gsize, gridspacing); int3_t shift = grid_xx(); @@ -119,7 +119,7 @@ void test_incline_plane(const int write_vtk, const int rank) _prec gridspacing = 1.0 / (gsize[2] - 2); - f_grid_t metrics_f = metrics_init_f(gsize, gridspacing); + f_grid_t metrics_f = metrics_init_f(gsize, gridspacing, 8); g_grid_t metrics_g = metrics_init_g(gsize, gridspacing); int3_t shift = grid_u3(); diff --git a/tests/topography/metrics/test_metrics.c b/tests/topography/metrics/test_metrics.c index defd10a..cd533a7 100644 --- a/tests/topography/metrics/test_metrics.c +++ b/tests/topography/metrics/test_metrics.c @@ -77,7 +77,7 @@ f_grid_t test_f_init(test_t *test) { int size[3] = {32, 16, 1}; _prec gridspacing = 1.0; - f_grid_t out = metrics_init_f(size, gridspacing); + f_grid_t out = metrics_init_f(size, gridspacing, 8); assert(out.size[0] == size[0]); assert(out.size[1] == size[1]); assert(out.size[2] == size[2]); diff --git a/tests/topography/readers/test_serial_reader.c b/tests/topography/readers/test_serial_reader.c index b71857a..f9962d3 100644 --- a/tests/topography/readers/test_serial_reader.c +++ b/tests/topography/readers/test_serial_reader.c @@ -68,7 +68,7 @@ void init_geometry(prec **f, const int *gsize, const int3_t coord, const int rank, int px, int py) { _prec gridspacing = 0.1; - f_grid_t metrics_f = metrics_init_f(gsize, gridspacing); + f_grid_t metrics_f = metrics_init_f(gsize, gridspacing, 8); g_grid_t metrics_g = metrics_init_g(gsize, gridspacing); int3_t shift = grid_u3(); @@ -137,17 +137,16 @@ void init_geometry(prec **f, const int *gsize, const int3_t coord, void write_geometry(const prec *f, const int *gsize, int rank) { if (rank != 0) return; - int padding = ngsl; int nx = gsize[0]; int ny = gsize[1]; - int mx = nx + 2 * ngsl; - int my = ny + 2 * ngsl; + int mx = nx + 2 * metrics_padding; + int my = ny + 2 * metrics_padding; FILE *fh = fopen(geometry_file, "wb"); float *data; data = malloc(sizeof data * mx * my); fwrite(&nx, sizeof nx, 1, fh); fwrite(&ny, sizeof ny, 1, fh); - fwrite(&padding, sizeof padding, 1, fh); + fwrite(&metrics_padding, sizeof metrics_padding, 1, fh); int slice = 4 + my + 2 * align; for (int i = 0; i < mx; ++i) { @@ -172,24 +171,31 @@ int test_read_grid(int rank, const _prec *local_f, const int *local_size, const int lnx, lny; lnx = local_size[0]; lny = local_size[1]; - int lmy = 4 + lny + 2 * ngsl + 2 * align; + int lmx = 4 + lnx + 2 * metrics_padding; + int lmy = 4 + lny + 2 * metrics_padding + 2 * align; prec *read_f; int icoord[2] = {coord.x, coord.y}; int alloc = 1; + read_f = malloc(sizeof read_f * lmx * lmy); + + for (int i = 0; i < lmx * lmy; ++i) + read_f[i] = 0.0; + err |= topo_read_serial(geometry_file, rank, px, py, icoord, lnx, lny, alloc, &read_f); + MPI_Barrier(MPI_COMM_WORLD); + // Compare data read from file with locally computed data float sum = 0; - for (int i = 0; i < (lnx + 2 * ngsl); ++i) { - for (int j = 0; j < (lny + 2 * ngsl); ++j) { + for (int i = 0; i < (lnx + 2 * metrics_padding); ++i) { + for (int j = 0; j < (lny + 2 * metrics_padding); ++j) { size_t local_pos = 2 + align + j + (i + 2) * lmy; sum += fabs(read_f[local_pos] - local_f[local_pos]); } } - free(read_f); remove(geometry_file); From 1a5eadbfbd0f3582ddca7f2a64eed5170766765c Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 14 Jul 2020 14:03:16 -0700 Subject: [PATCH 06/56] Fix repeating source. --- include/topography/sources/source.h | 1 + src/topography/sources/source.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index 810d164..8952c79 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -52,6 +52,7 @@ typedef struct { int use; char filename[STR_LEN*2]; int ngrids; + size_t steps; } source_t; diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index f431f8a..f52237b 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -213,6 +213,8 @@ void source_init_common(source_t *src, const char *filename, src->ngrids = ngrids; src->use = src->length > 0 ? 1 : 0; + src->steps = input->steps; + MPI_Comm_split(comm, src->use, rank, &src->comm); @@ -497,6 +499,10 @@ void source_read(source_t *src, size_t step) { if (!src->use) return; + if (step > src->steps) { + src->use = 0; + return; + } if (buffer_is_host_empty(&src->buffer, step)) { prec *host_ptr = buffer_get_host_ptr(&src->buffer, step); mpi_io_idx_read(&src->io, host_ptr, src->filename); From 67a9df56e37eeb25f9a2089ff3d0a6e33e5a1d96 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 14 Jul 2020 14:11:07 -0700 Subject: [PATCH 07/56] Add old CUDA print functions. --- src/awp/cuPrintf.cu | 879 +++++++++++++++++++++++++++++++++++++++++++ src/awp/cuPrintf.cuh | 162 ++++++++ 2 files changed, 1041 insertions(+) create mode 100644 src/awp/cuPrintf.cu create mode 100644 src/awp/cuPrintf.cuh diff --git a/src/awp/cuPrintf.cu b/src/awp/cuPrintf.cu new file mode 100644 index 0000000..7742f9c --- /dev/null +++ b/src/awp/cuPrintf.cu @@ -0,0 +1,879 @@ +/* + Copyright 2009 NVIDIA Corporation. All rights reserved. + + NOTICE TO LICENSEE: + + This source code and/or documentation ("Licensed Deliverables") are subject + to NVIDIA intellectual property rights under U.S. and international Copyright + laws. + + These Licensed Deliverables contained herein is PROPRIETARY and CONFIDENTIAL + to NVIDIA and is being provided under the terms and conditions of a form of + NVIDIA software license agreement by and between NVIDIA and Licensee ("License + Agreement") or electronically accepted by Licensee. Notwithstanding any terms + or conditions to the contrary in the License Agreement, reproduction or + disclosure of the Licensed Deliverables to any third party without the express + written consent of NVIDIA is prohibited. + + NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE LICENSE AGREEMENT, + NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THESE LICENSED + DELIVERABLES FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED + WARRANTY OF ANY KIND. NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE + LICENSED DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, + NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. NOTWITHSTANDING ANY + TERMS OR CONDITIONS TO THE CONTRARY IN THE LICENSE AGREEMENT, IN NO EVENT SHALL + NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, + OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THESE LICENSED DELIVERABLES. + + U.S. Government End Users. These Licensed Deliverables are a "commercial item" + as that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting of + "commercial computer software" and "commercial computer software documentation" + as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) and is provided to the + U.S. Government only as a commercial end item. Consistent with 48 C.F.R.12.212 + and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all U.S. Government + End Users acquire the Licensed Deliverables with only those rights set forth + herein. + + Any use of the Licensed Deliverables in individual and commercial software must + include, in the user documentation and internal comments to the code, the above + Disclaimer and U.S. Government End Users Notice. + */ + +/* + * cuPrintf.cu + * + * This is a printf command callable from within a kernel. It is set + * up so that output is sent to a memory buffer, which is emptied from + * the host side - but only after a cudaThreadSynchronize() on the host. + * + * Currently, there is a limitation of around 200 characters of output + * and no more than 10 arguments to a single cuPrintf() call. Issue + * multiple calls if longer format strings are required. + * + * It requires minimal setup, and is *NOT* optimised for performance. + * For example, writes are not coalesced - this is because there is an + * assumption that people will not want to printf from every single one + * of thousands of threads, but only from individual threads at a time. + * + * Using this is simple - it requires one host-side call to initialise + * everything, and then kernels can call cuPrintf at will. Sample code + * is the easiest way to demonstrate: + * + #include "cuPrintf.cu" + + __global__ void testKernel(int val) + { + cuPrintf("Value is: %d\n", val); + } + + int main() + { + cudaPrintfInit(); + testKernel<<< 2, 3 >>>(10); + cudaPrintfDisplay(stdout, true); + cudaPrintfEnd(); + return 0; + } + * + * See the header file, "cuPrintf.cuh" for more info, especially + * arguments to cudaPrintfInit() and cudaPrintfDisplay(); + */ + +#ifndef CUPRINTF_CU +#define CUPRINTF_CU + +#include "cuPrintf.cuh" +#if __CUDA_ARCH__ > 100 // Atomics only used with > sm_10 architecture +//#include +#endif + +// This is the smallest amount of memory, per-thread, which is allowed. +// It is also the largest amount of space a single printf() can take up +const static int CUPRINTF_MAX_LEN = 256; + +// This structure is used internally to track block/thread output restrictions. +typedef struct __align__(8) { + int threadid; // CUPRINTF_UNRESTRICTED for unrestricted + int blockid; // CUPRINTF_UNRESTRICTED for unrestricted +} cuPrintfRestriction; + +// The main storage is in a global print buffer, which has a known +// start/end/length. These are atomically updated so it works as a +// circular buffer. +// Since the only control primitive that can be used is atomicAdd(), +// we cannot wrap the pointer as such. The actual address must be +// calculated from printfBufferPtr by mod-ing with printfBufferLength. +// For sm_10 architecture, we must subdivide the buffer per-thread +// since we do not even have an atomic primitive. +__constant__ static char *globalPrintfBuffer = NULL; // Start of circular buffer (set up by host) +__constant__ static int printfBufferLength = 0; // Size of circular buffer (set up by host) +__device__ static cuPrintfRestriction restrictRules; // Output restrictions +__device__ volatile static char *printfBufferPtr = NULL; // Current atomically-incremented non-wrapped offset + +// This is the header preceeding all printf entries. +// NOTE: It *must* be size-aligned to the maximum entity size (size_t) +typedef struct __align__(8) { + unsigned short magic; // Magic number says we're valid + unsigned short fmtoffset; // Offset of fmt string into buffer + unsigned short blockid; // Block ID of author + unsigned short threadid; // Thread ID of author +} cuPrintfHeader; + +// Special header for sm_10 architecture +#define CUPRINTF_SM10_MAGIC 0xC810 // Not a valid ascii character +typedef struct __align__(16) { + unsigned short magic; // sm_10 specific magic number + unsigned short unused; + unsigned int thread_index; // thread ID for this buffer + unsigned int thread_buf_len; // per-thread buffer length + unsigned int offset; // most recent printf's offset +} cuPrintfHeaderSM10; + + +// Because we can't write an element which is not aligned to its bit-size, +// we have to align all sizes and variables on maximum-size boundaries. +// That means sizeof(double) in this case, but we'll use (long long) for +// better arch<1.3 support +#define CUPRINTF_ALIGN_SIZE sizeof(long long) + +// All our headers are prefixed with a magic number so we know they're ready +#define CUPRINTF_SM11_MAGIC (unsigned short)0xC811 // Not a valid ascii character + + +// +// getNextPrintfBufPtr +// +// Grabs a block of space in the general circular buffer, using an +// atomic function to ensure that it's ours. We handle wrapping +// around the circular buffer and return a pointer to a place which +// can be written to. +// +// Important notes: +// 1. We always grab CUPRINTF_MAX_LEN bytes +// 2. Because of 1, we never worry about wrapping around the end +// 3. Because of 1, printfBufferLength *must* be a factor of CUPRINTF_MAX_LEN +// +// This returns a pointer to the place where we own. +// +__device__ static char *getNextPrintfBufPtr() +{ + // Initialisation check + if(!printfBufferPtr) + return NULL; + + // Thread/block restriction check + if((restrictRules.blockid != CUPRINTF_UNRESTRICTED) && (restrictRules.blockid != (blockIdx.x + gridDim.x*blockIdx.y))) + return NULL; + if((restrictRules.threadid != CUPRINTF_UNRESTRICTED) && (restrictRules.threadid != (threadIdx.x + blockDim.x*threadIdx.y + blockDim.x*blockDim.y*threadIdx.z))) + return NULL; + + // Conditional section, dependent on architecture +#if __CUDA_ARCH__ == 100 + // For sm_10 architectures, we have no atomic add - this means we must split the + // entire available buffer into per-thread blocks. Inefficient, but what can you do. + int thread_count = (gridDim.x * gridDim.y) * (blockDim.x * blockDim.y * blockDim.z); + int thread_index = threadIdx.x + blockDim.x*threadIdx.y + blockDim.x*blockDim.y*threadIdx.z + + (blockIdx.x + gridDim.x*blockIdx.y) * (blockDim.x * blockDim.y * blockDim.z); + + // Find our own block of data and go to it. Make sure the per-thread length + // is a precise multiple of CUPRINTF_MAX_LEN, otherwise we risk size and + // alignment issues! We must round down, of course. + unsigned int thread_buf_len = printfBufferLength / thread_count; + thread_buf_len &= ~(CUPRINTF_MAX_LEN-1); + + // We *must* have a thread buffer length able to fit at least two printfs (one header, one real) + if(thread_buf_len < (CUPRINTF_MAX_LEN * 2)) + return NULL; + + // Now address our section of the buffer. The first item is a header. + char *myPrintfBuffer = globalPrintfBuffer + (thread_buf_len * thread_index); + cuPrintfHeaderSM10 hdr = *(cuPrintfHeaderSM10 *)(void *)myPrintfBuffer; + if(hdr.magic != CUPRINTF_SM10_MAGIC) + { + // If our header is not set up, initialise it + hdr.magic = CUPRINTF_SM10_MAGIC; + hdr.thread_index = thread_index; + hdr.thread_buf_len = thread_buf_len; + hdr.offset = 0; // Note we start at 0! We pre-increment below. + *(cuPrintfHeaderSM10 *)(void *)myPrintfBuffer = hdr; // Write back the header + + // For initial setup purposes, we might need to init thread0's header too + // (so that cudaPrintfDisplay() below will work). This is only run once. + cuPrintfHeaderSM10 *tophdr = (cuPrintfHeaderSM10 *)(void *)globalPrintfBuffer; + tophdr->thread_buf_len = thread_buf_len; + } + + // Adjust the offset by the right amount, and wrap it if need be + unsigned int offset = hdr.offset + CUPRINTF_MAX_LEN; + if(offset >= hdr.thread_buf_len) + offset = CUPRINTF_MAX_LEN; + + // Write back the new offset for next time and return a pointer to it + ((cuPrintfHeaderSM10 *)(void *)myPrintfBuffer)->offset = offset; + return myPrintfBuffer + offset; +#else + // Much easier with an atomic operation! + size_t offset = atomicAdd((unsigned int *)&printfBufferPtr, CUPRINTF_MAX_LEN) - (size_t)globalPrintfBuffer; + offset %= printfBufferLength; + return globalPrintfBuffer + offset; +#endif +} + + +// +// writePrintfHeader +// +// Inserts the header for containing our UID, fmt position and +// block/thread number. We generate it dynamically to avoid +// issues arising from requiring pre-initialisation. +// +__device__ static void writePrintfHeader(char *ptr, char *fmtptr) +{ + if(ptr) + { + cuPrintfHeader header; + header.magic = CUPRINTF_SM11_MAGIC; + header.fmtoffset = (unsigned short)(fmtptr - ptr); + header.blockid = blockIdx.x + gridDim.x*blockIdx.y; + header.threadid = threadIdx.x + blockDim.x*threadIdx.y + blockDim.x*blockDim.y*threadIdx.z; + *(cuPrintfHeader *)(void *)ptr = header; + } +} + + +// +// cuPrintfStrncpy +// +// This special strncpy outputs an aligned length value, followed by the +// string. It then zero-pads the rest of the string until a 64-aligned +// boundary. The length *includes* the padding. A pointer to the byte +// just after the \0 is returned. +// +// This function could overflow CUPRINTF_MAX_LEN characters in our buffer. +// To avoid it, we must count as we output and truncate where necessary. +// +__device__ static char *cuPrintfStrncpy(char *dest, const char *src, int n, char *end) +{ + // Initialisation and overflow check + if(!dest || !src || (dest >= end)) + return NULL; + + // Prepare to write the length specifier. We're guaranteed to have + // at least "CUPRINTF_ALIGN_SIZE" bytes left because we only write out in + // chunks that size, and CUPRINTF_MAX_LEN is aligned with CUPRINTF_ALIGN_SIZE. + int *lenptr = (int *)(void *)dest; + int len = 0; + dest += CUPRINTF_ALIGN_SIZE; + + // Now copy the string + while(n--) + { + if(dest >= end) // Overflow check + break; + + len++; + *dest++ = *src; + if(*src++ == '\0') + break; + } + + // Now write out the padding bytes, and we have our length. + while((dest < end) && (((long)dest & (CUPRINTF_ALIGN_SIZE-1)) != 0)) + { + len++; + *dest++ = 0; + } + *lenptr = len; + return (dest < end) ? dest : NULL; // Overflow means return NULL +} + + +// +// copyArg +// +// This copies a length specifier and then the argument out to the +// data buffer. Templates let the compiler figure all this out at +// compile-time, making life much simpler from the programming +// point of view. I'm assuimg all (const char *) is a string, and +// everything else is the variable it points at. I'd love to see +// a better way of doing it, but aside from parsing the format +// string I can't think of one. +// +// The length of the data type is inserted at the beginning (so that +// the display can distinguish between float and double), and the +// pointer to the end of the entry is returned. +// +__device__ static char *copyArg(char *ptr, const char *arg, char *end) +{ + // Initialisation check + if(!ptr || !arg) + return NULL; + + // strncpy does all our work. We just terminate. + if((ptr = cuPrintfStrncpy(ptr, arg, CUPRINTF_MAX_LEN, end)) != NULL) + *ptr = 0; + + return ptr; +} + +template +__device__ static char *copyArg(char *ptr, T &arg, char *end) +{ + // Initisalisation and overflow check. Alignment rules mean that + // we're at least CUPRINTF_ALIGN_SIZE away from "end", so we only need + // to check that one offset. + if(!ptr || ((ptr+CUPRINTF_ALIGN_SIZE) >= end)) + return NULL; + + // Write the length and argument + *(int *)(void *)ptr = sizeof(arg); + ptr += CUPRINTF_ALIGN_SIZE; + *(T *)(void *)ptr = arg; + ptr += CUPRINTF_ALIGN_SIZE; + *ptr = 0; + + return ptr; +} + + +// +// cuPrintf +// +// Templated printf functions to handle multiple arguments. +// Note we return the total amount of data copied, not the number +// of characters output. But then again, who ever looks at the +// return from printf() anyway? +// +// The format is to grab a block of circular buffer space, the +// start of which will hold a header and a pointer to the format +// string. We then write in all the arguments, and finally the +// format string itself. This is to make it easy to prevent +// overflow of our buffer (we support up to 10 arguments, each of +// which can be 12 bytes in length - that means that only the +// format string (or a %s) can actually overflow; so the overflow +// check need only be in the strcpy function. +// +// The header is written at the very last because that's what +// makes it look like we're done. +// +// Errors, which are basically lack-of-initialisation, are ignored +// in the called functions because NULL pointers are passed around +// + +// All printf variants basically do the same thing, setting up the +// buffer, writing all arguments, then finalising the header. For +// clarity, we'll pack the code into some big macros. +#define CUPRINTF_PREAMBLE \ + char *start, *end, *bufptr, *fmtstart; \ + if((start = getNextPrintfBufPtr()) == NULL) return 0; \ + end = start + CUPRINTF_MAX_LEN; \ + bufptr = start + sizeof(cuPrintfHeader); + +// Posting an argument is easy +#define CUPRINTF_ARG(argname) \ + bufptr = copyArg(bufptr, argname, end); + +// After args are done, record start-of-fmt and write the fmt and header +#define CUPRINTF_POSTAMBLE \ + fmtstart = bufptr; \ + end = cuPrintfStrncpy(bufptr, fmt, CUPRINTF_MAX_LEN, end); \ + writePrintfHeader(start, end ? fmtstart : NULL); \ + return end ? (int)(end - start) : 0; + +__device__ int cuPrintf(const char *fmt) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + CUPRINTF_ARG(arg4); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + CUPRINTF_ARG(arg4); + CUPRINTF_ARG(arg5); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + CUPRINTF_ARG(arg4); + CUPRINTF_ARG(arg5); + CUPRINTF_ARG(arg6); + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + CUPRINTF_ARG(arg4); + CUPRINTF_ARG(arg5); + CUPRINTF_ARG(arg6); + CUPRINTF_ARG(arg7); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + CUPRINTF_ARG(arg4); + CUPRINTF_ARG(arg5); + CUPRINTF_ARG(arg6); + CUPRINTF_ARG(arg7); + CUPRINTF_ARG(arg8); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + CUPRINTF_ARG(arg4); + CUPRINTF_ARG(arg5); + CUPRINTF_ARG(arg6); + CUPRINTF_ARG(arg7); + CUPRINTF_ARG(arg8); + CUPRINTF_ARG(arg9); + + CUPRINTF_POSTAMBLE; +} +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) +{ + CUPRINTF_PREAMBLE; + + CUPRINTF_ARG(arg1); + CUPRINTF_ARG(arg2); + CUPRINTF_ARG(arg3); + CUPRINTF_ARG(arg4); + CUPRINTF_ARG(arg5); + CUPRINTF_ARG(arg6); + CUPRINTF_ARG(arg7); + CUPRINTF_ARG(arg8); + CUPRINTF_ARG(arg9); + CUPRINTF_ARG(arg10); + + CUPRINTF_POSTAMBLE; +} +#undef CUPRINTF_PREAMBLE +#undef CUPRINTF_ARG +#undef CUPRINTF_POSTAMBLE + + +// +// cuPrintfRestrict +// +// Called to restrict output to a given thread/block. +// We store the info in "restrictRules", which is set up at +// init time by the host. It's not the cleanest way to do this +// because it means restrictions will last between +// invocations, but given the output-pointer continuity, +// I feel this is reasonable. +// +__device__ void cuPrintfRestrict(int threadid, int blockid) +{ + int thread_count = blockDim.x * blockDim.y * blockDim.z; + if(((threadid < thread_count) && (threadid >= 0)) || (threadid == CUPRINTF_UNRESTRICTED)) + restrictRules.threadid = threadid; + + int block_count = gridDim.x * gridDim.y; + if(((blockid < block_count) && (blockid >= 0)) || (blockid == CUPRINTF_UNRESTRICTED)) + restrictRules.blockid = blockid; +} + + +/////////////////////////////////////////////////////////////////////////////// +// HOST SIDE + +#include +static FILE *printf_fp; + +static char *printfbuf_start=NULL; +static char *printfbuf_device=NULL; +static int printfbuf_len=0; + + +// +// outputPrintfData +// +// Our own internal function, which takes a pointer to a data buffer +// and passes it through libc's printf for output. +// +// We receive the formate string and a pointer to where the data is +// held. We then run through and print it out. +// +// Returns 0 on failure, 1 on success +// +static int outputPrintfData(char *fmt, char *data) +{ + // Format string is prefixed by a length that we don't need + fmt += CUPRINTF_ALIGN_SIZE; + + // Now run through it, printing everything we can. We must + // run to every % character, extract only that, and use printf + // to format it. + char *p = strchr(fmt, '%'); + while(p != NULL) + { + // Print up to the % character + *p = '\0'; + fputs(fmt, printf_fp); + *p = '%'; // Put back the % + + // Now handle the format specifier + char *format = p++; // Points to the '%' + p += strcspn(p, "%cdiouxXeEfgGaAnps"); + if(*p == '\0') // If no format specifier, print the whole thing + { + fmt = format; + break; + } + + // Cut out the format bit and use printf to print it. It's prefixed + // by its length. + int arglen = *(int *)data; + if(arglen > CUPRINTF_MAX_LEN) + { + fputs("Corrupt printf buffer data - aborting\n", printf_fp); + return 0; + } + + data += CUPRINTF_ALIGN_SIZE; + + char specifier = *p++; + char c = *p; // Store for later + *p = '\0'; + switch(specifier) + { + // These all take integer arguments + case 'c': + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + case 'p': + fprintf(printf_fp, format, *((int *)data)); + break; + + // These all take double arguments + case 'e': + case 'E': + case 'f': + case 'g': + case 'G': + case 'a': + case 'A': + if(arglen == 4) // Float vs. Double thing + fprintf(printf_fp, format, *((float *)data)); + else + fprintf(printf_fp, format, *((double *)data)); + break; + + // Strings are handled in a special way + case 's': + fprintf(printf_fp, format, (char *)data); + break; + + // % is special + case '%': + fprintf(printf_fp, "%%"); + break; + + // Everything else is just printed out as-is + default: + fprintf(printf_fp, format); + break; + } + data += CUPRINTF_ALIGN_SIZE; // Move on to next argument + *p = c; // Restore what we removed + fmt = p; // Adjust fmt string to be past the specifier + p = strchr(fmt, '%'); // and get the next specifier + } + + // Print out the last of the string + fputs(fmt, printf_fp); + return 1; +} + + +// +// doPrintfDisplay +// +// This runs through the blocks of CUPRINTF_MAX_LEN-sized data, calling the +// print function above to display them. We've got this separate from +// cudaPrintfDisplay() below so we can handle the SM_10 architecture +// partitioning. +// +static int doPrintfDisplay(int headings, int clear, char *bufstart, char *bufend, char *bufptr, char *endptr) +{ + // Grab, piece-by-piece, each output element until we catch + // up with the circular buffer end pointer + int printf_count=0; + char printfbuf_local[CUPRINTF_MAX_LEN+1]; + printfbuf_local[CUPRINTF_MAX_LEN] = '\0'; + + while(bufptr != endptr) + { + // Wrap ourselves at the end-of-buffer + if(bufptr == bufend) + bufptr = bufstart; + + // Adjust our start pointer to within the circular buffer and copy a block. + cudaMemcpy(printfbuf_local, bufptr, CUPRINTF_MAX_LEN, cudaMemcpyDeviceToHost); + + // If the magic number isn't valid, then this write hasn't gone through + // yet and we'll wait until it does (or we're past the end for non-async printfs). + cuPrintfHeader *hdr = (cuPrintfHeader *)printfbuf_local; + if((hdr->magic != CUPRINTF_SM11_MAGIC) || (hdr->fmtoffset >= CUPRINTF_MAX_LEN)) + { + //fprintf(printf_fp, "Bad magic number in printf header\n"); + break; + } + + // Extract all the info and get this printf done + if(headings) + fprintf(printf_fp, "[%d, %d]: ", hdr->blockid, hdr->threadid); + if(hdr->fmtoffset == 0) + fprintf(printf_fp, "printf buffer overflow\n"); + else if(!outputPrintfData(printfbuf_local+hdr->fmtoffset, printfbuf_local+sizeof(cuPrintfHeader))) + break; + printf_count++; + + // Clear if asked + if(clear) + cudaMemset(bufptr, 0, CUPRINTF_MAX_LEN); + + // Now advance our start location, because we're done, and keep copying + bufptr += CUPRINTF_MAX_LEN; + } + + return printf_count; +} + + +// +// cudaPrintfInit +// +// Takes a buffer length to allocate, creates the memory on the device and +// returns a pointer to it for when a kernel is called. It's up to the caller +// to free it. +// +extern "C" cudaError_t cudaPrintfInit(size_t bufferLen) +{ + // Fix up bufferlen to be a multiple of CUPRINTF_MAX_LEN + bufferLen = (bufferLen < CUPRINTF_MAX_LEN) ? CUPRINTF_MAX_LEN : bufferLen; + if((bufferLen % CUPRINTF_MAX_LEN) > 0) + bufferLen += (CUPRINTF_MAX_LEN - (bufferLen % CUPRINTF_MAX_LEN)); + printfbuf_len = (int)bufferLen; + + // Allocate a print buffer on the device and zero it + if(cudaMalloc((void **)&printfbuf_device, printfbuf_len) != cudaSuccess) + return cudaErrorInitializationError; + cudaMemset(printfbuf_device, 0, printfbuf_len); + printfbuf_start = printfbuf_device; // Where we start reading from + + // No restrictions to begin with + cuPrintfRestriction restrict; + restrict.threadid = restrict.blockid = CUPRINTF_UNRESTRICTED; + cudaMemcpyToSymbol(restrictRules, &restrict, sizeof(restrict)); + + // Initialise the buffer and the respective lengths/pointers. + cudaMemcpyToSymbol(globalPrintfBuffer, &printfbuf_device, sizeof(char *)); + cudaMemcpyToSymbol(printfBufferPtr, &printfbuf_device, sizeof(char *)); + cudaMemcpyToSymbol(printfBufferLength, &printfbuf_len, sizeof(printfbuf_len)); + + return cudaSuccess; +} + + +// +// cudaPrintfEnd +// +// Frees up the memory which we allocated +// +extern "C" void cudaPrintfEnd() +{ + if(!printfbuf_start || !printfbuf_device) + return; + + cudaFree(printfbuf_device); + printfbuf_start = printfbuf_device = NULL; +} + + +// +// cudaPrintfDisplay +// +// Each call to this function dumps the entire current contents +// of the printf buffer to the pre-specified FILE pointer. The +// circular "start" pointer is advanced so that subsequent calls +// dumps only new stuff. +// +// In the case of async memory access (via streams), call this +// repeatedly to keep trying to empty the buffer. If it's a sync +// access, then the whole buffer should empty in one go. +// +// Arguments: +// outputFP - File descriptor to output to (NULL => stdout) +// showThreadID - If true, prints [block,thread] before each line +// +extern "C" cudaError_t cudaPrintfDisplay(void *outputFP, bool showThreadID) +{ + printf_fp = (FILE *)((outputFP == NULL) ? stdout : outputFP); + + // For now, we force "synchronous" mode which means we're not concurrent + // with kernel execution. This also means we don't need clearOnPrint. + // If you're patching it for async operation, here's where you want it. + bool sync_printfs = true; + bool clearOnPrint = false; + + // Initialisation check + if(!printfbuf_start || !printfbuf_device || !printf_fp) + return cudaErrorMissingConfiguration; + + // To determine which architecture we're using, we read the + // first short from the buffer - it'll be the magic number + // relating to the version. + unsigned short magic; + cudaMemcpy(&magic, printfbuf_device, sizeof(unsigned short), cudaMemcpyDeviceToHost); + + // For SM_10 architecture, we've split our buffer into one-per-thread. + // That means we must do each thread block separately. It'll require + // extra reading. We also, for now, don't support async printfs because + // that requires tracking one start pointer per thread. + if(magic == CUPRINTF_SM10_MAGIC) + { + sync_printfs = true; + clearOnPrint = false; + int blocklen = 0; + char *blockptr = printfbuf_device; + while(blockptr < (printfbuf_device + printfbuf_len)) + { + cuPrintfHeaderSM10 hdr; + cudaMemcpy(&hdr, blockptr, sizeof(hdr), cudaMemcpyDeviceToHost); + + // We get our block-size-step from the very first header + if(hdr.thread_buf_len != 0) + blocklen = hdr.thread_buf_len; + + // No magic number means no printfs from this thread + if(hdr.magic != CUPRINTF_SM10_MAGIC) + { + if(blocklen == 0) + { + fprintf(printf_fp, "No printf headers found at all!\n"); + break; // No valid headers! + } + blockptr += blocklen; + continue; + } + + // "offset" is non-zero then we can print the block contents + if(hdr.offset > 0) + { + // For synchronous printfs, we must print from endptr->bufend, then from start->end + if(sync_printfs) + doPrintfDisplay(showThreadID, clearOnPrint, blockptr+CUPRINTF_MAX_LEN, blockptr+hdr.thread_buf_len, blockptr+hdr.offset+CUPRINTF_MAX_LEN, blockptr+hdr.thread_buf_len); + doPrintfDisplay(showThreadID, clearOnPrint, blockptr+CUPRINTF_MAX_LEN, blockptr+hdr.thread_buf_len, blockptr+CUPRINTF_MAX_LEN, blockptr+hdr.offset+CUPRINTF_MAX_LEN); + } + + // Move on to the next block and loop again + blockptr += hdr.thread_buf_len; + } + } + // For SM_11 and up, everything is a single buffer and it's simple + else if(magic == CUPRINTF_SM11_MAGIC) + { + // Grab the current "end of circular buffer" pointer. + char *printfbuf_end = NULL; + cudaMemcpyFromSymbol(&printfbuf_end, printfBufferPtr, sizeof(char *)); + + // Adjust our starting and ending pointers to within the block + char *bufptr = ((printfbuf_start - printfbuf_device) % printfbuf_len) + printfbuf_device; + char *endptr = ((printfbuf_end - printfbuf_device) % printfbuf_len) + printfbuf_device; + + // For synchronous (i.e. after-kernel-exit) printf display, we have to handle circular + // buffer wrap carefully because we could miss those past "end". + if(sync_printfs) + doPrintfDisplay(showThreadID, clearOnPrint, printfbuf_device, printfbuf_device+printfbuf_len, endptr, printfbuf_device+printfbuf_len); + doPrintfDisplay(showThreadID, clearOnPrint, printfbuf_device, printfbuf_device+printfbuf_len, bufptr, endptr); + + printfbuf_start = printfbuf_end; + } + else + ;//printf("Bad magic number in cuPrintf buffer header\n"); + + // If we were synchronous, then we must ensure that the memory is cleared on exit + // otherwise another kernel launch with a different grid size could conflict. + if(sync_printfs) + cudaMemset(printfbuf_device, 0, printfbuf_len); + + return cudaSuccess; +} + +// Cleanup +#undef CUPRINTF_MAX_LEN +#undef CUPRINTF_ALIGN_SIZE +#undef CUPRINTF_SM10_MAGIC +#undef CUPRINTF_SM11_MAGIC + +#endif diff --git a/src/awp/cuPrintf.cuh b/src/awp/cuPrintf.cuh new file mode 100644 index 0000000..cdf8613 --- /dev/null +++ b/src/awp/cuPrintf.cuh @@ -0,0 +1,162 @@ +/* + Copyright 2009 NVIDIA Corporation. All rights reserved. + + NOTICE TO LICENSEE: + + This source code and/or documentation ("Licensed Deliverables") are subject + to NVIDIA intellectual property rights under U.S. and international Copyright + laws. + + These Licensed Deliverables contained herein is PROPRIETARY and CONFIDENTIAL + to NVIDIA and is being provided under the terms and conditions of a form of + NVIDIA software license agreement by and between NVIDIA and Licensee ("License + Agreement") or electronically accepted by Licensee. Notwithstanding any terms + or conditions to the contrary in the License Agreement, reproduction or + disclosure of the Licensed Deliverables to any third party without the express + written consent of NVIDIA is prohibited. + + NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE LICENSE AGREEMENT, + NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THESE LICENSED + DELIVERABLES FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED + WARRANTY OF ANY KIND. NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE + LICENSED DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, + NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. NOTWITHSTANDING ANY + TERMS OR CONDITIONS TO THE CONTRARY IN THE LICENSE AGREEMENT, IN NO EVENT SHALL + NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, + OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THESE LICENSED DELIVERABLES. + + U.S. Government End Users. These Licensed Deliverables are a "commercial item" + as that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting of + "commercial computer software" and "commercial computer software documentation" + as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) and is provided to the + U.S. Government only as a commercial end item. Consistent with 48 C.F.R.12.212 + and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all U.S. Government + End Users acquire the Licensed Deliverables with only those rights set forth + herein. + + Any use of the Licensed Deliverables in individual and commercial software must + include, in the user documentation and internal comments to the code, the above + Disclaimer and U.S. Government End Users Notice. + */ + +#ifndef CUPRINTF_H +#define CUPRINTF_H + +/* + * This is the header file supporting cuPrintf.cu and defining both + * the host and device-side interfaces. See that file for some more + * explanation and sample use code. See also below for details of the + * host-side interfaces. + * + * Quick sample code: + * + #include "cuPrintf.cu" + + __global__ void testKernel(int val) + { + cuPrintf("Value is: %d\n", val); + } + + int main() + { + cudaPrintfInit(); + testKernel<<< 2, 3 >>>(10); + cudaPrintfDisplay(stdout, true); + cudaPrintfEnd(); + return 0; + } + */ + +/////////////////////////////////////////////////////////////////////////////// +// DEVICE SIDE +// External function definitions for device-side code + +// Abuse of templates to simulate varargs +__device__ int cuPrintf(const char *fmt); +template __device__ int cuPrintf(const char *fmt, T1 arg1); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9); +template __device__ int cuPrintf(const char *fmt, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10); + + +// +// cuPrintfRestrict +// +// Called to restrict output to a given thread/block. Pass +// the constant CUPRINTF_UNRESTRICTED to unrestrict output +// for thread/block IDs. Note you can therefore allow +// "all printfs from block 3" or "printfs from thread 2 +// on all blocks", or "printfs only from block 1, thread 5". +// +// Arguments: +// threadid - Thread ID to allow printfs from +// blockid - Block ID to allow printfs from +// +// NOTE: Restrictions last between invocations of +// kernels unless cudaPrintfInit() is called again. +// +#define CUPRINTF_UNRESTRICTED -1 +__device__ void cuPrintfRestrict(int threadid, int blockid); + + + +/////////////////////////////////////////////////////////////////////////////// +// HOST SIDE +// External function definitions for host-side code + +// +// cudaPrintfInit +// +// Call this once to initialise the printf system. If the output +// file or buffer size needs to be changed, call cudaPrintfEnd() +// before re-calling cudaPrintfInit(). +// +// The default size for the buffer is 1 megabyte. For CUDA +// architecture 1.1 and above, the buffer is filled linearly and +// is completely used; however for architecture 1.0, the buffer +// is divided into as many segments are there are threads, even +// if some threads do not call cuPrintf(). +// +// Arguments: +// bufferLen - Length, in bytes, of total space to reserve +// (in device global memory) for output. +// +// Returns: +// cudaSuccess if all is well. +// +extern "C" cudaError_t cudaPrintfInit(size_t bufferLen=1048576); // 1-meg - that's enough for 4096 printfs by all threads put together + +// +// cudaPrintfEnd +// +// Cleans up all memories allocated by cudaPrintfInit(). +// Call this at exit, or before calling cudaPrintfInit() again. +// +extern "C" void cudaPrintfEnd(); + +// +// cudaPrintfDisplay +// +// Dumps the contents of the output buffer to the specified +// file pointer. If the output pointer is not specified, +// the default "stdout" is used. +// +// Arguments: +// outputFP - A file pointer to an output stream. +// showThreadID - If "true", output strings are prefixed +// by "[blockid, threadid] " at output. +// +// Returns: +// cudaSuccess if all is well. +// +extern "C" cudaError_t cudaPrintfDisplay(void *outputFP=NULL, bool showThreadID=false); + +#endif // CUPRINTF_H From bfc52a68a3e03d00083382ee19c4f5343674a689 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Fri, 17 Jul 2020 08:53:57 -0700 Subject: [PATCH 08/56] Update kernel.cu to fix DM sync issues. --- src/awp/kernel.cu | 1696 +++++++++++++++++++++++---------------------- 1 file changed, 877 insertions(+), 819 deletions(-) diff --git a/src/awp/kernel.cu b/src/awp/kernel.cu index 7f94abf..18d173a 100644 --- a/src/awp/kernel.cu +++ b/src/awp/kernel.cu @@ -2,6 +2,7 @@ #include #include "awp/kernel.h" #include "awp/pmcl3d_cons.h" +#include "cuPrintf.cu" #include __constant__ _prec d_c1; @@ -19,6 +20,11 @@ __constant__ int d_slice_2[MAXGRIDS]; __constant__ int d_yline_1[MAXGRIDS]; __constant__ int d_yline_2[MAXGRIDS]; +texture p_vx1; +texture p_vx2; +texture p_ww; +texture p_wwo; + //Parameters used for STF filtering (Daniel) __constant__ int d_filtorder; __constant__ double d_srcfilt_b[MAXFILT], d_srcfilt_a[MAXFILT]; @@ -65,6 +71,7 @@ __device__ void rotate_principal(register _prec sigma2, register _prec pfluid, r //end of routines for on-GPU initial stress computation (Daniel) +extern "C" void SetDeviceConstValue(_prec *DH, _prec DT, int *nxt, int *nyt, int *nzt, int ngrids, _prec fmajor, _prec fminor, _prec *Rz, _prec *RzT) { @@ -77,12 +84,12 @@ void SetDeviceConstValue(_prec *DH, _prec DT, int *nxt, int *nyt, int *nzt, int h_c2 = -1.0/24.0; h_dt1 = 1.0/DT; - h_dth=(_prec* ) calloc(ngrids, sizeof(_prec)); - h_dh1=(_prec* ) calloc(ngrids, sizeof(_prec)); - slice_1=(int*) calloc(ngrids, sizeof(_prec)); - slice_2=(int*) calloc(ngrids, sizeof(_prec)); - yline_1=(int*) calloc(ngrids, sizeof(_prec)); - yline_2=(int*) calloc(ngrids, sizeof(_prec)); + h_dth=(float*) calloc(ngrids, sizeof(float)); + h_dh1=(float*) calloc(ngrids, sizeof(float)); + slice_1=(int*) calloc(ngrids, sizeof(float)); + slice_2=(int*) calloc(ngrids, sizeof(float)); + yline_1=(int*) calloc(ngrids, sizeof(float)); + yline_2=(int*) calloc(ngrids, sizeof(float)); for (k=0; k 0){ @@ -284,78 +308,102 @@ __global__ void print_const(int ngrids) }*/ } +extern "C" void print_const_H(int ngrids) { dim3 block (1, 1, 1); dim3 grid (1, 1, 1); - //cudaPrintfInit(); - //print_const<<>>(ngrids); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + CUCHK(cudaPrintfInit()); + print_const<<>>(ngrids); + CUCHK(cudaPrintfDisplay(stdout, 1)); + cudaPrintfEnd(); return; } -void dvelcx_H_opt(_prec* u1, _prec* v1, _prec* w1, - _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* xz, _prec* yz, - _prec* dcrjx, _prec* dcrjy, _prec* dcrjz, - _prec* d_1, int nyt, int nzt, +extern "C" +void dvelcx_H_opt(float* u1, float* v1, float* w1, + float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, + float* dcrjx, float* dcrjy, float* dcrjz, + float* d_1, int nyt, int nzt, cudaStream_t St, int s_i, int e_i, int d_i, int ngrids) { dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, 1); dim3 grid ((nzt+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, (nyt+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); CUCHK(cudaFuncSetCacheConfig(dvelcx_opt, cudaFuncCachePreferL1)); CUCHK(cudaGetLastError()); - //cudaPrintfInit(); + /*CUCHK(cudaPrintfInit());*/ //fprintf(stdout, "launching dvelcx_opt\n"); dvelcx_opt<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, dcrjx, dcrjy, dcrjz, d_1, s_i, e_i, d_i, ngrids); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + /*CUCHK(cudaPrintfDisplay(stdout, 1)); + cudaPrintfEnd();*/ CUCHK(cudaGetLastError()); return; } -void dvelcy_H(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* xz, _prec* yz, - _prec* dcrjx, _prec* dcrjy, _prec* dcrjz, _prec* d_1, int nxt, int nzt, _prec* s_u1, _prec* s_v1, _prec* s_w1, +extern "C" +void dvelcy_H(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, + float* dcrjx, float* dcrjy, float* dcrjz, float* d_1, int nxt, int nzt, float* s_u1, float* s_v1, float* s_w1, cudaStream_t St, int s_j, int e_j, int rank, int d_i) { if(rank==-1) return; dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, 1); dim3 grid ((nzt+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, (nxt+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - CUCHK(cudaFuncSetCacheConfig(dvelcy, cudaFuncCachePreferL1)); + cudaFuncSetCacheConfig(dvelcy, cudaFuncCachePreferL1); CUCHK(cudaGetLastError()); dvelcy<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, dcrjx, dcrjy, dcrjz, d_1, s_u1, s_v1, s_w1, s_j, e_j, d_i); CUCHK(cudaGetLastError()); return; } -void update_bound_y_H(_prec* u1, _prec* v1, _prec* w1, _prec* f_u1, _prec* f_v1, _prec* f_w1, _prec* b_u1, _prec* b_v1, - _prec* b_w1, int nxt, int nzt, cudaStream_t St1, cudaStream_t St2, int rank_f, int rank_b, int d_i) +extern "C" +void update_bound_y_H(float* u1, float* v1, float* w1, float* f_u1, float* f_v1, float* f_w1, float* b_u1, float* b_v1, + float* b_w1, int nxt, int nzt, cudaStream_t St1, cudaStream_t St2, int rank_f, int rank_b, int d_i) { if(rank_f==-1 && rank_b==-1) return; dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, 1); dim3 grid ((nzt+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, (nxt+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - CUCHK(cudaFuncSetCacheConfig(update_boundary_y, cudaFuncCachePreferL1)); + cudaFuncSetCacheConfig(update_boundary_y, cudaFuncCachePreferL1); update_boundary_y<<>>(u1, v1, w1, f_u1, f_v1, f_w1, rank_f, Front, d_i); update_boundary_y<<>>(u1, v1, w1, b_u1, b_v1, b_w1, rank_b, Back, d_i); return; } +extern "C" +void dstrqc_H(float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, + float* r1, float* r2, float* r3, float* r4, float* r5, float* r6, + float* u1, float* v1, float* w1, float* lam, float* mu, float* qp,float* coeff, + float* qs, float* dcrjx, float* dcrjy, float* dcrjz, int nyt, int nzt, + cudaStream_t St, float* lam_mu, + _prec *vx1, _prec *vx2, int *ww, _prec *wwo, + int NX, int NPC, int rankx, int ranky, int s_i, + int e_i, int s_j, int e_j, int d_i) +{ + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, 1); + dim3 grid ((nzt+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, (e_j-s_j+1+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); + cudaFuncSetCacheConfig(dstrqc, cudaFuncCachePreferL1); + dstrqc<<>>(xx, yy, zz, xy, xz, yz, r1, r2, r3, r4, r5, r6, + u1, v1, w1, lam, mu, qp,coeff, qs, dcrjx, dcrjy, dcrjz, lam_mu, + vx1, vx2, ww, wwo, + NX, NPC, rankx, ranky, nzt, s_i, e_i, s_j, e_j, d_i); + return; +} + template __global__ void __launch_bounds__(512,2) -dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict__ zz, - _prec* __restrict__ xy, _prec* __restrict__ xz, _prec* __restrict__ yz, - _prec* __restrict__ r1, _prec* __restrict__ r2, _prec* __restrict__ r3, - _prec* __restrict__ r4, _prec* __restrict__ r5, _prec* __restrict__ r6, - _prec* __restrict__ u1, - _prec* __restrict__ v1, - _prec* __restrict__ w1, - _prec* lam, - _prec* mu, - _prec* qp, - _prec* coeff, - _prec* qs, - _prec* dcrjx, _prec* dcrjy, _prec* dcrjz, _prec* lam_mu, +dstrqc_new(float* __restrict__ xx, float* __restrict__ yy, float* __restrict__ zz, + float* __restrict__ xy, float* __restrict__ xz, float* __restrict__ yz, + float* __restrict__ r1, float* __restrict__ r2, float* __restrict__ r3, + float* __restrict__ r4, float* __restrict__ r5, float* __restrict__ r6, + float* __restrict__ u1, + float* __restrict__ v1, + float* __restrict__ w1, + float* lam, + float* mu, + float* qp, + float* coeff, + float* qs, + float* dcrjx, float* dcrjy, float* dcrjz, float* lam_mu, //_prec *d_vx1, _prec *d_vx2, _prec *d_ww, _prec *d_wwo, //pengs version _prec *d_vx1, _prec *d_vx2, int *d_ww, _prec *d_wwo, int NX, int NPC, int rankx, int ranky, int nzt, int s_i, int e_i, int s_j, int e_j, int d_i) @@ -537,9 +585,7 @@ dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict_ // qpaw=qpaw/2.; } else { - //suggested by Kyle - qpaw = 2.0f*f_wwo*qpa; - // qpaw = f_wwo*qpa; + qpaw = f_wwo*qpa; } // printf("qpaw %f\n",qpaw); // printf("qpaw1 %g\n",qpaw); @@ -560,9 +606,7 @@ dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict_ // hw=hw/2.0f; } else { - //suggested by Kyle - hw = 2.0f*f_wwo*h; - // hw = f_wwo*h; + hw = f_wwo*h; } hw=hw/f_wwo; @@ -575,9 +619,7 @@ dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict_ // h1w=h1w/2.0f; } else { - //suggested by Kyle - h1w = 2.0f*f_wwo*h1; - // h1w = f_wwo*h1; + h1w = f_wwo*h1; } h1w=h1w/f_wwo; @@ -590,9 +632,7 @@ dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict_ // h2w=h2w/2.; } else { - //suggested by Kyle - //h2w = f_wwo*h2; - h2w = 2.0f*f_wwo*h2; + h2w = f_wwo*h2; } h2w=h2w/f_wwo; @@ -604,9 +644,7 @@ dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict_ // h3w=h3w/2.0f; } else { - //suggested by Kyle - h3w = 2.0f*f_wwo*h3; - //h3w = f_wwo*h3; + h3w = f_wwo*h3; } h3w=h3w/f_wwo; @@ -734,12 +772,12 @@ dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict_ tmp = xl*(vs1+vs2+vs3); #ifdef ELA - if (k==41 && i==102 && j==102) printf("before update xx=%.20g\n", xx[pos]); + if (k==41 && i==102 && j==102) cuPrintf("before update xx=%.20g\n", xx[pos]); xx[pos] = (xx[pos] + tmp - xm*(vs2+vs3))*f_dcrj; yy[pos] = (yy[pos] + tmp - xm*(vs1+vs3))*f_dcrj; zz[pos] = (zz[pos] + tmp - xm*(vs1+vs2))*f_dcrj; if (k==41 && i==102 && j==102) - printf("after update xx=%.30g, xm=%.30g, vs1=%.30g, vs2=%.30g, vs3=%.30g, f_drj=%.30g\n", + cuPrintf("after update xx=%.30g, xm=%.30g, vs1=%.30g, vs2=%.30g, vs3=%.30g, f_drj=%.30g\n", xx[pos], xm, vs1, vs2, vs3, f_dcrj); #else a1 = qpa*(vs1+vs2+vs3); @@ -858,464 +896,128 @@ dstrqc_new(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict_ return; } -void dstrqc_H(float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, - float* r1, float* r2, float* r3, float* r4, float* r5, float* r6, - float* u1, float* v1, float* w1, float* lam, float* mu, float* qp,float* coeff, - float* qs, float* dcrjx, float* dcrjy, float* dcrjz, int nyt, int nzt, - cudaStream_t St, float* lam_mu, - float *vx1, float *vx2, int *ww, float *wwo, - int NX, int NPC, int rankx, int ranky, int s_i, - int e_i, int s_j, int e_j, int d_i) -{ - dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, 1); - dim3 grid ((nzt+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, (e_j-s_j+1+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - cudaFuncSetCacheConfig(dstrqc, cudaFuncCachePreferL1); - dstrqc<<>>(xx, yy, zz, xy, xz, yz, r1, r2, r3, r4, r5, r6, - u1, v1, w1, lam, mu, qp,coeff, qs, dcrjx, dcrjy, dcrjz, lam_mu, - vx1, vx2, ww, wwo, - NX, NPC, rankx, ranky, nzt, s_i, e_i, s_j, e_j, d_i); - return; -} -__global__ void dstrqc(float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, - float* r1, float* r2, float* r3, float* r4, float* r5, float* r6, - float* u1, float* v1, float* w1, float* lam, float* mu, float* qp,float* coeff, - float* qs, float* dcrjx, float* dcrjy, float* dcrjz, float* lam_mu, - float *d_vx1, float *d_vx2, int *d_ww, float *d_wwo, - int NX, int NPC, int rankx, int ranky, int nzt, int s_i, int e_i, int s_j, int e_j, int d_i) + +extern "C" +void dstrqc_H_new(float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, + float* r1, float* r2, float* r3, float* r4, float* r5, float* r6, + float* u1, float* v1, float* w1, float* lam, float* mu, float* qp,float* coeff, + float* qs, float* dcrjx, float* dcrjy, float* dcrjz, int nyt, int nzt, + cudaStream_t St, float* lam_mu, + //_prec *vx1, _prec *vx2, _prec *ww, _prec *wwo, //peng's version + _prec *vx1, _prec *vx2, int *ww, _prec *wwo, + int NX, int NPC, int rankx, int ranky, int s_i, + int e_i, int s_j, int e_j, int d_i) { - register int i, j, k, g_i; - register int pos, pos_ip1, pos_im2, pos_im1; - register int pos_km2, pos_km1, pos_kp1, pos_kp2; - register int pos_jm2, pos_jm1, pos_jp1, pos_jp2; - register int pos_ik1, pos_jk1, pos_ijk, pos_ijk1,f_ww; - register float vs1, vs2, vs3, a1, tmp, vx1,f_wwo; - register float xl, xm, xmu1, xmu2, xmu3; - register float qpa, h, h1, h2, h3; - register float qpaw,hw,h1w,h2w,h3w; - register float f_vx1, f_vx2, f_dcrj, f_r, f_dcrjy, f_dcrjz; - register float f_rtmp; - register float f_u1, u1_ip1, u1_ip2, u1_im1; - register float f_v1, v1_im1, v1_ip1, v1_im2; - register float f_w1, w1_im1, w1_im2, w1_ip1; - int maxk, mink = align+3; - - k = blockIdx.x*BLOCK_SIZE_Z+threadIdx.x+align; - j = blockIdx.y*BLOCK_SIZE_Y+threadIdx.y+s_j; + //fprintf(stderr, "nzt=%d, e_j=%d, s_j=%d\n", nzt, e_j, s_j); + /*cudaPrintfInit();*/ + if (0 == (nzt % 64) && 0 == (( e_j-s_j+1) % 8)) { + const int blockx = 64, blocky = 8; + dim3 block(blockx, blocky, 1); + dim3 grid ((nzt+block.x-1)/block.x, (e_j-s_j+1+block.y-1)/block.y,1); + CUCHK( cudaFuncSetCacheConfig(dstrqc_new, cudaFuncCachePreferShared) ); + dstrqc_new<<>>(xx, yy, zz, xy, xz, yz, r1, r2, r3, r4, r5, r6, + u1, v1, w1, lam, mu, qp,coeff, qs, dcrjx, dcrjy, dcrjz, lam_mu, + vx1, vx2, ww, wwo, + NX, NPC, rankx, ranky, nzt, s_i, e_i, s_j, e_j, d_i); + } else { + const int blockx = BLOCK_SIZE_Z, blocky = BLOCK_SIZE_Y; + dim3 block(blockx, blocky, 1); + dim3 grid ((nzt+block.x-1)/block.x, (e_j-s_j+1+block.y-1)/block.y,1); + CUCHK( cudaFuncSetCacheConfig(dstrqc_new, cudaFuncCachePreferShared) ); + dstrqc_new<<>>(xx, yy, zz, xy, xz, yz, r1, r2, r3, r4, r5, r6, + u1, v1, w1, lam, mu, qp,coeff, qs, dcrjx, dcrjy, dcrjz, lam_mu, + vx1, vx2, ww, wwo, + NX, NPC, rankx, ranky, nzt, s_i, e_i, s_j, e_j, d_i); - if (d_i == 0) { - maxk = nzt + align -1; } - else maxk = nzt + align -3; + cudaError_t cerr; + CUCHK(cerr=cudaGetLastError()); + if(cerr!=cudaSuccess) printf("CUDA ERROR: dstrqc_H_new after kernel: %s\n",cudaGetErrorString(cerr)); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ + return; +} - if (k < mink || k > maxk || j > e_j) return; - - i = e_i; - pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; - u1_ip1 = u1[pos+d_slice_2[d_i]]; - f_u1 = u1[pos+d_slice_1[d_i]]; - u1_im1 = u1[pos]; - f_v1 = v1[pos+d_slice_1[d_i]]; - v1_im1 = v1[pos]; - v1_im2 = v1[pos-d_slice_1[d_i]]; - f_w1 = w1[pos+d_slice_1[d_i]]; - w1_im1 = w1[pos]; - w1_im2 = w1[pos-d_slice_1[d_i]]; - f_dcrjz = dcrjz[k]; - f_dcrjy = dcrjy[j]; - for(i=e_i;i>=s_i;i--) - { - /*f_vx1 = tex1Dfetch(p_vx1, pos); - f_vx2 = tex1Dfetch(p_vx2, pos); - f_ww = tex1Dfetch(p_ww, pos); - f_wwo = tex1Dfetch(p_wwo, pos);*/ - f_vx1 = d_vx1[pos]; - f_vx2 = d_vx2[pos]; - f_ww = d_ww[pos]; - f_wwo = d_wwo[pos]; - /* - if(f_wwo!=f_wwo){ - xx[pos] = yy[pos] = zz[pos] = xy[pos] = xz[pos] = yz[pos] = 1.0; - r1[pos] = r2[pos] = r3[pos] = r4[pos] = r5[pos] = r6[pos] = 1.0; - return; - } -*/ - f_dcrj = dcrjx[i]*f_dcrjy*f_dcrjz; +/* kernel function to apply free-surface B.C. to stresses - (Daniel) */ +extern "C" +void fstr_H(float* zz, float* xz, float* yz, cudaStream_t St, int s_i, int e_i, int s_j, int e_j) +{ + dim3 block (2, BLOCK_SIZE_Y, 1); + dim3 grid (1,(e_j-s_j+1+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); + cudaFuncSetCacheConfig(fstr, cudaFuncCachePreferL1); + fstr<<>>(zz, xz, yz, s_i, e_i, s_j); + return; +} - pos_km2 = pos-2; - pos_km1 = pos-1; - pos_kp1 = pos+1; - pos_kp2 = pos+2; - pos_jm2 = pos-d_yline_2[d_i]; - pos_jm1 = pos-d_yline_1[d_i]; - pos_jp1 = pos+d_yline_1[d_i]; - pos_jp2 = pos+d_yline_2[d_i]; - pos_im2 = pos-d_slice_2[d_i]; - pos_im1 = pos-d_slice_1[d_i]; - pos_ip1 = pos+d_slice_1[d_i]; - pos_jk1 = pos-d_yline_1[d_i]-1; - pos_ik1 = pos+d_slice_1[d_i]-1; - pos_ijk = pos+d_slice_1[d_i]-d_yline_1[d_i]; - pos_ijk1 = pos+d_slice_1[d_i]-d_yline_1[d_i]-1; - xl = 8.0/( lam[pos] + lam[pos_ip1] + lam[pos_jm1] + lam[pos_ijk] - + lam[pos_km1] + lam[pos_ik1] + lam[pos_jk1] + lam[pos_ijk1] ); - xm = 16.0/( mu[pos] + mu[pos_ip1] + mu[pos_jm1] + mu[pos_ijk] - + mu[pos_km1] + mu[pos_ik1] + mu[pos_jk1] + mu[pos_ijk1] ); - xmu1 = 2.0/( mu[pos] + mu[pos_km1] ); - xmu2 = 2.0/( mu[pos] + mu[pos_jm1] ); - xmu3 = 2.0/( mu[pos] + mu[pos_ip1] ); - xl = xl + xm; - qpa = 0.0625*( qp[pos] + qp[pos_ip1] + qp[pos_jm1] + qp[pos_ijk] - + qp[pos_km1] + qp[pos_ik1] + qp[pos_jk1] + qp[pos_ijk1] ); +__global__ void +__launch_bounds__(512,2) +drprecpc_calc_opt(_prec *xx, _prec *yy, _prec *zz, + const float* __restrict__ xy, + const float* __restrict__ xz, + const float* __restrict__ yz, + _prec *mu, _prec *d1, + _prec *sigma2, + _prec *yldfac,_prec *cohes, _prec *phi, + _prec *neta, + int nzt, int s_i, int e_i, int s_j, int e_j, int d_i) { + register int i,j,k,pos; + register int pos_im1,pos_ip1,pos_jm1,pos_km1; + register int pos_ip1jm1; + register int pos_ip1km1,pos_jm1km1; + register _prec Sxx, Syy, Szz, Sxy, Sxz, Syz; + register _prec Sxxp, Syyp, Szzp, Sxyp, Sxzp, Syzp; + register _prec depxx, depyy, depzz, depxy, depxz, depyz; + register _prec SDxx, SDyy, SDzz; + register _prec iyldfac, Tv, sigma_m, taulim, taulim2, rphi; + register _prec xm, iixx, iiyy, iizz; + register _prec mu_, secinv, sqrtSecinv; + register int jj,kk; -// www=f_ww; - if(1./(qpa*2.0)<=200.0) - { -// printf("coeff[f_ww*2-2] %g\n",coeff[f_ww*2-2]); - qpaw=coeff[f_ww*2-2]*(2.*qpa)*(2.*qpa)+coeff[f_ww*2-1]*(2.*qpa); -// qpaw=coeff[www*2-2]*(2.*qpa)*(2.*qpa)+coeff[www*2-1]*(2.*qpa); -// qpaw=qpaw/2.; - } - else { - qpaw = 2.0f*f_wwo*qpa; //Fix for Q(f) suggested by Kyle - } -// printf("qpaw %f\n",qpaw); -// printf("qpaw1 %g\n",qpaw); - qpaw=qpaw/f_wwo; -// printf("qpaw2 %g\n",qpaw); + // Compute initial stress on GPU (Daniel) + register _prec ini[9], ini_ip1[9]; + register _prec depth, pfluid; + register int srfpos; + k = blockIdx.x*blockDim.x+threadIdx.x+align; + j = blockIdx.y*blockDim.y+threadIdx.y+s_j; + + //if (k >= nzt+align || j > e_j) return; + if (k > nzt+align+1 || j > e_j) return; + i = e_i; + pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; - h = 0.0625*( qs[pos] + qs[pos_ip1] + qs[pos_jm1] + qs[pos_ijk] - + qs[pos_km1] + qs[pos_ik1] + qs[pos_jk1] + qs[pos_ijk1] ); + kk = k - align; + jj = j - (2+ngsl); - if(1./(h*2.0)<=200.0) - { - hw=coeff[f_ww*2-2]*(2.*h)*(2.*h)+coeff[f_ww*2-1]*(2.*h); - // hw=hw/2.; - } - else { - hw = 2.0f*f_wwo*h; //Fix for Q(f) suggested by Kyle - } - hw=hw/f_wwo; + srfpos = d_nzt[d_i] + align - 1; + depth = (float) (srfpos - k) * d_DH[d_i]; + if (depth > 0) pfluid = (depth + d_DH[d_i]*0.5) * 9.81e3; + else pfluid = d_DH[d_i] / 2. * 9.81e3; + + //cuPrintf("k=%d, depth=%f, pfluid=%e\n", k, depth, pfluid); - h1 = 0.250*( qs[pos] + qs[pos_km1] ); - - if(1./(h1*2.0)<=200.0) - { - h1w=coeff[f_ww*2-2]*(2.*h1)*(2.*h1)+coeff[f_ww*2-1]*(2.*h1); - // h1w=h1w/2.; - } - else { - h1w = 2.0f*f_wwo*h1; //Fix for Q(f) suggested by Kyle - } - h1w=h1w/f_wwo; - - - - h2 = 0.250*( qs[pos] + qs[pos_jm1] ); - if(1./(h2*2.0)<=200.0) - { - h2w=coeff[f_ww*2-2]*(2.*h2)*(2.*h2)+coeff[f_ww*2-1]*(2.*h2); - // h2w=h2w/2.; - } - else { - h2w = 2.0f*f_wwo*h2; //Fix for Q(f) suggested by Kyle - } - h2w=h2w/f_wwo; - - - h3 = 0.250*( qs[pos] + qs[pos_ip1] ); - if(1./(h3*2.0)<=200.0) - { - h3w=coeff[f_ww*2-2]*(2.*h3)*(2.*h3)+coeff[f_ww*2-1]*(2.*h3); - // h3w=h3w/2.; - } - else { - h3w = 2.0f*f_wwo*h3; //Fix for Q(f) suggested by Kyle - } - h3w=h3w/f_wwo; - - h = -xm*hw*d_dh1[d_i]; - h1 = -xmu1*h1w*d_dh1[d_i]; - h2 = -xmu2*h2w*d_dh1[d_i]; - h3 = -xmu3*h3w*d_dh1[d_i]; - - - // h1 = -xmu1*hw1*d_dh1[d_i]; - //h2 = -xmu2*hw2*d_dh1[d_i]; - //h3 = -xmu3*hw3*d_dh1[d_i]; - - - qpa = -qpaw*xl*d_dh1[d_i]; - // qpa = -qpaw*xl*d_dh1[d_i]; - - xm = xm*d_dth[d_i]; - xmu1 = xmu1*d_dth[d_i]; - xmu2 = xmu2*d_dth[d_i]; - xmu3 = xmu3*d_dth[d_i]; - xl = xl*d_dth[d_i]; - // f_vx2 = f_vx2*f_vx1; - h = h*f_vx1; - h1 = h1*f_vx1; - h2 = h2*f_vx1; - h3 = h3*f_vx1; - qpa = qpa*f_vx1; - - xm = xm+d_DT*h; - xmu1 = xmu1+d_DT*h1; - xmu2 = xmu2+d_DT*h2; - xmu3 = xmu3+d_DT*h3; - vx1 = d_DT*(1+f_vx2*f_vx1); - - u1_ip2 = u1_ip1; - u1_ip1 = f_u1; - f_u1 = u1_im1; - u1_im1 = u1[pos_im1]; - v1_ip1 = f_v1; - f_v1 = v1_im1; - v1_im1 = v1_im2; - v1_im2 = v1[pos_im2]; - w1_ip1 = f_w1; - f_w1 = w1_im1; - w1_im1 = w1_im2; - w1_im2 = w1[pos_im2]; - - if (d_i == 0){ /*Apply FS condition on uppermost grid only*/ - if(k == d_nzt[d_i]+align-1) { - u1[pos_kp1] = f_u1 - (f_w1 - w1_im1); - v1[pos_kp1] = f_v1 - (w1[pos_jp1] - f_w1); - - g_i = d_nxt[d_i]*rankx + i - ngsl - 1; - - if(g_i1 || NPC == 2) //periodic BCs - vs2 = v1[pos_jm1] - (f_w1 - w1[pos_jm1]); - else - vs2 = 0.0; - - w1[pos_kp1] = w1[pos_km1] - lam_mu[i*(d_nyt[d_i]+4+ngsl2) + j]*((vs1 - u1[pos_kp1]) + (u1_ip1 - f_u1) - + (v1[pos_kp1] - vs2) + (f_v1 - v1[pos_jm1]) ); - } - else if(k == d_nzt[d_i]+align-2) { - u1[pos_kp2] = u1[pos_kp1] - (w1[pos_kp1] - w1[pos_im1+1]); - v1[pos_kp2] = v1[pos_kp1] - (w1[pos_jp1+1] - w1[pos_kp1]); - } - } - - vs1 = d_c1*(u1_ip1 - f_u1) + d_c2*(u1_ip2 - u1_im1); - vs2 = d_c1*(f_v1 - v1[pos_jm1]) + d_c2*(v1[pos_jp1] - v1[pos_jm2]); - vs3 = d_c1*(f_w1 - w1[pos_km1]) + d_c2*(w1[pos_kp1] - w1[pos_km2]); - - tmp = xl*(vs1+vs2+vs3); - a1 = qpa*(vs1+vs2+vs3); - tmp = tmp+d_DT*a1; - - f_r = r1[pos]; - f_rtmp = -h*(vs2+vs3) + a1; - xx[pos] = xx[pos] + tmp - xm*(vs2+vs3) + vx1*f_r; - r1[pos] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - xx[pos] = (xx[pos] + d_DT*f_rtmp)*f_dcrj; - - f_r = r2[pos]; - f_rtmp = -h*(vs1+vs3) + a1; - yy[pos] = (yy[pos] + tmp - xm*(vs1+vs3) + vx1*f_r)*f_dcrj; - - r2[pos] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - yy[pos] = (yy[pos] + d_DT*f_rtmp)*f_dcrj; - - f_r = r3[pos]; - f_rtmp = -h*(vs1+vs2) + a1; - zz[pos] = (zz[pos] + tmp - xm*(vs1+vs2) + vx1*f_r)*f_dcrj; - r3[pos] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - zz[pos] = (zz[pos] + d_DT*f_rtmp)*f_dcrj; - - vs1 = d_c1*(u1[pos_jp1] - f_u1) + d_c2*(u1[pos_jp2] - u1[pos_jm1]); - vs2 = d_c1*(f_v1 - v1_im1) + d_c2*(v1_ip1 - v1_im2); - f_r = r4[pos]; - f_rtmp = h1*(vs1+vs2); - xy[pos] = xy[pos] + xmu1*(vs1+vs2) + vx1*f_r; - r4[pos] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - xy[pos] = (xy[pos] + d_DT*f_rtmp)*f_dcrj; - - //moved to separate subroutine fstr, to be executed after plasticity (Daniel) - /*if(k == d_nzt+align-1) - { - zz[pos+1] = -zz[pos]; - xz[pos] = 0.0; - yz[pos] = 0.0; - } - else - {*/ - vs1 = d_c1*(u1[pos_kp1] - f_u1) + d_c2*(u1[pos_kp2] - u1[pos_km1]); - vs2 = d_c1*(f_w1 - w1_im1) + d_c2*(w1_ip1 - w1_im2); - f_r = r5[pos]; - f_rtmp = h2*(vs1+vs2); - xz[pos] = xz[pos] + xmu2*(vs1+vs2) + vx1*f_r; - r5[pos] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - xz[pos] = (xz[pos] + d_DT*f_rtmp)*f_dcrj; - - - vs1 = d_c1*(v1[pos_kp1] - f_v1) + d_c2*(v1[pos_kp2] - v1[pos_km1]); - vs2 = d_c1*(w1[pos_jp1] - f_w1) + d_c2*(w1[pos_jp2] - w1[pos_jm1]); - f_r = r6[pos]; - f_rtmp = h3*(vs1+vs2); - yz[pos] = yz[pos] + xmu3*(vs1+vs2) + vx1*f_r; - r6[pos] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - yz[pos] = (yz[pos] + d_DT*f_rtmp)*f_dcrj; - - // also moved to fstr (Daniel) - /*if(k == d_nzt+align-2) - { - zz[pos+3] = -zz[pos]; - xz[pos+2] = -xz[pos]; - yz[pos+2] = -yz[pos]; - } - else if(k == d_nzt+align-3) - { - xz[pos+4] = -xz[pos]; - yz[pos+4] = -yz[pos]; - }*/ - /*}*/ - pos = pos_im1; - } - return; -} - - - -void dstrqc_H_new(_prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* xz, _prec* yz, - _prec* r1, _prec* r2, _prec* r3, _prec* r4, _prec* r5, _prec* r6, - _prec* u1, _prec* v1, _prec* w1, _prec* lam, _prec* mu, _prec* qp,_prec* coeff, - _prec* qs, _prec* dcrjx, _prec* dcrjy, _prec* dcrjz, int nyt, int nzt, - cudaStream_t St, _prec* lam_mu, - //_prec *vx1, _prec *vx2, _prec *ww, _prec *wwo, //peng's version - _prec *vx1, _prec *vx2, int *ww, _prec *wwo, - int NX, int NPC, int rankx, int ranky, int s_i, - int e_i, int s_j, int e_j, int d_i) -{ - //fprintf(stderr, "nzt=%d, e_j=%d, s_j=%d\n", nzt, e_j, s_j); - //cudaPrintfInit(); - if (0 == (nzt % 64) && 0 == (( e_j-s_j+1) % 8)) { - const int blockx = 64, blocky = 8; - dim3 block(blockx, blocky, 1); - dim3 grid ((nzt+block.x-1)/block.x, (e_j-s_j+1+block.y-1)/block.y,1); - CUCHK(cudaFuncSetCacheConfig(dstrqc_new, cudaFuncCachePreferShared)) ; - dstrqc_new<<>>(xx, yy, zz, xy, xz, yz, r1, r2, r3, r4, r5, r6, - u1, v1, w1, lam, mu, qp,coeff, qs, dcrjx, dcrjy, dcrjz, lam_mu, - vx1, vx2, ww, wwo, - NX, NPC, rankx, ranky, nzt, s_i, e_i, s_j, e_j, d_i); - } else { - const int blockx = BLOCK_SIZE_Z, blocky = BLOCK_SIZE_Y; - dim3 block(blockx, blocky, 1); - dim3 grid ((nzt+block.x-1)/block.x, (e_j-s_j+1+block.y-1)/block.y,1); - CUCHK(cudaFuncSetCacheConfig(dstrqc_new, cudaFuncCachePreferShared)) ; - dstrqc_new<<>>(xx, yy, zz, xy, xz, yz, r1, r2, r3, r4, r5, r6, - u1, v1, w1, lam, mu, qp,coeff, qs, dcrjx, dcrjy, dcrjz, lam_mu, - vx1, vx2, ww, wwo, - NX, NPC, rankx, ranky, nzt, s_i, e_i, s_j, e_j, d_i); - - } - cudaError_t cerr; - cerr=cudaGetLastError(); - if(cerr!=cudaSuccess) printf("CUDA ERROR: dstrqc_H_new after kernel: %s\n",cudaGetErrorString(cerr)); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); - return; -} - - -/* kernel function to apply free-surface B.C. to stresses - (Daniel) */ -void fstr_H(_prec* zz, _prec* xz, _prec* yz, cudaStream_t St, int s_i, int e_i, int s_j, int e_j) -{ - dim3 block (2, BLOCK_SIZE_Y, 1); - dim3 grid (1,(e_j-s_j+1+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - CUCHK(cudaFuncSetCacheConfig(fstr, cudaFuncCachePreferL1)); - fstr<<>>(zz, xz, yz, s_i, e_i, s_j); - return; -} - - -__global__ void -__launch_bounds__(512,2) -drprecpc_calc_opt(_prec *xx, _prec *yy, _prec *zz, - const _prec* __restrict__ xy, - const _prec* __restrict__ xz, - const _prec* __restrict__ yz, - _prec *mu, _prec *d1, - _prec *sigma2, - _prec *yldfac,_prec *cohes, _prec *phi, - _prec *neta, - int nzt, int s_i, int e_i, int s_j, int e_j, int d_i) { - register int i,j,k,pos; - register int pos_im1,pos_ip1,pos_jm1,pos_km1; - register int pos_ip1jm1; - register int pos_ip1km1,pos_jm1km1; - register _prec Sxx, Syy, Szz, Sxy, Sxz, Syz; - register _prec Sxxp, Syyp, Szzp, Sxyp, Sxzp, Syzp; - register _prec depxx, depyy, depzz, depxy, depxz, depyz; - register _prec SDxx, SDyy, SDzz; - register _prec iyldfac, Tv, sigma_m, taulim, taulim2, rphi; - register _prec xm, iixx, iiyy, iizz; - register _prec mu_, secinv, sqrtSecinv; - register int jj,kk; - - // Compute initial stress on GPU (Daniel) - register _prec ini[9], ini_ip1[9]; - register _prec depth, pfluid; - register int srfpos; - - k = blockIdx.x*blockDim.x+threadIdx.x+align; - j = blockIdx.y*blockDim.y+threadIdx.y+s_j; - - //if (k >= nzt+align || j > e_j) return; - if (k > nzt+align+1 || j > e_j) return; - - i = e_i; - pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; - - kk = k - align; - jj = j - (2+ngsl); - - srfpos = d_nzt[d_i] + align - 1; - depth = (_prec) (srfpos - k) * d_DH[d_i]; - - if (depth > 0) pfluid = (depth + d_DH[d_i]*0.5) * 9.81e3; - else pfluid = d_DH[d_i] / 2. * 9.81e3; - - //cuPrintf("k=%d, depth=%f, pfluid=%e\n", k, depth, pfluid); - - _prec sigma2_ip1, sigma2_i; - _prec xy_ip1, xy_i, xz_ip1, xz_i, yz_ip1, yz_i; - _prec mu_ip1, mu_i; - _prec xz_km1, xz_ip1km1, xy_jm1, xy_ip1jm1; - sigma2_i = sigma2[pos + d_slice_1[d_i]]; - xy_i = xy [pos + d_slice_1[d_i]]; - xz_i = xz [pos + d_slice_1[d_i]]; - mu_i = mu [pos + d_slice_1[d_i]]; - xz_km1 = xz [pos + d_slice_1[d_i] - 1]; - xy_jm1 = xy [pos + d_slice_1[d_i] - d_yline_1[d_i]]; - for(i=e_i;i>=s_i;--i){ - sigma2_ip1 = sigma2_i; - xy_ip1 = xy_i; - xz_ip1 = xz_i; - mu_ip1 = mu_i; - xz_ip1km1 = xz_km1; - xy_ip1jm1 = xy_jm1; + _prec sigma2_ip1, sigma2_i; + _prec xy_ip1, xy_i, xz_ip1, xz_i, yz_ip1, yz_i; + _prec mu_ip1, mu_i; + _prec xz_km1, xz_ip1km1, xy_jm1, xy_ip1jm1; + sigma2_i = sigma2[pos + d_slice_1[d_i]]; + xy_i = xy [pos + d_slice_1[d_i]]; + xz_i = xz [pos + d_slice_1[d_i]]; + mu_i = mu [pos + d_slice_1[d_i]]; + xz_km1 = xz [pos + d_slice_1[d_i] - 1]; + xy_jm1 = xy [pos + d_slice_1[d_i] - d_yline_1[d_i]]; + for(i=e_i;i>=s_i;--i){ + sigma2_ip1 = sigma2_i; + xy_ip1 = xy_i; + xz_ip1 = xz_i; + mu_ip1 = mu_i; + xz_ip1km1 = xz_km1; + xy_ip1jm1 = xy_jm1; pos_im1 = pos - d_slice_1[d_i]; pos_ip1 = pos + d_slice_1[d_i]; @@ -1422,6 +1124,7 @@ drprecpc_calc_opt(_prec *xx, _prec *yy, _prec *zz, } // drprecpc is for plasticity computation for cerjan and wave propagation +extern "C" void drprecpc_calc_H_opt(_prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, _prec *mu, _prec *d1, _prec *sigma2, _prec *yldfac,_prec *cohes, _prec *phi, @@ -1431,7 +1134,7 @@ void drprecpc_calc_H_opt(_prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, 1); dim3 grid ((nzt+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, ((yre-yls+1)+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - CUCHK(cudaFuncSetCacheConfig(drprecpc_calc_opt, cudaFuncCachePreferL1)); + cudaFuncSetCacheConfig(drprecpc_calc_opt, cudaFuncCachePreferL1); //split into tho routines, one for the normal, one for shear stress components (Daniel) drprecpc_calc_opt<<>>(xx,yy,zz,xy,xz,yz,mu,d1, @@ -1442,6 +1145,7 @@ void drprecpc_calc_H_opt(_prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, return; } +extern "C" void drprecpc_app_H(_prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, _prec *mu, _prec *sigma2, _prec *yldfac, @@ -1453,7 +1157,7 @@ void drprecpc_app_H(_prec *xx, _prec *yy, _prec *zz, cerr=cudaGetLastError(); if(cerr!=cudaSuccess) printf("CUDA ERROR: drprecpc_app before kernel: %s\n",cudaGetErrorString(cerr)); - CUCHK(cudaFuncSetCacheConfig(drprecpc_app, cudaFuncCachePreferL1)); + cudaFuncSetCacheConfig(drprecpc_app, cudaFuncCachePreferL1); drprecpc_app<<>>(xx,yy,zz,xy,xz,yz,mu, sigma2,yldfac,xls,xre,yls,d_i); cerr=cudaGetLastError(); @@ -1462,9 +1166,10 @@ void drprecpc_app_H(_prec *xx, _prec *yy, _prec *zz, return; } +extern "C" void addsrc_H(int i, int READ_STEP, int dim, int* psrc, int npsrc, cudaStream_t St, - _prec* axx, _prec* ayy, _prec* azz, _prec* axz, _prec* ayz, _prec* axy, - _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* yz, _prec* xz, int d_i) + float* axx, float* ayy, float* azz, float* axz, float* ayz, float* axy, + float* xx, float* yy, float* zz, float* xy, float* yz, float* xz, int d_i) { dim3 grid, block; if(npsrc < 256) @@ -1480,18 +1185,18 @@ void addsrc_H(int i, int READ_STEP, int dim, int* psrc, int npsrc, cud cudaError_t cerr; cerr=cudaGetLastError(); if(cerr!=cudaSuccess) printf("CUDA ERROR: addsrc before kernel: %s\n",cudaGetErrorString(cerr)); - //cudaPrintfInit(); + /*cudaPrintfInit();*/ addsrc_cu<<>>(i, READ_STEP, dim, psrc, npsrc, axx, ayy, azz, axz, ayz, axy, xx, yy, zz, xy, yz, xz, d_i); cerr=cudaGetLastError(); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ if(cerr!=cudaSuccess) printf("CUDA ERROR: addsrc after kernel: %s\n",cudaGetErrorString(cerr)); return; } -__global__ void dvelcy(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* xz, _prec* yz, - _prec* dcrjx, _prec* dcrjy, _prec* dcrjz, _prec* d_1, _prec* s_u1, _prec* s_v1, _prec* s_w1, int s_j, int e_j, +__global__ void dvelcy(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, + float* dcrjx, float* dcrjy, float* dcrjz, float* d_1, float* s_u1, float* s_v1, float* s_w1, int s_j, int e_j, int d_i) { register int i, j, k, pos, j2, pos2, pos_jm1, pos_jm2; @@ -1578,72 +1283,392 @@ __global__ void dvelcy(_prec* u1, _prec* v1, _prec* w1, _prec* xx, return; } -__global__ void update_boundary_y(_prec* u1, _prec* v1, _prec* w1, _prec* s_u1, _prec* s_v1, _prec* s_w1, int rank, int flag, int d_i) -{ - register int i, j, k, pos, posj; - k = blockIdx.x*BLOCK_SIZE_Z+threadIdx.x+align; - i = blockIdx.y*BLOCK_SIZE_Y+threadIdx.y+2+ngsl; +__global__ void update_boundary_y(float* u1, float* v1, float* w1, float* s_u1, float* s_v1, float* s_w1, int rank, int flag, int d_i) +{ + register int i, j, k, pos, posj; + k = blockIdx.x*BLOCK_SIZE_Z+threadIdx.x+align; + i = blockIdx.y*BLOCK_SIZE_Y+threadIdx.y+2+ngsl; + + if(flag==Front && rank!=-1){ + j = 2; + pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; + posj = i*ngsl*d_yline_1[d_i]+k; + for(j=2;j<2+ngsl;j++){ + u1[pos] = s_u1[posj]; + v1[pos] = s_v1[posj]; + w1[pos] = s_w1[posj]; + pos = pos + d_yline_1[d_i]; + posj = posj + d_yline_1[d_i]; + } + } + + if(flag==Back && rank!=-1){ + j = d_nyt[d_i]+ngsl+2; + pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; + posj = i*ngsl*d_yline_1[d_i]+k; + for(j=d_nyt[d_i]+ngsl+2;j=s_i;i--) + { + pos_im1 = pos-d_slice_1[0]; + + // asymmetry reflection above free surface + zz[pos+1] = -zz[pos]; + zz[pos+2] = -zz[pos-1]; + + xz[pos+1] = -xz[pos-1]; + xz[pos+2] = -xz[pos-2]; + + yz[pos+1] = -yz[pos-1]; + yz[pos+2] = -yz[pos-2]; + + // horizontal shear stresses on free surface + xz[pos] = 0.0; + yz[pos] = 0.0; + + pos = pos_im1; + } + +} + +/* Old dstrqc routine */ +__global__ void dstrqc(float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, + float* r1, float* r2, float* r3, float* r4, float* r5, float* r6, + float* u1, float* v1, float* w1, float* lam, float* mu, float* qp,float* coeff, + float* qs, float* dcrjx, float* dcrjy, float* dcrjz, float* lam_mu, + _prec *d_vx1, _prec *d_vx2, int *d_ww, _prec *d_wwo, + int NX, int NPC, int rankx, int ranky, int nzt, int s_i, int e_i, int s_j, int e_j, int d_i) +{ + register int i, j, k, g_i; + register int pos, pos_ip1, pos_im2, pos_im1; + register int pos_km2, pos_km1, pos_kp1, pos_kp2; + register int pos_jm2, pos_jm1, pos_jp1, pos_jp2; + register int pos_ik1, pos_jk1, pos_ijk, pos_ijk1,f_ww; + register _prec vs1, vs2, vs3, a1, tmp, vx1,f_wwo; + register _prec xl, xm, xmu1, xmu2, xmu3; + register _prec qpa, h, h1, h2, h3; + register _prec qpaw,hw,h1w,h2w,h3w; + register _prec f_vx1, f_vx2, f_dcrj, f_r, f_dcrjy, f_dcrjz; + register _prec f_rtmp; + register _prec f_u1, u1_ip1, u1_ip2, u1_im1; + register _prec f_v1, v1_im1, v1_ip1, v1_im2; + register _prec f_w1, w1_im1, w1_im2, w1_ip1; + int maxk, mink = align+3; + + k = blockIdx.x*BLOCK_SIZE_Z+threadIdx.x+align; + j = blockIdx.y*BLOCK_SIZE_Y+threadIdx.y+s_j; + + if (d_i == 0) { + maxk = nzt + align -1; + } + else maxk = nzt + align -3; + + if (k < mink || k > maxk || j > e_j) return; + + i = e_i; + pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; + + u1_ip1 = u1[pos+d_slice_2[d_i]]; + f_u1 = u1[pos+d_slice_1[d_i]]; + u1_im1 = u1[pos]; + f_v1 = v1[pos+d_slice_1[d_i]]; + v1_im1 = v1[pos]; + v1_im2 = v1[pos-d_slice_1[d_i]]; + f_w1 = w1[pos+d_slice_1[d_i]]; + w1_im1 = w1[pos]; + w1_im2 = w1[pos-d_slice_1[d_i]]; + f_dcrjz = dcrjz[k]; + f_dcrjy = dcrjy[j]; + for(i=e_i;i>=s_i;i--) + { + /*f_vx1 = tex1Dfetch(p_vx1, pos); + f_vx2 = tex1Dfetch(p_vx2, pos); + f_ww = tex1Dfetch(p_ww, pos); + f_wwo = tex1Dfetch(p_wwo, pos);*/ + f_vx1 = d_vx1[pos]; + f_vx2 = d_vx2[pos]; + f_ww = d_ww[pos]; + f_wwo = d_wwo[pos]; + /* + if(f_wwo!=f_wwo){ + xx[pos] = yy[pos] = zz[pos] = xy[pos] = xz[pos] = yz[pos] = 1.0; + r1[pos] = r2[pos] = r3[pos] = r4[pos] = r5[pos] = r6[pos] = 1.0; + return; + } +*/ + f_dcrj = dcrjx[i]*f_dcrjy*f_dcrjz; + + pos_km2 = pos-2; + pos_km1 = pos-1; + pos_kp1 = pos+1; + pos_kp2 = pos+2; + pos_jm2 = pos-d_yline_2[d_i]; + pos_jm1 = pos-d_yline_1[d_i]; + pos_jp1 = pos+d_yline_1[d_i]; + pos_jp2 = pos+d_yline_2[d_i]; + pos_im2 = pos-d_slice_2[d_i]; + pos_im1 = pos-d_slice_1[d_i]; + pos_ip1 = pos+d_slice_1[d_i]; + pos_jk1 = pos-d_yline_1[d_i]-1; + pos_ik1 = pos+d_slice_1[d_i]-1; + pos_ijk = pos+d_slice_1[d_i]-d_yline_1[d_i]; + pos_ijk1 = pos+d_slice_1[d_i]-d_yline_1[d_i]-1; + + xl = 8.0/( lam[pos] + lam[pos_ip1] + lam[pos_jm1] + lam[pos_ijk] + + lam[pos_km1] + lam[pos_ik1] + lam[pos_jk1] + lam[pos_ijk1] ); + xm = 16.0/( mu[pos] + mu[pos_ip1] + mu[pos_jm1] + mu[pos_ijk] + + mu[pos_km1] + mu[pos_ik1] + mu[pos_jk1] + mu[pos_ijk1] ); + xmu1 = 2.0/( mu[pos] + mu[pos_km1] ); + xmu2 = 2.0/( mu[pos] + mu[pos_jm1] ); + xmu3 = 2.0/( mu[pos] + mu[pos_ip1] ); + xl = xl + xm; + qpa = 0.0625*( qp[pos] + qp[pos_ip1] + qp[pos_jm1] + qp[pos_ijk] + + qp[pos_km1] + qp[pos_ik1] + qp[pos_jk1] + qp[pos_ijk1] ); + +// www=f_ww; + if(1./(qpa*2.0)<=200.0) + { +// printf("coeff[f_ww*2-2] %g\n",coeff[f_ww*2-2]); + qpaw=coeff[f_ww*2-2]*(2.*qpa)*(2.*qpa)+coeff[f_ww*2-1]*(2.*qpa); +// qpaw=coeff[www*2-2]*(2.*qpa)*(2.*qpa)+coeff[www*2-1]*(2.*qpa); +// qpaw=qpaw/2.; + } + else { + qpaw = 2.0f*f_wwo*qpa; //Fix for Q(f) suggested by Kyle + } +// printf("qpaw %f\n",qpaw); +// printf("qpaw1 %g\n",qpaw); + qpaw=qpaw/f_wwo; +// printf("qpaw2 %g\n",qpaw); + + + + h = 0.0625*( qs[pos] + qs[pos_ip1] + qs[pos_jm1] + qs[pos_ijk] + + qs[pos_km1] + qs[pos_ik1] + qs[pos_jk1] + qs[pos_ijk1] ); + + if(1./(h*2.0)<=200.0) + { + hw=coeff[f_ww*2-2]*(2.*h)*(2.*h)+coeff[f_ww*2-1]*(2.*h); + // hw=hw/2.; + } + else { + hw = 2.0f*f_wwo*h; //Fix for Q(f) suggested by Kyle + } + hw=hw/f_wwo; + + + h1 = 0.250*( qs[pos] + qs[pos_km1] ); + + if(1./(h1*2.0)<=200.0) + { + h1w=coeff[f_ww*2-2]*(2.*h1)*(2.*h1)+coeff[f_ww*2-1]*(2.*h1); + // h1w=h1w/2.; + } + else { + h1w = 2.0f*f_wwo*h1; //Fix for Q(f) suggested by Kyle + } + h1w=h1w/f_wwo; + + + + h2 = 0.250*( qs[pos] + qs[pos_jm1] ); + if(1./(h2*2.0)<=200.0) + { + h2w=coeff[f_ww*2-2]*(2.*h2)*(2.*h2)+coeff[f_ww*2-1]*(2.*h2); + // h2w=h2w/2.; + } + else { + h2w = 2.0f*f_wwo*h2; //Fix for Q(f) suggested by Kyle + } + h2w=h2w/f_wwo; + + + h3 = 0.250*( qs[pos] + qs[pos_ip1] ); + if(1./(h3*2.0)<=200.0) + { + h3w=coeff[f_ww*2-2]*(2.*h3)*(2.*h3)+coeff[f_ww*2-1]*(2.*h3); + // h3w=h3w/2.; + } + else { + h3w = 2.0f*f_wwo*h3; //Fix for Q(f) suggested by Kyle + } + h3w=h3w/f_wwo; + + h = -xm*hw*d_dh1[d_i]; + h1 = -xmu1*h1w*d_dh1[d_i]; + h2 = -xmu2*h2w*d_dh1[d_i]; + h3 = -xmu3*h3w*d_dh1[d_i]; + + + // h1 = -xmu1*hw1*d_dh1[d_i]; + //h2 = -xmu2*hw2*d_dh1[d_i]; + //h3 = -xmu3*hw3*d_dh1[d_i]; + + + qpa = -qpaw*xl*d_dh1[d_i]; + // qpa = -qpaw*xl*d_dh1[d_i]; + + xm = xm*d_dth[d_i]; + xmu1 = xmu1*d_dth[d_i]; + xmu2 = xmu2*d_dth[d_i]; + xmu3 = xmu3*d_dth[d_i]; + xl = xl*d_dth[d_i]; + // f_vx2 = f_vx2*f_vx1; + h = h*f_vx1; + h1 = h1*f_vx1; + h2 = h2*f_vx1; + h3 = h3*f_vx1; + qpa = qpa*f_vx1; + + xm = xm+d_DT*h; + xmu1 = xmu1+d_DT*h1; + xmu2 = xmu2+d_DT*h2; + xmu3 = xmu3+d_DT*h3; + vx1 = d_DT*(1+f_vx2*f_vx1); + + u1_ip2 = u1_ip1; + u1_ip1 = f_u1; + f_u1 = u1_im1; + u1_im1 = u1[pos_im1]; + v1_ip1 = f_v1; + f_v1 = v1_im1; + v1_im1 = v1_im2; + v1_im2 = v1[pos_im2]; + w1_ip1 = f_w1; + f_w1 = w1_im1; + w1_im1 = w1_im2; + w1_im2 = w1[pos_im2]; + + if (d_i == 0){ /*Apply FS condition on uppermost grid only*/ + if(k == d_nzt[d_i]+align-1) { + u1[pos_kp1] = f_u1 - (f_w1 - w1_im1); + v1[pos_kp1] = f_v1 - (w1[pos_jp1] - f_w1); - if(flag==Front && rank!=-1){ - j = 2; - pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; - posj = i*ngsl*d_yline_1[d_i]+k; - for(j=2;j<2+ngsl;j++){ - u1[pos] = s_u1[posj]; - v1[pos] = s_v1[posj]; - w1[pos] = s_w1[posj]; - pos = pos + d_yline_1[d_i]; - posj = posj + d_yline_1[d_i]; - } - } + g_i = d_nxt[d_i]*rankx + i - ngsl - 1; - if(flag==Back && rank!=-1){ - j = d_nyt[d_i]+ngsl+2; - pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; - posj = i*ngsl*d_yline_1[d_i]+k; - for(j=d_nyt[d_i]+ngsl+2;j1 || NPC == 2) //periodic BCs + vs2 = v1[pos_jm1] - (f_w1 - w1[pos_jm1]); + else + vs2 = 0.0; - k = d_nzt[0]+align-1; - j = blockIdx.y*BLOCK_SIZE_Y+threadIdx.y+s_j; - i = e_i; - pos = i*d_slice_1[0]+j*d_yline_1[0]+k; + w1[pos_kp1] = w1[pos_km1] - lam_mu[i*(d_nyt[d_i]+4+ngsl2) + j]*((vs1 - u1[pos_kp1]) + (u1_ip1 - f_u1) + + (v1[pos_kp1] - vs2) + (f_v1 - v1[pos_jm1]) ); + } + else if(k == d_nzt[d_i]+align-2) { + u1[pos_kp2] = u1[pos_kp1] - (w1[pos_kp1] - w1[pos_im1+1]); + v1[pos_kp2] = v1[pos_kp1] - (w1[pos_jp1+1] - w1[pos_kp1]); + } + } + + vs1 = d_c1*(u1_ip1 - f_u1) + d_c2*(u1_ip2 - u1_im1); + vs2 = d_c1*(f_v1 - v1[pos_jm1]) + d_c2*(v1[pos_jp1] - v1[pos_jm2]); + vs3 = d_c1*(f_w1 - w1[pos_km1]) + d_c2*(w1[pos_kp1] - w1[pos_km2]); + + tmp = xl*(vs1+vs2+vs3); + a1 = qpa*(vs1+vs2+vs3); + tmp = tmp+d_DT*a1; - for(i=e_i;i>=s_i;i--) - { - pos_im1 = pos-d_slice_1[0]; + f_r = r1[pos]; + f_rtmp = -h*(vs2+vs3) + a1; + xx[pos] = xx[pos] + tmp - xm*(vs2+vs3) + vx1*f_r; + r1[pos] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + xx[pos] = (xx[pos] + d_DT*f_rtmp)*f_dcrj; - // asymmetry reflection above free surface - zz[pos+1] = -zz[pos]; - zz[pos+2] = -zz[pos-1]; + f_r = r2[pos]; + f_rtmp = -h*(vs1+vs3) + a1; + yy[pos] = (yy[pos] + tmp - xm*(vs1+vs3) + vx1*f_r)*f_dcrj; - xz[pos+1] = -xz[pos-1]; - xz[pos+2] = -xz[pos-2]; + r2[pos] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + yy[pos] = (yy[pos] + d_DT*f_rtmp)*f_dcrj; + + f_r = r3[pos]; + f_rtmp = -h*(vs1+vs2) + a1; + zz[pos] = (zz[pos] + tmp - xm*(vs1+vs2) + vx1*f_r)*f_dcrj; + r3[pos] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + zz[pos] = (zz[pos] + d_DT*f_rtmp)*f_dcrj; - yz[pos+1] = -yz[pos-1]; - yz[pos+2] = -yz[pos-2]; + vs1 = d_c1*(u1[pos_jp1] - f_u1) + d_c2*(u1[pos_jp2] - u1[pos_jm1]); + vs2 = d_c1*(f_v1 - v1_im1) + d_c2*(v1_ip1 - v1_im2); + f_r = r4[pos]; + f_rtmp = h1*(vs1+vs2); + xy[pos] = xy[pos] + xmu1*(vs1+vs2) + vx1*f_r; + r4[pos] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + xy[pos] = (xy[pos] + d_DT*f_rtmp)*f_dcrj; + + //moved to separate subroutine fstr, to be executed after plasticity (Daniel) + /*if(k == d_nzt+align-1) + { + zz[pos+1] = -zz[pos]; + xz[pos] = 0.0; + yz[pos] = 0.0; + } + else + {*/ + vs1 = d_c1*(u1[pos_kp1] - f_u1) + d_c2*(u1[pos_kp2] - u1[pos_km1]); + vs2 = d_c1*(f_w1 - w1_im1) + d_c2*(w1_ip1 - w1_im2); + f_r = r5[pos]; + f_rtmp = h2*(vs1+vs2); + xz[pos] = xz[pos] + xmu2*(vs1+vs2) + vx1*f_r; + r5[pos] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + xz[pos] = (xz[pos] + d_DT*f_rtmp)*f_dcrj; + - // horizontal shear stresses on free surface - xz[pos] = 0.0; - yz[pos] = 0.0; + vs1 = d_c1*(v1[pos_kp1] - f_v1) + d_c2*(v1[pos_kp2] - v1[pos_km1]); + vs2 = d_c1*(w1[pos_jp1] - f_w1) + d_c2*(w1[pos_jp2] - w1[pos_jm1]); + f_r = r6[pos]; + f_rtmp = h3*(vs1+vs2); + yz[pos] = yz[pos] + xmu3*(vs1+vs2) + vx1*f_r; + r6[pos] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + yz[pos] = (yz[pos] + d_DT*f_rtmp)*f_dcrj; + // also moved to fstr (Daniel) + /*if(k == d_nzt+align-2) + { + zz[pos+3] = -zz[pos]; + xz[pos+2] = -xz[pos]; + yz[pos+2] = -yz[pos]; + } + else if(k == d_nzt+align-3) + { + xz[pos+4] = -xz[pos]; + yz[pos+4] = -yz[pos]; + }*/ + /*}*/ pos = pos_im1; } - + return; } // treatment of shear stress components moved to separate kernel code (Daniel) @@ -1672,8 +1697,8 @@ __global__ void drprecpc_app(_prec *xx, _prec *yy, _prec *zz, pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+k; srfpos = d_nzt[d_i] + align - 1; - depth = (_prec) (srfpos - k) * d_DH[d_i]; - depth_kp1 = (_prec) (srfpos - k + 1) * d_DH[d_i]; + depth = (float) (srfpos - k) * d_DH[d_i]; + depth_kp1 = (float) (srfpos - k + 1) * d_DH[d_i]; if (depth > 0) pfluid = (depth + d_DH[d_i]/2.) * 9.81e3; else pfluid = d_DH[d_i] / 2. * 9.81e3; @@ -1778,14 +1803,14 @@ __global__ void drprecpc_app(_prec *xx, _prec *yy, _prec *zz, } __global__ void addsrc_cu(int i, int READ_STEP, int dim, int* psrc, int npsrc, - _prec* axx, _prec* ayy, _prec* azz, _prec* axz, _prec* ayz, _prec* axy, - _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* yz, _prec* xz, int d_i) + float* axx, float* ayy, float* azz, float* axz, float* ayz, float* axy, + float* xx, float* yy, float* zz, float* xy, float* yz, float* xz, int d_i) { register _prec vtst; register int idx, idy, idz, j, pos; j = blockIdx.x*blockDim.x+threadIdx.x; if(j >= npsrc) return; - vtst = (_prec)d_DT/(d_DH[d_i]*d_DH[d_i]*d_DH[d_i]); + vtst = (float)d_DT/(d_DH[d_i]*d_DH[d_i]*d_DH[d_i]); i = i - 1; idx = psrc[j*dim] + 1 + ngsl; @@ -1795,6 +1820,7 @@ __global__ void addsrc_cu(int i, int READ_STEP, int dim, int* psrc, int /*cuPrintf("addsrc_cu: (%d,%d,%d) (%e,%e,%e,%e,%e,%e)\n", idx, idy, idz, axx[j*READ_STEP+i], ayy[j*READ_STEP+i], azz[j*READ_STEP+i], axz[j*READ_STEP+i], ayz[j*READ_STEP+i], axy[j*READ_STEP+i]);*/ + xx[pos] = xx[pos] - vtst*axx[j*READ_STEP+i]; yy[pos] = yy[pos] - vtst*ayy[j*READ_STEP+i]; zz[pos] = zz[pos] - vtst*azz[j*READ_STEP+i]; @@ -1805,9 +1831,10 @@ __global__ void addsrc_cu(int i, int READ_STEP, int dim, int* psrc, int return; } +extern "C" void frcvel_H(int i, int READ_STEP, int dim, int* psrc, int npsrc, int tskp, cudaStream_t St, - _prec* axx, _prec* ayy, _prec* azz, _prec* axz, _prec* ayz, _prec* axy, - _prec* u1, _prec* v1, _prec* w1, int ymin, int ymax, int d_i) + float* axx, float* ayy, float* azz, float* axz, float* ayz, float* axy, + float* u1, float* v1, float* w1, int ymin, int ymax, int d_i) { dim3 grid, block; if(npsrc < 256) @@ -1834,8 +1861,8 @@ void frcvel_H(int i, int READ_STEP, int dim, int* psrc, int npsrc, int } __global__ void frcvel_cu(int i, int READ_STEP, int dim, int* psrc, int npsrc, int tskp, - _prec* axx, _prec* ayy, _prec* azz, _prec* axz, _prec* ayz, _prec* axy, - _prec* u1, _prec* v1, _prec* w1, int xmin, int xmax, int d_i) + float* axx, float* ayy, float* azz, float* axz, float* ayz, float* axy, + float* u1, float* v1, float* w1, int xmin, int xmax, int d_i) { register int idx, idy, idz, j, pos; register int i0, i1; @@ -1934,19 +1961,20 @@ __global__ void frcvel_cu(int i, int READ_STEP, int dim, int* psrc, int /* kernel function to apply free-surface B.C. to velocities - (Daniel) */ -void fvel_H(_prec* u1, _prec* v1, _prec* w1, cudaStream_t St, _prec* lam_mu, int NX, int rankx, int ranky, +extern "C" +void fvel_H(float* u1, float* v1, float* w1, cudaStream_t St, float* lam_mu, int NX, int rankx, int ranky, int s_i, int e_i, int s_j, int e_j) { dim3 block (2, BLOCK_SIZE_Y, 1); dim3 grid (1,(e_j-s_j+1+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - CUCHK(cudaFuncSetCacheConfig(fstr, cudaFuncCachePreferL1)); + cudaFuncSetCacheConfig(fvel, cudaFuncCachePreferL1); fvel<<>>(u1, v1, w1, lam_mu, NX, rankx, ranky, s_i, e_i, s_j); return; } /* kernel functions to apply free-surface B.C.s to velocity */ -__global__ void fvel (_prec* u1, _prec* v1, _prec* w1, _prec* lam_mu, int NX, int rankx, int ranky, int s_i, int e_i, int s_j) +__global__ void fvel (float* u1, float* v1, float* w1, float* lam_mu, int NX, int rankx, int ranky, int s_i, int e_i, int s_j) { register int i, j, k; //register _prec w1_im1, w1_im2, u1_ip1, f_u1, f_v1, f_w1; @@ -2033,7 +2061,8 @@ __global__ void fvel (_prec* u1, _prec* v1, _prec* w1, _prec* lam_mu, int NX } -void update_yldfac_buffer_x_H(_prec* yldfac, _prec *buf_L, _prec *buf_R, int nyt, int nzt, cudaStream_t St1, cudaStream_t St2, +extern "C" +void update_yldfac_buffer_x_H(float* yldfac, _prec *buf_L, _prec *buf_R, int nyt, int nzt, cudaStream_t St1, cudaStream_t St2, int rank_L, int rank_R, int d_i) { if(rank_L==-1 && rank_R==-1) return; @@ -2044,16 +2073,16 @@ void update_yldfac_buffer_x_H(_prec* yldfac, _prec *buf_L, _prec *buf_R, int ny //cudaPrintfInit(); CUCHK(cudaFuncSetCacheConfig(update_yldfac_buffer_x, cudaFuncCachePreferL1)); update_yldfac_buffer_x<<>>(yldfac, buf_L, rank_L, Left, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_yldfac_buffer_x<<>>(yldfac, buf_R, rank_R, Right, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); //cudaPrintfDisplay(stdout, 1); //cudaPrintfEnd(); return; } /* buffer exchanged for the swap area */ -__global__ void update_yldfac_buffer_x(_prec* yldfac, _prec *buf, int rank, int flag, int d_i) +__global__ void update_yldfac_buffer_x(float* yldfac, _prec *buf, int rank, int flag, int d_i) { register int i, j, k, pos, bpos; register int b_slice_1, b_yline_1; @@ -2097,7 +2126,8 @@ __global__ void update_yldfac_buffer_x(_prec* yldfac, _prec *buf, int rank, int return; } -void update_yldfac_data_x_H(_prec* yldfac, _prec *buf_L, _prec *buf_R, int nyt, int nzt, cudaStream_t St1, cudaStream_t St2, +extern "C" +void update_yldfac_data_x_H(float* yldfac, _prec *buf_L, _prec *buf_R, int nyt, int nzt, cudaStream_t St1, cudaStream_t St2, int rank_L, int rank_R, int d_i) { if(rank_L==-1 && rank_R==-1) return; @@ -2106,16 +2136,16 @@ void update_yldfac_data_x_H(_prec* yldfac, _prec *buf_L, _prec *buf_R, int nyt, //cudaPrintfInit(); CUCHK(cudaFuncSetCacheConfig(update_yldfac_buffer_x, cudaFuncCachePreferL1)); update_yldfac_data_x<<>>(yldfac, buf_L, rank_L, Left, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_yldfac_data_x<<>>(yldfac, buf_R, rank_R, Right, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); //cudaPrintfDisplay(stdout, 1); //cudaPrintfEnd(); return; } /* copy exchanged buffer data back to swap zone*/ -__global__ void update_yldfac_data_x(_prec* yldfac, _prec *buf, int rank, int flag, int d_i) +__global__ void update_yldfac_data_x(float* yldfac, _prec *buf, int rank, int flag, int d_i) { register int i, j, k, pos, bpos; register int b_slice_1, b_yline_1; @@ -2159,7 +2189,8 @@ __global__ void update_yldfac_data_x(_prec* yldfac, _prec *buf, int rank, int f return; } -void update_yldfac_buffer_y_H(_prec* yldfac, _prec *buf_F, _prec *buf_B, int nxt, int nzt, +extern "C" +void update_yldfac_buffer_y_H(float* yldfac, _prec *buf_F, _prec *buf_B, int nxt, int nzt, cudaStream_t St1, cudaStream_t St2, int rank_F, int rank_B, int d_i) { if(rank_F==-1 && rank_B==-1) return; @@ -2168,16 +2199,16 @@ void update_yldfac_buffer_y_H(_prec* yldfac, _prec *buf_F, _prec *buf_B, int nx //cudaPrintfInit(); CUCHK(cudaFuncSetCacheConfig(update_yldfac_buffer_y, cudaFuncCachePreferL1)); update_yldfac_buffer_y<<>>(yldfac, buf_F, rank_F, Front, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_yldfac_buffer_y<<>>(yldfac, buf_B, rank_B, Back, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); /*cudaPrintfDisplay(stdout, 1); - CUCHK(cudaPrintfEnd());*/ + cudaPrintfEnd();*/ return; } /* buffer exchanged for the swap area along Y*/ -__global__ void update_yldfac_buffer_y(_prec* yldfac, _prec *buf, int rank, int flag, int d_i) +__global__ void update_yldfac_buffer_y(float* yldfac, _prec *buf, int rank, int flag, int d_i) { register int i, j, k, pos, bpos; register int b_slice_1, b_yline_1; @@ -2222,7 +2253,8 @@ __global__ void update_yldfac_buffer_y(_prec* yldfac, _prec *buf, int rank, int return; } -void update_yldfac_data_y_H(_prec* yldfac, _prec *buf_F, _prec *buf_B, int nxt, int nzt, +extern "C" +void update_yldfac_data_y_H(float* yldfac, _prec *buf_F, _prec *buf_B, int nxt, int nzt, cudaStream_t St1, cudaStream_t St2, int rank_F, int rank_B, int d_i) { if(rank_F==-1 && rank_B==-1) return; @@ -2231,16 +2263,16 @@ void update_yldfac_data_y_H(_prec* yldfac, _prec *buf_F, _prec *buf_B, int nxt, //cudaPrintfInit(); CUCHK(cudaFuncSetCacheConfig(update_yldfac_buffer_y, cudaFuncCachePreferL1)); update_yldfac_data_y<<>>(yldfac, buf_F, rank_F, Front, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_yldfac_data_y<<>>(yldfac, buf_B, rank_B, Back, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); /*cudaPrintfDisplay(stdout, 1); - CUCHK(cudaPrintfEnd());*/ + cudaPrintfEnd();*/ return; } /* copy exchanged buffer data back to swap zone*/ -__global__ void update_yldfac_data_y(_prec* yldfac, _prec *buf, int rank, int flag, int d_i) +__global__ void update_yldfac_data_y(float* yldfac, _prec *buf, int rank, int flag, int d_i) { register int i, j, k, pos, bpos; register int b_slice_1, b_yline_1; @@ -2286,8 +2318,8 @@ __global__ void update_yldfac_data_y(_prec* yldfac, _prec *buf, int rank, int f return; } -__global__ void dvelc2(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec* xy, - _prec* xz, _prec* yz, _prec* dcrjx, _prec* dcrjy, _prec* dcrjz, _prec* d_1, int d_i) +__global__ void dvelc2(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, float* xy, + float* xz, float* yz, float* dcrjx, float* dcrjy, float* dcrjz, float* d_1, int d_i) { register int i, j, k, pos, pos_im1; register int pos_km1, pos_kp1; @@ -2342,35 +2374,39 @@ __global__ void dvelc2(_prec* u1, _prec* v1, _prec* w1, _prec* xx, return; } -void dvelc2_H(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* xz, _prec* yz, - _prec* dcrjx, _prec* dcrjy, _prec* dcrjz, _prec* d_1, int nxt, int nyt, cudaStream_t St, int d_i) +extern "C" +void dvelc2_H(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, float* xy, float* xz, float* yz, + float* dcrjx, float* dcrjy, float* dcrjz, float* d_1, int nxt, int nyt, cudaStream_t St, int d_i) { dim3 block (BLOCK_SIZE_X, BLOCK_SIZE_Y, 1); dim3 grid ((nxt+BLOCK_SIZE_X-1)/BLOCK_SIZE_X, (nyt+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - CUCHK(cudaFuncSetCacheConfig(dvelc2, cudaFuncCachePreferL1)); + cudaFuncSetCacheConfig(dvelc2, cudaFuncCachePreferL1); - //cudaPrintfInit(); + /*cudaPrintfInit();*/ dvelc2<<>>(u1,v1,w1,xx,yy,zz,xy,xz,yz,dcrjx,dcrjy,dcrjz,d_1,d_i); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ } -__global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *yyl, _prec *zzl, - _prec *xyl, _prec * xzl, _prec* yzl, - _prec *u1h, _prec *v1h, _prec* w1h, _prec *xxh, _prec *yyh, _prec *zzh, - _prec *xyh, _prec *xzh, _prec* yzh, int rank, int d_i) +__global__ void intp3d(_prec *u1l, float* v1l, _prec *w1l, _prec *xxl, _prec *yyl, _prec *zzl, + _prec *xyl, _prec * xzl, float* yzl, + _prec *u1h, _prec *v1h, float* w1h, _prec *xxh, _prec *yyh, _prec *zzh, + _prec *xyh, _prec *xzh, float* yzh, int rank, int d_i) { register int i,j,k,ii,jj,posl; register int posl_ip1,posl_jp1,posl_ij1; register int ih,jh,kh,posh,index; register _prec w[4],var[4]; + register int maxindex; w[0]=1.; w[1]=2./3.; w[2]=1./3.; w[3]=0.; + maxindex=(d_nxt[d_i-1]+4+ngsl2)*(d_nyt[d_i-1]+4+ngsl2)*(d_nzt[d_i-1]+2*align)-1; + i = blockIdx.x*blockDim.x+threadIdx.x+ngsl; j = blockIdx.y*blockDim.y+threadIdx.y+ngsl; @@ -2404,11 +2440,14 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii-1) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1]; - xzh[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4-ii]*w[jj-1] + - var[2]*w[ii-1]*w[4-jj] + - var[3]*w[4-ii]*w[4-jj]; + //This would be the correct way, but the if condition results in different results during + //each run (thread divergence issues?) + //if ((ih+ii) < (d_nxt[d_i-1]+4+ngsl2) && (jh+jj) < (d_nyt[d_i-1]+4+ngsl2)){ + index = min(posh + (ii-1) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1], maxindex); + xzh[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4-ii]*w[jj-1] + + var[2]*w[ii-1]*w[4-jj] + + var[3]*w[4-ii]*w[4-jj]; } } @@ -2422,11 +2461,11 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii) * d_slice_1[d_i-1] + (jj) * d_yline_1[d_i-1]; - yzh[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4 - ii]*w[jj-1] + - var[2]*w[ii-1]*w[4 - jj] + - var[3]*w[4-ii]*w[4 - jj]; + index = min(posh + (ii) * d_slice_1[d_i-1] + (jj) * d_yline_1[d_i-1], maxindex); + yzh[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4 - ii]*w[jj-1] + + var[2]*w[ii-1]*w[4 - jj] + + var[3]*w[4-ii]*w[4 - jj]; } } @@ -2434,29 +2473,23 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y var[1] = w1l[posl_ip1]; var[2] = w1l[posl_jp1]; var[3] = w1l[posl_ij1]; - /*if (((rank==1) && (i==4)) && (j==35)){ - cuPrintf("%d>> var=[%.16g, %.16g, %.16g, %.16g]\n", rank, var[0], var[1], var[2], var[3]); - cuPrintf("%d>>i=%d, j=%d, k=%d\n", rank, i, j, k); - cuPrintf("%d>>posl, ip1, jp1, ij1=%d %d %d %d\n", rank, posl, posl_ip1, posl_jp1, posl_ij1); - }*/ - /*if (((rank==0) && (i==36)) && (j==35)){ - cuPrintf("%d>> var=[%.16g, %.16g, %.16g, %.16g]\n", rank, var[0], var[1], var[2], var[3]); - cuPrintf("%d>> i=%d, j=%d, k=%d\n", rank, i, j, k); - cuPrintf("%d>> posl, ip1, jp1, ij1=%d %d %d %d\n", rank, posl, posl_ip1, posl_jp1, posl_ij1); - }*/ + for(jj = 1; jj<=4; jj++ ) { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1]; - w1h[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4-ii]*w[jj-1] + - var[2]*w[ii-1]*w[4-jj] + - var[3]*w[4-ii]*w[4-jj]; + index = min(posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1], maxindex); + w1h[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4-ii]*w[jj-1] + + var[2]*w[ii-1]*w[4-jj] + + var[3]*w[4-ii]*w[4-jj]; } } - var[0] = xxl[posl]; + /* xx,yy,zz,u1,v1 and xy can not be interpolated horizontally from kh=align+1 (not vertically aligned) */ + /* Uncommented this code segment. Daniel Roten, December 6 2018 */ + + /* var[0] = xxl[posl]; var[1] = xxl[posl_ip1]; var[2] = xxl[posl_jp1]; var[3] = xxl[posl_ij1]; @@ -2464,11 +2497,11 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1]; - xxh[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4-ii]*w[jj-1] + - var[2]*w[ii-1]*w[4-jj] + - var[3]*w[4-ii]*w[4-jj]; + index = min(posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1], maxindex); + xxh[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4-ii]*w[jj-1] + + var[2]*w[ii-1]*w[4-jj] + + var[3]*w[4-ii]*w[4-jj]; } } @@ -2480,11 +2513,11 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1]; - yyh[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4-ii]*w[jj-1] + - var[2]*w[ii-1]*w[4-jj] + - var[3]*w[4-ii]*w[4-jj]; + index = min(posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1], maxindex); + yyh[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4-ii]*w[jj-1] + + var[2]*w[ii-1]*w[4-jj] + + var[3]*w[4-ii]*w[4-jj]; } } @@ -2496,11 +2529,11 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1]; - zzh[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4-ii]*w[jj-1] + - var[2]*w[ii-1]*w[4-jj] + - var[3]*w[4-ii]*w[4-jj]; + index = min(posh + (ii) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1], maxindex); + zzh[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4-ii]*w[jj-1] + + var[2]*w[ii-1]*w[4-jj] + + var[3]*w[4-ii]*w[4-jj]; } } @@ -2513,11 +2546,11 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii-1) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1]; - u1h[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4-ii]*w[jj-1] + - var[2]*w[ii-1]*w[4-jj] + - var[3]*w[4-ii]*w[4-jj]; + index = min(posh + (ii-1) * d_slice_1[d_i-1] + (jj-1) * d_yline_1[d_i-1], maxindex); + u1h[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4-ii]*w[jj-1] + + var[2]*w[ii-1]*w[4-jj] + + var[3]*w[4-ii]*w[4-jj]; } } @@ -2530,11 +2563,11 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii) * d_slice_1[d_i-1] + (jj) * d_yline_1[d_i-1]; - v1h[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4 - ii]*w[jj-1] + - var[2]*w[ii-1]*w[4 - jj] + - var[3]*w[4-ii]*w[4 - jj]; + index = min(posh + (ii) * d_slice_1[d_i-1] + (jj) * d_yline_1[d_i-1], maxindex); + v1h[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4 - ii]*w[jj-1] + + var[2]*w[ii-1]*w[4 - jj] + + var[3]*w[4-ii]*w[4 - jj]; } } @@ -2547,13 +2580,13 @@ __global__ void intp3d(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *y { for(ii = 1; ii<=4; ii++ ) { - index = posh + (ii-1) * d_slice_1[d_i-1] + (jj) * d_yline_1[d_i-1]; - xyh[index] = var[0]*w[ii-1]*w[jj-1] + - var[1]*w[4 - ii]*w[jj-1] + - var[2]*w[ii-1]*w[4 - jj] + - var[3]*w[4-ii]*w[4 - jj]; + index = min(posh + (ii-1) * d_slice_1[d_i-1] + (jj) * d_yline_1[d_i-1], maxindex); + xyh[index] = var[0]*w[ii-1]*w[jj-1] + + var[1]*w[4 - ii]*w[jj-1] + + var[2]*w[ii-1]*w[4 - jj] + + var[3]*w[4-ii]*w[4 - jj]; } - } + } */ } // if (1>>(xx, yy, zz, xy, xz, yz, r1, r2, r3, r4, r5, r6, u1, v1, w1, lam, mu, qp, qs, dcrjx, dcrjy, dcrjz, coeff, vx1, vx2, ww, wwo, s_i, e_i, s_j, e_j, d_i); @@ -2783,23 +2817,34 @@ void dstrqc2_H(_prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* return; } -void intp3d_H(_prec *u1l, _prec* v1l, _prec *w1l, _prec *xxl, _prec *yyl, _prec *zzl, - _prec *xyl, _prec * xzl, _prec* yzl, - _prec *u1h, _prec *v1h, _prec* w1h, _prec *xxh, _prec *yyh, _prec *zzh, - _prec *xyh, _prec *xzh, _prec* yzh, +extern "C" +void intp3d_H(_prec *u1l, float* v1l, _prec *w1l, _prec *xxl, _prec *yyl, _prec *zzl, + _prec *xyl, _prec * xzl, float* yzl, + _prec *u1h, _prec *v1h, float* w1h, _prec *xxh, _prec *yyh, _prec *zzh, + _prec *xyh, _prec *xzh, float* yzh, int nxtl, int nytl, int rank, cudaStream_t St, int d_i) { /* here, d_i is the grid number of the "low" grid, to which xzl, yzl, and w1l pertain */ dim3 block (BLOCK_SIZE_X, BLOCK_SIZE_Y, 1); dim3 grid ((nxtl+BLOCK_SIZE_X+ngsl2-1)/BLOCK_SIZE_X, (nytl+BLOCK_SIZE_Y+ngsl2-1)/BLOCK_SIZE_Y,1); - CUCHK(cudaFuncSetCacheConfig(intp3d, cudaFuncCachePreferL1)); + /*cudaEvent_t start, stop; + _prec duration = 0;*/ + cudaFuncSetCacheConfig(intp3d, cudaFuncCachePreferL1); //cudaPrintfInit(); + + /*cudaEventCreate(&start); + cudaEventCreate(&stop); + cudaEventRecord(start);*/ intp3d<<>>(u1l,v1l,w1l,xxl,yyl,zzl,xyl,xzl,yzl, u1h,v1h,w1h,xxh,yyh,zzh,xyh,xzh,yzh, rank,d_i); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + /*cudaEventRecord(stop); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&duration, start, stop); + fprintf(stdout, "Time for intp3d: %f ms\n", duration);*/ + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ return; } @@ -2816,7 +2861,7 @@ __device__ _prec bgcaccess(_prec *dsub, int varpos, _prec *buf_L, _prec *buf_R, register int xs_left = -WWL, xs_right = d_nxt[d_i]+4+ngsl2-6; /*check this ! */ register int ys_front = -WWL, ys_back = d_nyt[d_i]+4+ngsl2-6; register int ys_lr = -WWL; - register int zs=align+2, ze=align+7; + register int zs=align+1, ze=align+8; _prec nval; blr_slice_1 = (d_nyt[d_i]+4+ngsl2+2*WWL)*(ze-zs+1); @@ -2851,8 +2896,8 @@ __device__ _prec bgcaccess(_prec *dsub, int varpos, _prec *buf_L, _prec *buf_R, return(nval); } -__global__ void swap(_prec * xxl, _prec* yyl, _prec* zzl, _prec* xyl,_prec* xzl,_prec* yzl,_prec* u1l, _prec* v1l, _prec* w1l, - _prec * xxh, _prec* yyh, _prec* zzh, _prec* xyh, _prec* xzh, _prec* yzh,_prec* u1h, _prec* v1h, _prec* w1h, +__global__ void swap(_prec * xxl, float* yyl, float* zzl, float* xyl,float* xzl,float* yzl,float* u1l, float* v1l, float* w1l, + _prec * xxh, float* yyh, float* zzh, float* xyh, float* xzh, float* yzh,float* u1h, float* v1h, float* w1h, _prec *buf_L, _prec *buf_R, _prec *buf_F, _prec *buf_B, int rank, int d_i) { register int i,j,k,ih,jh,kh,posl,posh,ii,jj,poshij; register _prec sum1, sum2, sum3; @@ -3029,8 +3074,8 @@ __global__ void swap(_prec * xxl, _prec* yyl, _prec* zzl, _prec* xyl,_prec* return; } -__global__ void swap3(_prec * xxl, _prec* yyl, _prec* zzl, _prec* xyl,_prec* xzl,_prec* yzl,_prec* u1l, _prec* v1l, _prec* w1l, - _prec * xxh, _prec* yyh, _prec* zzh, _prec* xyh, _prec* xzh, _prec* yzh,_prec* u1h, _prec* v1h, _prec* w1h, +__global__ void swap3(_prec * xxl, float* yyl, float* zzl, float* xyl,float* xzl,float* yzl,float* u1l, float* v1l, float* w1l, + _prec * xxh, float* yyh, float* zzh, float* xyh, float* xzh, float* yzh,float* u1h, float* v1h, float* w1h, _prec *buf_L, _prec *buf_R, _prec *buf_F, _prec *buf_B, int rank, int d_i) { register int i,j,k,ih,jh,kh,posl,posh,ii,jj,kk,poshij; register _prec sum1, sum2, sum3; @@ -3038,7 +3083,7 @@ __global__ void swap3(_prec * xxl, _prec* yyl, _prec* zzl, _prec* xyl,_prec* register long int b_offset, bpos, bposij; //register int zs=2, ze=7; register double ttlwght2=0., ttlwght3=0., ttlwght4=0.; - register int wwl_kk2=2, wwl_kk3, wwl_kk4; + register int wwl_kk2=1, wwl_kk3, wwl_kk4; /*b_slice_1 = (2+ngsl+WWL)*(ze-zs+1); b_yline_1 = ze-zs+1; @@ -3048,7 +3093,7 @@ __global__ void swap3(_prec * xxl, _prec* yyl, _prec* zzl, _prec* xyl,_prec* j = blockIdx.y*blockDim.y+threadIdx.y+ngsl; if (WWL >= 3) wwl_kk3 = 3; else wwl_kk3=WWL; - if (WWL >= 4) wwl_kk3 = 4; else wwl_kk4=WWL; + if (WWL >= 4) wwl_kk4 = 4; else wwl_kk4=WWL; for(jj=-WWL;jj<=WWL;jj++) for(ii=-WWL;ii<=WWL;ii++){ @@ -3216,20 +3261,21 @@ __global__ void swap3(_prec * xxl, _prec* yyl, _prec* zzl, _prec* xyl,_prec* return; } -void swap_H(_prec * xxl, _prec* yyl, _prec* zzl, _prec* xyl,_prec* xzl,_prec* yzl,_prec* u1l, _prec* v1l, _prec* w1l, - _prec * xxh, _prec* yyh, _prec* zzh, _prec* xyh, _prec* xzh, _prec* yzh,_prec* u1h, _prec* v1h, _prec* w1h, +extern "C" +void swap_H(_prec * xxl, float* yyl, float* zzl, float* xyl,float* xzl,float* yzl,float* u1l, float* v1l, float* w1l, + _prec * xxh, float* yyh, float* zzh, float* xyh, float* xzh, float* yzh,float* u1h, float* v1h, float* w1h, int nxtl,int nytl, _prec *buf_L, _prec *buf_R, _prec *buf_F, _prec *buf_B, int rank, cudaStream_t St, int d_i) { /* here, d_i is the grid number of the "high" grid, to which xxh, yyh, ... pertain */ dim3 block (BLOCK_SIZE_X, BLOCK_SIZE_Y, 1); dim3 grid ((nxtl+BLOCK_SIZE_X+ngsl-1)/(BLOCK_SIZE_X), (nytl+BLOCK_SIZE_Y+ngsl-1)/(BLOCK_SIZE_Y),1); - CUCHK(cudaFuncSetCacheConfig(swap, cudaFuncCachePreferL1)); - //cudaPrintfInit(); + cudaFuncSetCacheConfig(swap, cudaFuncCachePreferL1); + /*cudaPrintfInit();*/ swap3<<>>(xxl,yyl,zzl,xyl,xzl,yzl,u1l,v1l,w1l,xxh,yyh,zzh,xyh,xzh,yzh,u1h,v1h,w1h, buf_L, buf_R, buf_F, buf_B, rank, d_i); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ return; } @@ -3237,7 +3283,7 @@ __global__ void print_nonzero(_prec *array, int nx, int ny, int nz, int d_i) { int ix, iy, iz; - //cuPrintf("nonzeros in grid %d: =====================================================\n", d_i); + cuPrintf("nonzeros in grid %d: =====================================================\n", d_i); for (iz=0; iz>>(array, nx, ny, nz, d_i); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd(); } __global__ void print_nonzero_mat(_prec *array, int nx, int ny, int nz, int d_i, @@ -3269,26 +3315,27 @@ __global__ void print_nonzero_mat(_prec *array, int nx, int ny, int nz, int d_i, { int ix, iy, iz; - //cuPrintf("nonzeros in grid %d: =====================================================\n", d_i); + cuPrintf("nonzeros in grid %d: =====================================================\n", d_i); for (iz=0; iz>>(array, nx, ny, nz, d_i, d1, mu, lam, qp, qs, rank); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd(); } __global__ void print_nan(_prec *array, int nx, int ny, int nz, char *vname) @@ -3302,40 +3349,42 @@ __global__ void print_nan(_prec *array, int nx, int ny, int nz, char *vname) for (ix=0; ix>>(array, nx, ny, nz, vname); - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd(); } -void update_swapzone_buffer_x_H(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec *xy, _prec *xz, _prec *yz, +extern "C" +void update_swapzone_buffer_x_H(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf_L, _prec *buf_R, int nyt, cudaStream_t St1, cudaStream_t St2, int rank_L, int rank_R, int zs, int ze, int d_i) { if(rank_L==-1 && rank_R==-1) return; dim3 block (1, BLOCK_SIZE_Y, 1); dim3 grid (1, (nyt+4+ngsl2+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - //cudaPrintfInit(); + /*cudaPrintfInit();*/ CUCHK(cudaFuncSetCacheConfig(update_swapzone_buffer_x, cudaFuncCachePreferL1)); update_swapzone_buffer_x<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_L, rank_L, Left, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_swapzone_buffer_x<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_R, rank_R, Right, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + CUCHK( cudaGetLastError() ); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ return; } /* buffer exchanged for the swap area */ -__global__ void update_swapzone_buffer_x(_prec* u1, _prec* v1, _prec* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, +__global__ void update_swapzone_buffer_x(float* u1, float* v1, float* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf, int rank, int flag, int zs, int ze, int d_i) { register int i, j, k, pos, bpos; @@ -3405,25 +3454,26 @@ __global__ void update_swapzone_buffer_x(_prec* u1, _prec* v1, _prec* w1, _pr return; } -void update_swapzone_data_x_H(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec *xy, _prec *xz, _prec *yz, +extern "C" +void update_swapzone_data_x_H(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf_L, _prec *buf_R, int nyt, cudaStream_t St1, cudaStream_t St2, int rank_L, int rank_R, int zs, int ze, int d_i) { if(rank_L==-1 && rank_R==-1) return; dim3 block (1, BLOCK_SIZE_Y, 1); dim3 grid (1, (nyt+4+ngsl2+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y,1); - //cudaPrintfInit(); + /*cudaPrintfInit();*/ CUCHK(cudaFuncSetCacheConfig(update_swapzone_buffer_x, cudaFuncCachePreferL1)); update_swapzone_data_x<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_L, rank_L, Left, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_swapzone_data_x<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_R, rank_R, Right, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + CUCHK( cudaGetLastError() ); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ return; } /* copy exchanged buffer data back to swap zone*/ -__global__ void update_swapzone_data_x(_prec* u1, _prec* v1, _prec* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, +__global__ void update_swapzone_data_x(float* u1, float* v1, float* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf, int rank, int flag, int zs, int ze, int d_i) { register int i, j, k, pos, bpos; @@ -3496,25 +3546,26 @@ __global__ void update_swapzone_data_x(_prec* u1, _prec* v1, _prec* w1, _prec return; } -void update_swapzone_buffer_y_H(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec *xy, _prec *xz, _prec *yz, +extern "C" +void update_swapzone_buffer_y_H(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf_F, _prec *buf_B, int nxt, cudaStream_t St1, cudaStream_t St2, int rank_F, int rank_B, int zs, int ze, int d_i) { if(rank_F==-1 && rank_B==-1) return; dim3 block (BLOCK_SIZE_X, 1, 1); dim3 grid ((nxt+BLOCK_SIZE_X-1)/BLOCK_SIZE_X, 1,1); - //cudaPrintfInit(); + /*cudaPrintfInit();*/ CUCHK(cudaFuncSetCacheConfig(update_swapzone_buffer_y, cudaFuncCachePreferL1)); update_swapzone_buffer_y<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_F, rank_F, Front, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_swapzone_buffer_y<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_B, rank_B, Back, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + CUCHK( cudaGetLastError() ); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ return; } /* buffer exchanged for the swap area along Y*/ -__global__ void update_swapzone_buffer_y(_prec* u1, _prec* v1, _prec* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, +__global__ void update_swapzone_buffer_y(float* u1, float* v1, float* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf, int rank, int flag, int zs, int ze, int d_i) { register int i, j, k, pos, bpos; @@ -3584,25 +3635,26 @@ __global__ void update_swapzone_buffer_y(_prec* u1, _prec* v1, _prec* w1, _pr return; } -void update_swapzone_data_y_H(_prec* u1, _prec* v1, _prec* w1, _prec* xx, _prec* yy, _prec* zz, _prec *xy, _prec *xz, _prec *yz, +extern "C" +void update_swapzone_data_y_H(float* u1, float* v1, float* w1, float* xx, float* yy, float* zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf_F, _prec *buf_B, int nxt, cudaStream_t St1, cudaStream_t St2, int rank_F, int rank_B, int zs, int ze, int d_i) { if(rank_F==-1 && rank_B==-1) return; dim3 block (BLOCK_SIZE_X, 1, 1); dim3 grid ((nxt+BLOCK_SIZE_X-1)/BLOCK_SIZE_X, 1,1); - //cudaPrintfInit(); + /*cudaPrintfInit();*/ CUCHK(cudaFuncSetCacheConfig(update_swapzone_buffer_y, cudaFuncCachePreferL1)); update_swapzone_data_y<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_F, rank_F, Front, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; + CUCHK( cudaGetLastError() ); update_swapzone_data_y<<>>(u1, v1, w1, xx, yy, zz, xy, xz, yz, buf_B, rank_B, Back, zs, ze, d_i); - CUCHK(cudaGetLastError()) ; - //cudaPrintfDisplay(stdout, 1); - //cudaPrintfEnd(); + CUCHK( cudaGetLastError() ); + /*cudaPrintfDisplay(stdout, 1); + cudaPrintfEnd();*/ return; } /* copy exchanged buffer data back to swap zone*/ -__global__ void update_swapzone_data_y(_prec* u1, _prec* v1, _prec* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, +__global__ void update_swapzone_data_y(float* u1, float* v1, float* w1, _prec *xx, _prec *yy, _prec *zz, _prec *xy, _prec *xz, _prec *yz, _prec *buf, int rank, int flag, int zs, int ze, int d_i) { register int i, j, k, pos, bpos; @@ -3674,10 +3726,11 @@ __global__ void update_swapzone_data_y(_prec* u1, _prec* v1, _prec* w1, _prec return; } -void addkinsrc_H(int i, int dim, int* psrc, int npsrc, cudaStream_t St, _prec* mu, - _prec* axx, _prec* ayy, _prec* azz, _prec* axz, _prec* ayz, _prec* axy, - _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* yz, _prec* xz, - _prec* mom, double *srcfilt_d, int d_i) +extern "C" +void addkinsrc_H(int i, int dim, int* psrc, int npsrc, cudaStream_t St, float* mu, + float* axx, float* ayy, float* azz, float* axz, float* ayz, float* axy, + float* xx, float* yy, float* zz, float* xy, float* yz, float* xz, + float* mom, double *srcfilt_d, int d_i) { dim3 grid, block; if(npsrc < 256) @@ -3693,12 +3746,12 @@ void addkinsrc_H(int i, int dim, int* psrc, int npsrc, cudaStream_t St, _ cudaError_t cerr; cerr=cudaGetLastError(); if(cerr!=cudaSuccess) printf("CUDA ERROR: addkinsrc before kernel: %s\n",cudaGetErrorString(cerr)); - /*cudaPrintfInit();*/ + //cudaPrintfInit(); addkinsrc_cu<<>>(i, dim, psrc, npsrc, mu, axx, ayy, azz, axz, ayz, axy, xx, yy, zz, xy, yz, xz, mom, srcfilt_d, d_i); cerr=cudaGetLastError(); /*cudaPrintfDisplay(stdout, 1); - CUCHK(cudaPrintfEnd());*/ + cudaPrintfEnd();*/ if(cerr!=cudaSuccess) printf("CUDA ERROR: addkinsrc after kernel: %s\n",cudaGetErrorString(cerr)); return; } @@ -3757,6 +3810,28 @@ __device__ _prec liu(_prec tau, _prec time){ return(stf); } +/* GP 2010, revised based on Liu et al. (2006) source time function. tau = risetime */ +__device__ _prec gp10(_prec tau, _prec time){ + register _prec tau1, tau2, CN, stf; + + tau1 = 0.13 * tau; + tau2 = tau-tau1; + + CN=M_PI / (1.5 * M_PI*tau1 + 1.2*tau1 + 0.2 * M_PI * tau2); + if (time < 0.) + stf = 0.; + else if (time < tau1) + stf = CN*(0.7 - 0.7*cosf(M_PI*time/tau1) + 0.6*sinf(0.5*M_PI*time/tau1)); + else if (time < 2*tau1) + stf = CN*(1.0 - 0.8*cosf(M_PI*time/tau1) + 0.2*cosf(M_PI*(time-tau1)/tau2)); + else if (time < tau) + stf = CN*(0.2 + 0.2*cosf(M_PI*(time-tau1) / tau2)); + else + stf = 0.; + + return(stf); +} + /* 1-D FIR or IIR filter, modeled after scipy implementation of lfilter (Daniel) */ __device__ double lfilter(int order, double *b, double *a, double x, double *d){ register int n; @@ -3772,10 +3847,10 @@ __device__ double lfilter(int order, double *b, double *a, double x, double *d){ return y; } -__global__ void addkinsrc_cu(int i, int dim, int* psrc, int npsrc, _prec* mu, - _prec* axx, _prec* ayy, _prec* azz, _prec* axz, _prec* ayz, _prec* axy, - _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* yz, _prec* xz, - _prec* mom, double *d_srcfilt_d, int d_i) +__global__ void addkinsrc_cu(int i, int dim, int* psrc, int npsrc, float* mu, + float* axx, float* ayy, float* azz, float* axz, float* ayz, float* axy, + float* xx, float* yy, float* zz, float* xy, float* yz, float* xz, + float* mom, double *d_srcfilt_d, int d_i) { register _prec vtst; @@ -3817,14 +3892,16 @@ __global__ void addkinsrc_cu(int i, int dim, int* psrc, int npsrc, _prec* m } else if (stf_type == 2.0f) stf = liu(risetime, atime - ruptime); - else + else if (stf_type == 3.0f) + stf = gp10(risetime, atime - ruptime); + else stf = 0.; if (d_filtorder > 0) - stf = (_prec) lfilter(d_filtorder, d_srcfilt_b, d_srcfilt_a, (double) stf, + stf = (float) lfilter(d_filtorder, d_srcfilt_b, d_srcfilt_a, (double) stf, d_srcfilt_d+j*(d_filtorder+1)); - vtst = (_prec)d_DT/(d_DH[d_i]*d_DH[d_i]*d_DH[d_i]); + vtst = (float)d_DT/(d_DH[d_i]*d_DH[d_i]*d_DH[d_i]); idx = psrc[j*dim] + 1 + ngsl; idy = psrc[j*dim+1] + 1 + ngsl; @@ -3837,14 +3914,14 @@ __global__ void addkinsrc_cu(int i, int dim, int* psrc, int npsrc, _prec* m //cuPrintf("stf: %d %e %e %e %e\n", j, atime, stf, slip, area); //cuPrintf("mom: %d %e\n", j, mom[j]); - //if (j == 0) - /*cuPrintf("addkinsrc_cu: (%d,%d,%d) (%e, %e,%e,%e,%e,%e,%e)\n", idx, idy, idz, - stf, axxt, ayyt, azzt, axzt, ayzt, axyt);*/ - /*cuPrintf("addkinsrc_cu: (%d,%d,%d) (%e, %e)\n", idx, idy, idz, - stf, 1./mu[pos]);*/ - stf *= vtst; + /*if (j == 0) + cuPrintf("addkinsrc_cu: (%d,%d,%d) (%e, %e,%e,%e,%e,%e,%e)\n", idx, idy, idz, + stf, axxt, ayyt, azzt, axzt, ayzt, axyt); + cuPrintf("addkinsrc_cu: (%d,%d,%d) (%e, %e, %e m^2, %f m)\n", idx, idy, idz, + stf, 1./mu[pos], area, slip);*/ + xx[pos] = xx[pos] - stf*axxt; yy[pos] = yy[pos] - stf*ayyt; zz[pos] = zz[pos] - stf*azzt; @@ -3857,10 +3934,11 @@ __global__ void addkinsrc_cu(int i, int dim, int* psrc, int npsrc, _prec* m return; } +extern "C" void addplanesrc_H(int i, int dim, int NST, cudaStream_t St, _prec *mu, _prec *lambda, int ND, int nxt, int nyt, - _prec* axx, _prec* ayy, _prec* azz, - _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* yz, _prec* xz, int d_i){ + float* axx, float* ayy, float* azz, + float* xx, float* yy, float* zz, float* xy, float* yz, float* xz, int d_i){ dim3 grid, block; int nx, ny; @@ -3888,15 +3966,15 @@ void addplanesrc_H(int i, int dim, int NST, cudaStream_t St, addplanesrc_cu<<>>(i, dim, NST, mu, lambda, ND, axx, ayy, azz, xx, yy, zz, xy, yz, xz, d_i); /*CUCHK(cudaPrintfDisplay(stdout, 1)); - CUCHK(cudaPrintfEnd());*/ + cudaPrintfEnd();*/ cerr=cudaGetLastError(); if(cerr!=cudaSuccess) printf("CUDA ERROR: addplanesrc after kernel: %s\n",cudaGetErrorString(cerr)); } -__global__ void addplanesrc_cu(int n, int dim, int NST, _prec* mu, _prec* lambda, int ND, - _prec* axx, _prec* ayy, _prec* azz, - _prec* xx, _prec* yy, _prec* zz, _prec* xy, _prec* yz, _prec* xz, +__global__ void addplanesrc_cu(int n, int dim, int NST, float* mu, float* lambda, int ND, + float* axx, float* ayy, float* azz, + float* xx, float* yy, float* zz, float* xy, float* yz, float* xz, int d_i) { register int j, i, k, pos; @@ -3905,9 +3983,9 @@ __global__ void addplanesrc_cu(int n, int dim, int NST, _prec* mu, _prec* lam i = blockIdx.x*blockDim.x+threadIdx.x + 4; j = blockIdx.y*blockDim.y+threadIdx.y + 4; - vtst = (_prec) d_DT/d_DH[d_i]; + vtst = (float) d_DT/d_DH[d_i]; - k = align + ND + 1; + k = align + ND + 9; //chosing value consistent with CPU code pos = i*d_slice_1[d_i] + j*d_yline_1[d_i] + k; @@ -3924,8 +4002,9 @@ __global__ void addplanesrc_cu(int n, int dim, int NST, _prec* mu, _prec* lam return; } -void velbuffer_H(const float *u1, const float *v1, const float *w1, const float *neta, - float *Bufx, float *Bufy, float *Bufz, float *Bufeta, int NVE, +extern "C" +void velbuffer_H(const _prec *u1, const _prec *v1, const _prec *w1, const _prec *neta, + _prec *Bufx, _prec *Bufy, _prec *Bufz, _prec *Bufeta, int NVE, int nbgx, int nedx, int nskpx, int nbgy, int nedy, int nskpy, int nbgz, int nedz, int nskpz, int rec_nxt, int rec_nyt, int rec_nzt, cudaStream_t St, int FOLLOWBATHY, const int* bathy, int d_i){ @@ -3936,23 +4015,23 @@ void velbuffer_H(const float *u1, const float *v1, const float *w1, const float cudaFuncSetCacheConfig(velbuffer, cudaFuncCachePreferL1); CUCHK(cudaGetLastError()); - /*CUCHK(cudaPrintfInit());*/ velbuffer <<>>(u1, v1, w1, neta, Bufx, Bufy, Bufz, Bufeta, NVE, nbgx, nedx, nskpx, nbgy, nedy, nskpy, nbgz, nedz, nskpz, rec_nxt, rec_nyt, FOLLOWBATHY, bathy, d_i); - /*CUCHK(cudaPrintfDisplay(stdout, 1)); - cudaPrintfEnd();*/ - CUCHK(cudaGetLastError()); + cudaError_t cerr; + CUCHK(cerr=cudaGetLastError()); + + if(cerr!=cudaSuccess) printf("CUDA ERROR: velbuffer_H after kernel: %s\n",cudaGetErrorString(cerr)); } -__global__ void velbuffer(const float *u1, const float *v1, const float *w1, const float *neta, - float *Bufx, float *Bufy, float *Bufz, float *Bufeta, int NVE, +__global__ void velbuffer(const _prec *u1, const _prec *v1, const _prec *w1, const _prec *neta, + _prec *Bufx, _prec *Bufy, _prec *Bufz, _prec *Bufeta, int NVE, int nbgx, int nedx, int nskpx, int nbgy, int nedy, int nskpy, int nbgz, int nedz, int nskpz, int rec_nxt, int rec_nyt, int FOLLOWBATHY, const int *bathy, int d_i) { - register int i, j, k, ko, koz; + register int i, j, k, ko; - int tmpInd, pos, posz, bpos; + int tmpInd, pos, bpos; i = 2+ngsl+nbgx + (blockIdx.x*blockDim.x+threadIdx.x) * nskpx; j = 2+ngsl+nbgy + (blockIdx.y*blockDim.y+threadIdx.y) * nskpy; @@ -3962,39 +4041,13 @@ __global__ void velbuffer(const float *u1, const float *v1, const float *w1, con if (j > 2+ngsl+nedy) return; if (k > nedz) return; -/* if (FOLLOWBATHY && d_i == 0){ + if (FOLLOWBATHY && d_i == 0){ bpos=j*(d_nxt[0]+4+ngsl2)+i; ko=bathy[bpos] - k; } else ko=d_nzt[d_i]+align-1-k; pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+ko; -*/ - - if(d_i > 0) - { - ko=d_nzt[d_i]+align-1-k; - koz=ko; - } - - else - { - if(FOLLOWBATHY == 0) - { - ko=d_nzt[d_i]+align-1-k; - koz=ko-1; - } - else if(FOLLOWBATHY == 1) - { - bpos=j*(d_nxt[0]+4+ngsl2)+i; - ko=bathy[bpos] - k; - if(bathy[bpos] == d_nzt[d_i]+align-1 )koz=ko-1; - if(bathy[bpos] < d_nzt[d_i]+align-1 )koz=ko; - } - } - - pos = i*d_slice_1[d_i]+j*d_yline_1[d_i]+ko; - posz = i*d_slice_1[d_i]+j*d_yline_1[d_i]+koz; tmpInd = (k - nbgz)/nskpz*rec_nxt*rec_nyt + (j-2-ngsl-nbgy)/nskpy*rec_nxt + @@ -4005,7 +4058,12 @@ __global__ void velbuffer(const float *u1, const float *v1, const float *w1, con Bufx[tmpInd] = u1[pos]; Bufy[tmpInd] = v1[pos]; - Bufz[tmpInd] = w1[posz]; + Bufz[tmpInd] = w1[pos]; if (NVE == 3) Bufeta[tmpInd] = neta[pos]; } + + + + + From 3b07f4bff60e9820ad32caab40b5af43571857ea Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 1 Oct 2020 10:56:17 -0700 Subject: [PATCH 09/56] Fix three types of parallel bugs in the source and receiver implementation. 1. Synchronization issues due to overlapping sources (atomics enabled by default) 2. Inconsistencies caused by changing ngsl in previous patch 3. Inconsistencies when using the DM. commit 30a250af75a1802cf59b31d238e4a51874b9a3de Author: Ossian O'Reilly Date: Thu Oct 1 10:44:24 2020 -0700 fix test. commit 609795374d4f755e9b6f6dfe8d9c822fa3085780 Author: Ossian O'Reilly Date: Thu Oct 1 10:39:25 2020 -0700 add option to toggle partitioning mechanism depending on if it is a source or receiver. commit a28d36ecb6d9889fff87f6cb5079acc187244c97 Author: Ossian O'Reilly Date: Wed Sep 30 23:37:19 2020 -0700 Fix DM source receiver parallel bug. Now, mpi-distribute test is broken. commit 2ba3fca0f26dd2d21ab7760d3629b5de7475f44c Author: Ossian O'Reilly Date: Wed Sep 30 22:33:20 2020 -0700 Modify grid bounds check used by source distribution (increase width by 2 points in each direction). 100 x 100 sources work to rounding error. Exact results if interpolation is disabled because then all the overlapping sources add the same value and then the order doesn't matter. commit 9fdbad904c5891658b7bda1ca21a753a31eb534f Author: Ossian O'Reilly Date: Wed Sep 30 20:39:14 2020 -0700 fix parallel bugs that breaks the source implementation on a single grid and even when interpolation is disabled. This point may have introduced parallel bugs in the receivers. Interpolation not yet working. commit 7cf4995b41d431ccaa2f4aca07f49fd52b39d1e8 Author: Ossian O'Reilly Date: Wed Sep 30 17:13:32 2020 -0700 add atomic operations to sources to prevent parallel sync issues when the sources are overlapping. --- include/awp/definitions.h | 1 + include/awp/pmcl3d_cons.h | 5 +---- include/grid/grid_3d.h | 7 ++++++ include/mpi/distribute.h | 2 +- include/topography/sources/source.h | 4 +++- src/grid/grid_3d.c | 32 ++++++++++++++++++++++++++ src/mpi/distribute.c | 35 ++++++++++++++++++++--------- src/topography/receivers/receiver.c | 3 ++- src/topography/sources/source.c | 27 ++++++++++++++++------ src/topography/sources/source.cu | 29 +++++++++++++++++++++--- tests/mpi/test_distribute.c | 6 ++++- 11 files changed, 123 insertions(+), 28 deletions(-) diff --git a/include/awp/definitions.h b/include/awp/definitions.h index 1d1c411..2735998 100644 --- a/include/awp/definitions.h +++ b/include/awp/definitions.h @@ -47,6 +47,7 @@ typedef float prec; #define STR_LEN 2048 + typedef struct { _prec x, y, z; diff --git a/include/awp/pmcl3d_cons.h b/include/awp/pmcl3d_cons.h index 98e1486..e079169 100644 --- a/include/awp/pmcl3d_cons.h +++ b/include/awp/pmcl3d_cons.h @@ -15,10 +15,7 @@ #endif #define align 32 #define loop 1 -// Number of ghost cells is increased from 4 to 8 for topography kernels. -// In the future, it should be possible to keep this number at four, but modify -// the vertical velocity exchange so that 6 points is exchanged instead of 4. -// No modifications necessary to the other velocity components. +// Do not change the number of ghost cells. #define ngsl 4 /* number of ghost cells x loop */ #define ngsl2 8 /* ngsl * 2 */ diff --git a/include/grid/grid_3d.h b/include/grid/grid_3d.h index 521e24e..ec518e1 100644 --- a/include/grid/grid_3d.h +++ b/include/grid/grid_3d.h @@ -131,6 +131,11 @@ grid3_t grid_init_metric_grid(const int3_t size, const int3_t shift, const int3_t boundary2, const _prec gridspacing); +grid3_t grid_init_full_grid(const int3_t size, const int3_t shift, + const int3_t coordinate, const int3_t boundary1, + const int3_t boundary2, + const _prec gridspacing); + /* Initialize grid * * Input arguments: @@ -206,6 +211,8 @@ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_part_y(const _prec *x, const _prec q, const grid1_t grid); /* * Fill the array `out` with the grid point values in the x-direction of a grid diff --git a/include/mpi/distribute.h b/include/mpi/distribute.h index a2957bb..274b70f 100644 --- a/include/mpi/distribute.h +++ b/include/mpi/distribute.h @@ -9,7 +9,7 @@ extern "C" { #endif int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, - const size_t n, grid3_t grid); + const size_t n, grid3_t grid, const int *grid_numbers, const int grid_number, const int is_source); #ifdef __cplusplus } diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index 8952c79..7ec329d 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -22,6 +22,7 @@ // Shift due to inconsistency with the user coordinate (0, 0, 0) defined at a // material grid point, but (0, 0, 0) defined at the shear stress xz in the // internal coordinate system (see shift.c) +//#define SOURCE_OFFSET_X -0.5 #define SOURCE_OFFSET_X -0.5 typedef struct { @@ -80,7 +81,8 @@ void source_init_common(source_t *src, const char *filename, const int ngrids, const f_grid_t *f, const int rank, - const MPI_Comm comm); + const MPI_Comm comm, + const int is_source); MPI_Comm source_communicator(source_t *src, const int rank, const MPI_Comm comm); void source_read(source_t *src, size_t step); diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index 94886c3..0b30b9e 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -101,6 +101,15 @@ grid3_t grid_init_metric_grid(const int3_t size, const int3_t shift, gridspacing); } +grid3_t grid_init_full_grid(const int3_t size, const int3_t shift, + const int3_t coordinate, const int3_t boundary1, + const int3_t boundary2, + const _prec gridspacing) +{ + return grid_init(size, shift, coordinate, boundary1, boundary2, ngsl + 2, + gridspacing); +} + //FIXME: remove this function. It should be replaced by "grid_init" fcn_grid_t fcn_init_grid(const int3_t size, const int3_t shift, const int3_t coordinate, const int padding, @@ -310,6 +319,29 @@ int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid) return SUCCESS; } +int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid) +{ + _prec h = grid.gridspacing; + if ( q - (x[0] - h / 2 - 2 * h) < 0 ) { + return ERR_OUT_OF_BOUNDS_LOWER; + } + if ( q - (x[grid.size - 1] + h / 2 + 2 * h) >= 0) { + return ERR_OUT_OF_BOUNDS_UPPER; + } + return SUCCESS; +} +int grid_in_bounds_part_y(const _prec *x, const _prec q, const grid1_t grid) +{ + _prec h = grid.gridspacing; + if ( q - (x[0] - h / 2 - 1.5 * h) < 0 ) { + return ERR_OUT_OF_BOUNDS_LOWER; + } + if ( q - (x[grid.size - 1] + h / 2 + 1.5 * h) >= 0) { + return ERR_OUT_OF_BOUNDS_UPPER; + } + return SUCCESS; +} + int grid_fill_x(prec *out, const fcn_grid_t grid) { grid1_t grid1 = grid_grid1_x(grid); diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index ede1e91..24ccb28 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -6,9 +6,24 @@ #include #include +/* Distributes indices based on which part of space they belong to. + + indices: (output) indices for a particular query point (qx[i], qy[i]) that lies in `grid`. + nidx: Number of indices written + qx: Array containing query points (x-coordinate) + qy: Array containing query points (y-coordinate) + n: Number of query points (length of qx, qx) + grid: The grid to conduct the search for + grid_numbers: Array that contains the grid number that each query point belongs to (in the + z-direction) + grid_number: The grid number for `grid` + is_source: Set grid bounds based on source partitioning + (disable to set grid bounds for receiver partitioning) + +*/ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, - const size_t n, grid3_t grid) -{ + const size_t n, grid3_t grid, const int *grid_numbers, + const int grid_number, const int is_source) { grid1_t grid_x = grid_grid1_x(grid); grid1_t grid_y = grid_grid1_y(grid); @@ -21,12 +36,11 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, size_t nlocal = 0; - //FIXME: Add checks for PML region, and boundary regions - for (size_t i = 0; i < n; ++i) { - int inbounds_x = grid_in_bounds_ext1(x, qx[i], grid_x); - int inbounds_y = grid_in_bounds_ext1(y, qy[i], grid_y); - if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) { + int inbounds_x = is_source ? grid_in_bounds_part_x(x, qx[i], grid_x) : grid_in_bounds_ext1(x, qx[i], grid_x); + int inbounds_y = is_source ? grid_in_bounds_part_y(y, qy[i], grid_y) : grid_in_bounds_ext1(y, qy[i], grid_y); + if (inbounds_x == SUCCESS && inbounds_y == SUCCESS && + grid_numbers[i] == grid_number) { nlocal++; } } @@ -37,9 +51,10 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, int j = 0; for (size_t i = 0; i < n; ++i) { - int inbounds_x = grid_in_bounds_ext1(x, qx[i], grid_x); - int inbounds_y = grid_in_bounds_ext1(y, qy[i], grid_y); - if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) { + int inbounds_x = is_source ? grid_in_bounds_part_x(x, qx[i], grid_x) : grid_in_bounds_ext1(x, qx[i], grid_x); + int inbounds_y = is_source ? grid_in_bounds_part_y(y, qy[i], grid_y) : grid_in_bounds_ext1(y, qy[i], grid_y); + if (inbounds_x == SUCCESS && inbounds_y == SUCCESS && + grid_numbers[i] == grid_number) { idx[j] = i; j++; } diff --git a/src/topography/receivers/receiver.c b/src/topography/receivers/receiver.c index eaad187..326ab33 100644 --- a/src/topography/receivers/receiver.c +++ b/src/topography/receivers/receiver.c @@ -27,8 +27,9 @@ recv_t receiver_init(const char *filename, strcpy(recv.filename, filename); + const int is_source = 0; source_init_common(&recv, filename, grid_type, input, grids, ngrids, f, - rank, comm); + rank, comm, is_source); if (!recv.use) { return recv; diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index f52237b..91ff72e 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -31,8 +31,9 @@ source_t source_init(const char *file_end, { source_t src; + const int is_source = 1; source_init_common(&src, file_end, grid_type, input, grids, ngrids, f, - rank, comm); + rank, comm, is_source); if (!src.use) { return src; @@ -136,7 +137,7 @@ void source_init_common(source_t *src, const char *filename, const grids_t *grids, const int ngrids, const f_grid_t *f, - const int rank, const MPI_Comm comm) + const int rank, const MPI_Comm comm, const int is_source) { sprintf(src->filename, "%s_%s", input->file, filename); @@ -199,15 +200,18 @@ void source_init_common(source_t *src, const char *filename, free(dm_offset_y); free(dm_offset_z); free(indices); + + for (int j = 0; j < ngrids; ++j) { + grid3_t grid = grids_select(grid_type, &grids[j]); + AWPCHK(dist_indices(&src->indices, &src->length, x, + y, input->length, grid, grid_number, j, is_source)); + } free(grid_number); } - grid3_t grid = grids_select(grid_type, &grids[0]); - AWPCHK(dist_indices(&src->indices, &src->length, x, - y, input->length, grid)); @@ -269,7 +273,7 @@ void source_init_common(source_t *src, const char *filename, _prec lower = 0.0; _prec block_height = 0.0; for (int j = 0; j < ngrids; ++j) { - grid = grids_select(grid_type, &grids[j]); + grid3_t grid = grids_select(grid_type, &grids[j]); grid3_t metric_grid = grid_init_metric_grid( grid.inner_size, grid_node(), grid.coordinate, grid.boundary1, @@ -371,7 +375,7 @@ void source_init_common(source_t *src, const char *filename, if (src->lengths[j] == 0) continue; // Init grid that covers interior and halo regions - grid3_t full_grid = grid_init_metric_grid( + grid3_t full_grid = grid_init_full_grid( grid.inner_size, grid.shift, grid.coordinate, grid.boundary1, grid.boundary2, grid.gridspacing); grid_data_t xyz; @@ -443,6 +447,7 @@ void source_init_common(source_t *src, const char *filename, grid_fill1(z1, z_grid); + if (grid_type == XX) { printf("rank = %d, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", rank, grid.shift.x, grid.shift.y, grid.shift.z, j, @@ -459,7 +464,15 @@ void source_init_common(source_t *src, const char *filename, src->interpolation[j].ix[k], src->interpolation[j].iy[k], src->interpolation[j].iz[k]); + printf("index-x: %d \n", + src->interpolation[j].ix[0]); + print("weights-x: %f %f %f %f \n", + src->interpolation[j].lx[0], + src->interpolation[j].lx[1], + src->interpolation[j].lx[2], + src->interpolation[j].lx[3]); } + } fflush(stdout); //-------------------------------------------------------------------------------- diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index fd44d76..8635b05 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -8,6 +8,12 @@ #include #include + +// Enable or disable atomic operations. If the sources are overlapping, disabling atomics causes +// parallel synchronization issues. Only disable this macro if you know that the sources are +// non-overlapping. +#define USE_ATOMICS 1 + void cusource_add_cartesian_H(const cu_interp_t *I, prec *out, const prec *in, const prec h, const prec dt) { @@ -40,9 +46,16 @@ __global__ void cusource_add_cartesian(prec *out, const prec *in, for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); - out[pos] += - dth * lx[q * num_basis + i] * + prec value = - dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]]; +#if USE_ATOMICS + atomicAdd(&out[pos], value); +#else + out[pos] = value; +#endif + + } } } @@ -90,9 +103,14 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, 1.0 / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k)); size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); - out[pos] += - dth * lx[q * num_basis + i] * + prec value = - dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]] * Ji; +#if USE_ATOMICS + atomicAdd(&out[pos], lx[q * num_basis + i]); +#else + out[pos] = value; +#endif } } } @@ -149,8 +167,13 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, - quad_weight / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k) * _rho(i + ix[q], j + iy[q], iz[q] + k)); size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); - out[pos] += -dth * lx[q * num_basis + i] * + prec value = -dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]] * Ji; +#if USE_ATOMICS + atomicAdd(&out[pos], value); +#else + out[pos] = value; +#endif } } } diff --git a/tests/mpi/test_distribute.c b/tests/mpi/test_distribute.c index 78d4846..18504f7 100644 --- a/tests/mpi/test_distribute.c +++ b/tests/mpi/test_distribute.c @@ -76,6 +76,9 @@ int test_indices(int rank, int size, enum eshift shifttype) prec *qx = malloc(sizeof qx * n); prec *qy = malloc(sizeof qy * n); prec *qz = malloc(sizeof qz * n); + int *grid_numbers = malloc(sizeof grid_numbers * n); + for (int i = 0; i < n; ++i) + grid_numbers[i] = 0.0f; int3_t shift = grid_shift(shifttype); @@ -152,7 +155,8 @@ int test_indices(int rank, int size, enum eshift shifttype) size_t nidx = 0; int *indices; - dist_indices(&indices, &nidx, qx, qy, n, grid); + const int is_source = 0; + dist_indices(&indices, &nidx, qx, qy, n, grid, grid_numbers, 0, is_source); if (coord.x == 0 && coord.y == 0) { int ans[1] = {0}; From 33bc3c204f86519d81936105da1938ef4a53a0b4 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 5 Oct 2020 13:22:56 -0700 Subject: [PATCH 10/56] add print statements for outputting grid numbers. --- src/topography/sources/source.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 91ff72e..426108b 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -156,6 +156,10 @@ void source_init_common(source_t *src, const char *filename, source_find_grid_number(input, grids, grid_number, indices, input->length, ngrids); + for (size_t i = 0; i < input->length; ++i) { + printf("rank = %d, i = %ld, grid_number = %d \n", rank, i, grid_number[i]); + } + // Determine offsets for the DM _prec *dm_offset_x = malloc(sizeof dm_offset_x * ngrids); _prec *dm_offset_y = malloc(sizeof dm_offset_y * ngrids); @@ -240,6 +244,10 @@ void source_init_common(source_t *src, const char *filename, } } + for (size_t i = 0; i < src->length; ++i) { + printf("local, rank = %d, i = %ld, grid_number = %d \n", rank, i, grid_number[i]); + } + // Init arrays that contains local coordinates for (int j = 0; j < ngrids; ++j) { src->global_indices[j] = From a5df04f2c5c4fd81fd922a4aead371eff78b2bf4 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 5 Oct 2020 14:53:07 -0700 Subject: [PATCH 11/56] rewrite distribute function so that it is compatible with multiple blocks. --- include/mpi/distribute.h | 7 +++- src/mpi/distribute.c | 64 ++++++++++++++++++++------------- src/topography/sources/source.c | 27 +++++++++++--- 3 files changed, 67 insertions(+), 31 deletions(-) diff --git a/include/mpi/distribute.h b/include/mpi/distribute.h index 274b70f..22cce2b 100644 --- a/include/mpi/distribute.h +++ b/include/mpi/distribute.h @@ -3,14 +3,19 @@ #include #include +#include #ifdef __cplusplus extern "C" { #endif +# +enum dist_options {DIST_COUNT, DIST_INSERT_INDICES}; int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, - const size_t n, grid3_t grid, const int *grid_numbers, const int grid_number, const int is_source); + const size_t n, const grid3_t grid, const int *grid_numbers, + const int grid_number, const int is_source, const enum dist_options mode); +int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const int is_source); #ifdef __cplusplus } #endif diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index 24ccb28..753cbb6 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -4,6 +4,8 @@ #include #include +#include +#include #include /* Distributes indices based on which part of space they belong to. @@ -13,17 +15,31 @@ qx: Array containing query points (x-coordinate) qy: Array containing query points (y-coordinate) n: Number of query points (length of qx, qx) - grid: The grid to conduct the search for + grids: The grids to conduct the search for grid_numbers: Array that contains the grid number that each query point belongs to (in the z-direction) - grid_number: The grid number for `grid` is_source: Set grid bounds based on source partitioning (disable to set grid bounds for receiver partitioning) + mode: Choose between allocating space for holding the indices (DIST_ALLOCATE), or populate + index array (DIST_INSERT_INDICES) */ + +__inline__ +int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const int is_source) { + int inbounds_x = is_source ? grid_in_bounds_part_x(x, qx, grid_x) : grid_in_bounds_ext1(x, qx, grid_x); + int inbounds_y = is_source ? grid_in_bounds_part_y(y, qy, grid_y) : grid_in_bounds_ext1(y, qy, grid_y); + if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) return 1; + return 0; +} + int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, - const size_t n, grid3_t grid, const int *grid_numbers, - const int grid_number, const int is_source) { + const size_t n, const grid3_t grid, const int *grid_numbers, + const int grid_number, const int is_source, const enum dist_options mode) { + + + size_t nlocal = 0; + grid1_t grid_x = grid_grid1_x(grid); grid1_t grid_y = grid_grid1_y(grid); @@ -33,36 +49,34 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, grid_fill1(x, grid_x); grid_fill1(y, grid_y); - - size_t nlocal = 0; - - for (size_t i = 0; i < n; ++i) { - int inbounds_x = is_source ? grid_in_bounds_part_x(x, qx[i], grid_x) : grid_in_bounds_ext1(x, qx[i], grid_x); - int inbounds_y = is_source ? grid_in_bounds_part_y(y, qy[i], grid_y) : grid_in_bounds_ext1(y, qy[i], grid_y); - if (inbounds_x == SUCCESS && inbounds_y == SUCCESS && - grid_numbers[i] == grid_number) { - nlocal++; - } - } - - *nidx = nlocal; - *indices = malloc(sizeof(indices) * nlocal); - int *idx = *indices; - int j = 0; for (size_t i = 0; i < n; ++i) { - int inbounds_x = is_source ? grid_in_bounds_part_x(x, qx[i], grid_x) : grid_in_bounds_ext1(x, qx[i], grid_x); - int inbounds_y = is_source ? grid_in_bounds_part_y(y, qy[i], grid_y) : grid_in_bounds_ext1(y, qy[i], grid_y); - if (inbounds_x == SUCCESS && inbounds_y == SUCCESS && + //printf("i = %ld bounds = [%d %d], x=[%f %f], y = [%f %f], h=%f, q = [%f %f], grid=%d, grid_numbers[i] = %d \n", i, inbounds_x == SUCCESS, inbounds_y == SUCCESS, x[0], x[grid_x.size-1], y[0], y[grid_y.size-1], grid.gridspacing, qx[i], qy[i], grid_number, grid_numbers[i]); + if (dist_indices_in_bounds(qx[i], qy[i], x, y, grid_x, grid_y, is_source) && grid_numbers[i] == grid_number) { - idx[j] = i; - j++; + printf("i = %ld found in block %d \n", i, grid_number); + switch (mode) { + case DIST_COUNT: + nlocal++; + break; + case DIST_INSERT_INDICES: + (*indices)[j] = i; + j++; + } } } free(x); free(y); + switch (mode) { + case DIST_COUNT: + *nidx = nlocal; + break; + case DIST_INSERT_INDICES: + break; + } + return SUCCESS; } diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 426108b..72df798 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -93,6 +93,8 @@ void source_find_grid_number(const input_t *input, const upper = lower; lower = lower - z1[z_grid.end]; + printf("upper = %f lower = %f, grid = [%f %f %f] \n", upper, lower, z1[0], z1[1], z1[2]); + for (int j = 0; j < length; ++j) { _prec z = input->z[indices[j]]; // Take into account that topography can yield positive @@ -123,7 +125,7 @@ void source_find_grid_number(const input_t *input, const if (grid_number[j] == -1) { fprintf(stderr, "Failed to assign source/receiver id=%d "\ - " to a grid.\n", j); + " to a grid, z=%f.\n", j, input->z[indices[j]]); exit(1); } @@ -153,11 +155,13 @@ void source_init_common(source_t *src, const char *filename, indices[i] = i; } + printf("before assignment!, ngrids = %d \n", ngrids); source_find_grid_number(input, grids, grid_number, indices, input->length, ngrids); + printf("length = %ld \n", input->length); for (size_t i = 0; i < input->length; ++i) { - printf("rank = %d, i = %ld, grid_number = %d \n", rank, i, grid_number[i]); + printf("global, rank = %d, i = %ld, grid_number = %d \n", rank, i, grid_number[i]); } // Determine offsets for the DM @@ -205,11 +209,24 @@ void source_init_common(source_t *src, const char *filename, free(dm_offset_z); free(indices); - for (int j = 0; j < ngrids; ++j) { + src->length = 0; + for (int j = 0; j < ngrids; ++j) { + size_t num_sources_in_block = 0; + grid3_t grid = grids_select(grid_type, &grids[j]); + AWPCHK(dist_indices(&src->indices, &num_sources_in_block, x, y, + input->length, grid, grid_number, j, + is_source, DIST_COUNT)); + src->length += num_sources_in_block; + } + + src->indices = malloc(sizeof(src->indices) * src->length); + for (int j = 0; j < ngrids; ++j) { grid3_t grid = grids_select(grid_type, &grids[j]); - AWPCHK(dist_indices(&src->indices, &src->length, x, - y, input->length, grid, grid_number, j, is_source)); + AWPCHK(dist_indices(&src->indices, &src->length, x, y, + input->length, grid, grid_number, j, + is_source, DIST_INSERT_INDICES)); } + printf("rank = %d, source/receiver count = %ld \n", rank, src->length); free(grid_number); } From 8cd4dbaaa6b81d62a34ce2e61320ee184d2eb48f Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Wed, 7 Oct 2020 14:22:26 -0700 Subject: [PATCH 12/56] remove print statements and add some comments to explain certain steps in the source partitioning function. --- src/mpi/distribute.c | 4 +--- src/topography/sources/source.c | 26 +++++++------------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index 753cbb6..3d03466 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -20,7 +20,7 @@ z-direction) is_source: Set grid bounds based on source partitioning (disable to set grid bounds for receiver partitioning) - mode: Choose between allocating space for holding the indices (DIST_ALLOCATE), or populate + mode: Choose between counting indices in current partition (DIST_COUNT), or populate index array (DIST_INSERT_INDICES) */ @@ -51,10 +51,8 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, int j = 0; for (size_t i = 0; i < n; ++i) { - //printf("i = %ld bounds = [%d %d], x=[%f %f], y = [%f %f], h=%f, q = [%f %f], grid=%d, grid_numbers[i] = %d \n", i, inbounds_x == SUCCESS, inbounds_y == SUCCESS, x[0], x[grid_x.size-1], y[0], y[grid_y.size-1], grid.gridspacing, qx[i], qy[i], grid_number, grid_numbers[i]); if (dist_indices_in_bounds(qx[i], qy[i], x, y, grid_x, grid_y, is_source) && grid_numbers[i] == grid_number) { - printf("i = %ld found in block %d \n", i, grid_number); switch (mode) { case DIST_COUNT: nlocal++; diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 72df798..9fb5c82 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -93,8 +93,6 @@ void source_find_grid_number(const input_t *input, const upper = lower; lower = lower - z1[z_grid.end]; - printf("upper = %f lower = %f, grid = [%f %f %f] \n", upper, lower, z1[0], z1[1], z1[2]); - for (int j = 0; j < length; ++j) { _prec z = input->z[indices[j]]; // Take into account that topography can yield positive @@ -155,15 +153,9 @@ void source_init_common(source_t *src, const char *filename, indices[i] = i; } - printf("before assignment!, ngrids = %d \n", ngrids); source_find_grid_number(input, grids, grid_number, indices, input->length, ngrids); - printf("length = %ld \n", input->length); - for (size_t i = 0; i < input->length; ++i) { - printf("global, rank = %d, i = %ld, grid_number = %d \n", rank, i, grid_number[i]); - } - // Determine offsets for the DM _prec *dm_offset_x = malloc(sizeof dm_offset_x * ngrids); _prec *dm_offset_y = malloc(sizeof dm_offset_y * ngrids); @@ -226,16 +218,10 @@ void source_init_common(source_t *src, const char *filename, input->length, grid, grid_number, j, is_source, DIST_INSERT_INDICES)); } - printf("rank = %d, source/receiver count = %ld \n", rank, src->length); free(grid_number); } - - - - - src->ngrids = ngrids; src->use = src->length > 0 ? 1 : 0; src->steps = input->steps; @@ -251,19 +237,18 @@ void source_init_common(source_t *src, const char *filename, src->lengths[j] = 0; } + // identify grid number for each local source int *grid_number = malloc(sizeof grid_number * src->length); source_find_grid_number(input, grids, grid_number, src->indices, src->length, ngrids); + // count number of local sources for each grid for (size_t i = 0; i < src->length; ++i) { for (int j = 0; j < ngrids; ++j) { if (grid_number[i] == j) src->lengths[j] += 1; } } - for (size_t i = 0; i < src->length; ++i) { - printf("local, rank = %d, i = %ld, grid_number = %d \n", rank, i, grid_number[i]); - } // Init arrays that contains local coordinates for (int j = 0; j < ngrids; ++j) { @@ -278,6 +263,7 @@ void source_init_common(source_t *src, const char *filename, src->type[j] = malloc(sizeof src->type * src->lengths[j]); } + // copy global source data to local source data for (int j = 0; j < ngrids; ++j) { int local_idx = 0; for (size_t i = 0; i < src->length; ++i) { @@ -454,8 +440,8 @@ void source_init_common(source_t *src, const char *filename, } -//------------------------------------------------------------------------------ -//Added by Te-Yang for printing purpose +#ifdef DEBUG_SOURCE +{ grid3_t vel_grid = grid_init_stress_grid( grid.inner_size, grid.shift, grid.coordinate, grid.boundary1, grid.boundary2, grid.gridspacing); @@ -499,6 +485,8 @@ void source_init_common(source_t *src, const char *filename, } } fflush(stdout); +} +#endif //-------------------------------------------------------------------------------- grid_data_free(&xyz); From 6f8f7ae03b4be7fac23a9c6b280e5964c5b34fa6 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Wed, 7 Oct 2020 14:28:49 -0700 Subject: [PATCH 13/56] fix broken test (update client call). --- tests/mpi/test_distribute.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/mpi/test_distribute.c b/tests/mpi/test_distribute.c index 18504f7..7a9a92b 100644 --- a/tests/mpi/test_distribute.c +++ b/tests/mpi/test_distribute.c @@ -156,7 +156,9 @@ int test_indices(int rank, int size, enum eshift shifttype) int *indices; const int is_source = 0; - dist_indices(&indices, &nidx, qx, qy, n, grid, grid_numbers, 0, is_source); + indices = malloc(sizeof(indices) * nidx); + dist_indices(&indices, &nidx, qx, qy, n, grid, grid_numbers, 0, is_source, DIST_COUNT); + dist_indices(&indices, &nidx, qx, qy, n, grid, grid_numbers, 0, is_source, DIST_INSERT_INDICES); if (coord.x == 0 && coord.y == 0) { int ans[1] = {0}; From 1d097a9616966268bca7128e77df149ee5c7f741 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 12 Oct 2020 16:15:32 -0700 Subject: [PATCH 14/56] fix source interpolation in the curvilinear kernel. --- src/topography/sources/source.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 8635b05..8bcfb15 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -107,7 +107,7 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]] * Ji; #if USE_ATOMICS - atomicAdd(&out[pos], lx[q * num_basis + i]); + atomicAdd(&out[pos], value); #else out[pos] = value; #endif From e8d10810e3fbb496fa8338b9660495f8e4cd63c1 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 19 Nov 2020 17:12:16 -0800 Subject: [PATCH 15/56] fix block size for original AWP. --- include/awp/definitions.h | 2 +- include/awp/pmcl3d_cons.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/awp/definitions.h b/include/awp/definitions.h index 2735998..feb477e 100644 --- a/include/awp/definitions.h +++ b/include/awp/definitions.h @@ -3,7 +3,7 @@ #define BLOCK_SIZE_X 2 #define BLOCK_SIZE_Y 2 -#define BLOCK_SIZE_Z 4 +#define BLOCK_SIZE_Z 32 #include diff --git a/include/awp/pmcl3d_cons.h b/include/awp/pmcl3d_cons.h index e079169..059fbc3 100644 --- a/include/awp/pmcl3d_cons.h +++ b/include/awp/pmcl3d_cons.h @@ -1,7 +1,7 @@ #ifndef DEFINITIONS_H #define BLOCK_SIZE_X 2 #define BLOCK_SIZE_Y 2 -#define BLOCK_SIZE_Z 4 +#define BLOCK_SIZE_Z 32 #endif // Set floating-point precision. Make sure to configure both `_prec` and // `_mpi_prec`. From af2d0b48c76a489262e736af4053f332c11b2284 Mon Sep 17 00:00:00 2001 From: hzfmer Date: Fri, 20 Nov 2020 19:19:55 -0500 Subject: [PATCH 16/56] fix a bug in PR-13 to assign receiver/source indices in each partition --- .gitignore | 4 + src/awp/mesh.c | 2 +- src/awp/pmcl3d.c | 5357 ++++++++++++++++--------------- src/mpi/distribute.c | 41 +- src/mpi/io.c | 66 +- src/test/check.c | 2 +- src/topography/sources/source.c | 552 ++-- 7 files changed, 3173 insertions(+), 2851 deletions(-) diff --git a/.gitignore b/.gitignore index bb1c2c0..73531ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ build/* profile/*.[0-9]* profile/*/ +.*/* + +pmcl3d* +!pmcl3d*h diff --git a/src/awp/mesh.c b/src/awp/mesh.c index 61e58f0..6f318c8 100644 --- a/src/awp/mesh.c +++ b/src/awp/mesh.c @@ -1317,7 +1317,7 @@ void inidrpr_hoekbrown_light(int nxt, int nyt, int nzt, int nve, int *coords, } ypos = coords[1] * nyt + j - 2 - ngsl; - fltdist = fabsf((_prec) ypos + 0.5 - (_prec) fltpos) * dh; + fltdist = fabs((_prec) ypos + 0.5 - (_prec) fltpos) * dh; if (fltdist < 225.) { GSI_d = GSI_core; } diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index ec9deb5..637c95e 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -5,7 +5,7 @@ * Author: Jun Zhou * * First Version: Cerjan Mode and Homogenous * ******************************************************************************** -*/ +*/ #include #include #include @@ -34,505 +34,542 @@ #define VERBOSE 1 -// Uncomment this line to allow for gdb to attach to the mpi process with -// rank = 0 +// Uncomment this line to allow for gdb to attach to the mpi process with +// rank = 0 // #define GDB_ATTACH -int main(int argc,char **argv) +int main(int argc, char **argv) { -// variable definition begins - float TMAX, DH[MAXGRIDS], DT, ARBC, PHT; - int NPC, ND, NSRC[MAXGRIDS], NST; - int NVE, NVAR, MEDIASTART, IFAULT, READ_STEP, READ_STEP_GPU; - int NX, NY, NZ[MAXGRIDS], PX, PY, IDYNA, SoCalQ, FOLLOWBATHY; - int NBGX[MAXGRIDS], NEDX[MAXGRIDS], NSKPX[MAXGRIDS]; - int NBGY[MAXGRIDS], NEDY[MAXGRIDS], NSKPY[MAXGRIDS]; - int NBGZ[MAXGRIDS], NEDZ[MAXGRIDS], NSKPZ[MAXGRIDS]; - int nxt[MAXGRIDS], nyt[MAXGRIDS], nzt[MAXGRIDS]; - MPI_Offset displacement[MAXGRIDS]; - float FAC, Q0, EX, FP; - char INSRC[50], INVEL[50], OUT[50], INSRC_I2[50], CHKFILE[50]; - char insrcgrid[52], insrc_i2_grid[50]; - double GFLOPS = 1.0; - double GFLOPS_SUM = 0.0; - Grid3D *u1=NULL, *v1=NULL, *w1=NULL; - Grid3D *d1=NULL, *mu=NULL, *lam=NULL; - Grid3D *xx=NULL, *yy=NULL, *zz=NULL, *xy=NULL, *yz=NULL, *xz=NULL; - Grid3D *r1=NULL, *r2=NULL, *r3=NULL, *r4=NULL, *r5=NULL, *r6=NULL; - Grid3D *qp=NULL, *qs=NULL; - PosInf *tpsrc=NULL; - Grid1D *taxx=NULL, *tayy=NULL, *tazz=NULL, *taxz=NULL, *tayz=NULL, *taxy=NULL; - Grid1D *Bufx=NULL,coeff=NULL; - Grid1D *Bufy=NULL, *Bufz=NULL; - //Plasticity output buffers - Grid1D *Bufeta=NULL, *Bufeta2=NULL; - Grid3D *vx1=NULL, *vx2=NULL, *wwo=NULL, *lam_mu=NULL; - Grid3Dww *ww=NULL; - Grid1D *dcrjx, *dcrjy, *dcrjz; - float **vse, **vpe, **dde; - FILE *fchk; - // plasticity variables - Grid3D *sigma2=NULL; - Grid3D *cohes=NULL, *phi=NULL; - Grid3D *yldfac=NULL, *neta=NULL; - /*Grid3D EPxx=NULL, EPyy=NULL, EPzz=NULL; + // variable definition begins + float TMAX, DH[MAXGRIDS], DT, ARBC, PHT; + int NPC, ND, NSRC[MAXGRIDS], NST; + int NVE, NVAR, MEDIASTART, IFAULT, READ_STEP, READ_STEP_GPU; + int NX, NY, NZ[MAXGRIDS], PX, PY, IDYNA, SoCalQ, FOLLOWBATHY; + int NBGX[MAXGRIDS], NEDX[MAXGRIDS], NSKPX[MAXGRIDS]; + int NBGY[MAXGRIDS], NEDY[MAXGRIDS], NSKPY[MAXGRIDS]; + int NBGZ[MAXGRIDS], NEDZ[MAXGRIDS], NSKPZ[MAXGRIDS]; + int nxt[MAXGRIDS], nyt[MAXGRIDS], nzt[MAXGRIDS]; + MPI_Offset displacement[MAXGRIDS]; + float FAC, Q0, EX, FP; + char INSRC[50], INVEL[50], OUT[50], INSRC_I2[50], CHKFILE[50]; + char insrcgrid[52], insrc_i2_grid[50]; + double GFLOPS = 1.0; + double GFLOPS_SUM = 0.0; + Grid3D *u1 = NULL, *v1 = NULL, *w1 = NULL; + Grid3D *d1 = NULL, *mu = NULL, *lam = NULL; + Grid3D *xx = NULL, *yy = NULL, *zz = NULL, *xy = NULL, *yz = NULL, *xz = NULL; + Grid3D *r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL, *r5 = NULL, *r6 = NULL; + Grid3D *qp = NULL, *qs = NULL; + PosInf *tpsrc = NULL; + Grid1D *taxx = NULL, *tayy = NULL, *tazz = NULL, *taxz = NULL, *tayz = NULL, *taxy = NULL; + Grid1D *Bufx = NULL, coeff = NULL; + Grid1D *Bufy = NULL, *Bufz = NULL; + //Plasticity output buffers + Grid1D *Bufeta = NULL, *Bufeta2 = NULL; + Grid3D *vx1 = NULL, *vx2 = NULL, *wwo = NULL, *lam_mu = NULL; + Grid3Dww *ww = NULL; + Grid1D *dcrjx, *dcrjy, *dcrjz; + float **vse, **vpe, **dde; + FILE *fchk; + // plasticity variables + Grid3D *sigma2 = NULL; + Grid3D *cohes = NULL, *phi = NULL; + Grid3D *yldfac = NULL, *neta = NULL; + /*Grid3D EPxx=NULL, EPyy=NULL, EPzz=NULL; Grid3D EPxy=NULL, EPyz=NULL, EPxz=NULL;*/ - // topography variables - int usetopo = 0; - char INTOPO[IN_FILE_LEN]; - - int usesourcefile = 0; - char SOURCEFILE[IN_FILE_LEN]; - - int userecvfile = 0; - char RECVFILE[IN_FILE_LEN]; - - int useforcefile = 0; - char FORCEFILE[IN_FILE_LEN]; - - int usesgtfile = 0; - char SGTFILE[IN_FILE_LEN]; - -// GPU variables - long int num_bytes; - float** d_d1; - float** d_u1; - float** d_v1; - float** d_w1; - float** d_f_u1; - float** d_f_v1; - float** d_f_w1; - float** d_b_u1; - float** d_b_v1; - float** d_b_w1; - float** d_dcrjx; - float** d_dcrjy; - float** d_dcrjz; - float** d_lam; - float** d_mu; - float** d_qp; - float* d_coeff; - float** d_qs; - float** d_vx1; - float** d_vx2; - int** d_ww; - float** d_wwo; - float** d_xx; - float** d_yy; - float** d_zz; - float** d_xy; - float** d_xz; - float** d_yz; - float** d_r1; - float** d_r2; - float** d_r3; - float** d_r4; - float** d_r5; - float** d_r6; - float** d_lam_mu; - int **d_tpsrc; - float** d_taxx; - float** d_tayy; - float** d_tazz; - float** d_taxz; - float** d_tayz; - float** d_taxy; - - float **d_Bufx, **d_Bufy, **d_Bufz, **d_Bufeta; - // plasticity - float **d_sigma2; - float **d_yldfac,**d_cohes, **d_phi, **d_neta; -// end of GPU variables - int i,j,k,idx,idy,idz; - long int idtmp; - long int tmpInd; - const int maxdim = 3; - float taumax, taumin, tauu; - Grid3D tau=NULL, tau1=NULL, tau2=NULL; - Grid3D weights=NULL; - int npsrc[MAXGRIDS]; - long int nt, cur_step, source_step; - double time_un = 0.0; - double time_init = 0.0; - // time_src and time_mesh measures the time spent - // in source and mesh reading - double time_src = 0.0, time_mesh = 0.0; - // time_gpuio measures the time spent in gpu memory copying for IO - double time_gpuio = 0.0; - double time_gpuio_tmp = 0.0; -// MPI+CUDA variables - cudaError_t cerr = 0; - size_t cmemfree, cmemtotal; - cudaStream_t stream_1, /*stream_1b,*/ stream_2, /*stream_2b,*/ stream_i, stream_i2;; - cudaStream_t stream_o; - int rank, size, err, srcproc[MAXGRIDS], rank_gpu; - int dim[2], period[2], coord[2], reorder; - int x_rank_L = -1, x_rank_R = -1, y_rank_F = -1, y_rank_B = -1; - MPI_Comm MCW, MC1; - MPI_Request request_x[MAXGRIDS][4], request_y[MAXGRIDS][4]; - MPI_Status status_x[MAXGRIDS][4], status_y[MAXGRIDS][4], filestatus; - MPI_File fh; - int maxNX_NY_NZ_WS; - #ifdef NOBGIO - /*int fmtype[3], fptype[3], foffset[3];*/ - int **ones; - MPI_Aint **dispArray; - MPI_Datatype filetype[MAXGRIDS]; - #endif - - int msg_v_size_x[MAXGRIDS], msg_v_size_y[MAXGRIDS], count_x[MAXGRIDS], count_y[MAXGRIDS]; - int xls[MAXGRIDS], xre[MAXGRIDS], xvs[MAXGRIDS], xve[MAXGRIDS], xss1[MAXGRIDS]; - int xse1[MAXGRIDS], xss2[MAXGRIDS], xse2[MAXGRIDS], xss3[MAXGRIDS], xse3[MAXGRIDS]; - int yfs[MAXGRIDS], yfe[MAXGRIDS], ybs[MAXGRIDS], ybe[MAXGRIDS], yls[MAXGRIDS], yre[MAXGRIDS]; - /* Added by Daniel for plasticity computation boundaries */ - int xlsp[MAXGRIDS], xrep[MAXGRIDS], ylsp[MAXGRIDS], yrep[MAXGRIDS]; - float** SL_vel; // Velocity to be sent to Left in x direction (u1,v1,w1) - float** SR_vel; // Velocity to be Sent to Right in x direction (u1,v1,w1) - float** RL_vel; // Velocity to be Recv from Left in x direction (u1,v1,w1) - float** RR_vel; // Velocity to be Recv from Right in x direction (u1,v1,w1) - float** SF_vel; // Velocity to be sent to Front in y direction (u1,v1,w1) - float** SB_vel; // Velocity to be Sent to Back in y direction (u1,v1,w1) - float** RF_vel; // Velocity to be Recv from Front in y direction (u1,v1,w1) - float** RB_vel; // Velocity to be Recv from Back in y direction (u1,v1,w1) - -// variable definition ends - - int tmpSize; - int WRITE_STEP; - int NTISKP; - int rec_NX[MAXGRIDS]; - int rec_NY[MAXGRIDS]; - int rec_NZ[MAXGRIDS]; - int rec_nxt[MAXGRIDS]; - int rec_nyt[MAXGRIDS]; - int rec_nzt[MAXGRIDS]; - int rec_nbgx[MAXGRIDS]; // 0-based indexing, however NBG* is 1-based - int rec_nedx[MAXGRIDS]; // 0-based indexing, however NED* is 1-based - int rec_nbgy[MAXGRIDS]; // 0-based indexing - int rec_nedy[MAXGRIDS]; // 0-based indexing - int rec_nbgz[MAXGRIDS]; // 0-based indexing - int rec_nedz[MAXGRIDS]; // 0-based indexing - char filename[50]; - #ifdef NOBGIO - char filenamebasex[50]; - char filenamebasey[50]; - char filenamebasez[50]; - char filenamebaseeta[50]; - char filenamebaseep[50]; - #endif - - // moving initial stress computation to GPU - float fmajor=0, fminor=0, strike[3], dip[3], Rz[9], RzT[9]; - - // variables for fault boundary condition (Daniel) - int fbc_ext[6], fbc_off[3], fbc_extl[6], fbc_dim[3], fbc_seismio, fbc_tskp=1; - char fbc_pmask[200]; - long int nel[MAXGRIDS]; - - int ranktype=0, size_tot; - MPI_Comm MCT, MCS, MCI; - - /*Daniel - Buffers for exchange of yield factors, same naming as with velocity */ - float **SL_yldfac, **SR_yldfac, **RL_yldfac, **RR_yldfac; - float **SF_yldfac, **SB_yldfac, **RF_yldfac, **RB_yldfac; - float **d_SL_yldfac, **d_SR_yldfac, **d_RL_yldfac, **d_RR_yldfac; - float **d_SF_yldfac, **d_SB_yldfac, **d_RF_yldfac, **d_RB_yldfac; - int *yldfac_msg_size_x, *yldfac_msg_size_y; - long int num_bytes2; - MPI_Request request_x_yldfac[MAXGRIDS][4], request_y_yldfac[MAXGRIDS][4]; - MPI_Status status_x_yldfac[MAXGRIDS][4], status_y_yldfac[MAXGRIDS][4]; - int count_x_yldfac[MAXGRIDS], count_y_yldfac[MAXGRIDS]; - int yls2[MAXGRIDS], yre2[MAXGRIDS]; - - /* DM variables added by Daniel */ - int p; - int ngrids; - int grdfct[MAXGRIDS]; /* Horizontal grid extent with respect to coarsest grid */ - - //int dm = 53; - //int dm = 41; - - /*buffers for overlap zone variables */ - float **SL_swap, **SR_swap, **RL_swap, **RR_swap; - float **SF_swap, **SB_swap, **RF_swap, **RB_swap; - float **d_SL_swap, **d_SR_swap, **d_RL_swap, **d_RR_swap; - float **d_SF_swap, **d_SB_swap, **d_RF_swap, **d_RB_swap; - int *swp_msg_size_x; //*swp_msg_size_x_l; - int *swp_msg_size_y; //*swp_msg_size_y_l; - MPI_Request request_x_swp[MAXGRIDS][4], request_y_swp[MAXGRIDS][4]; - MPI_Status status_x_swp[MAXGRIDS][4], status_y_swp[MAXGRIDS][4]; - int count_x_swp[MAXGRIDS], count_y_swp[MAXGRIDS]; - int intlev[MAXGRIDS], swaplevmin = align + 1, swaplevmax = align + 8, nswaplev; - int grid_output[MAXGRIDS]; - int islowest=0; - - /*computation of moment and magnitude for kinematic source */ - float **mom, **d_mom, tmom=0.0f, gmom, mag; - int n; - - #ifdef SEISMIO - //int ghostx=ngsl+2, ghosty=ngsl+2, ghostz=align; - int ghostx=0, ghosty=0, ghostz=0; - char seism_method[]="mpiio"; - int nx, ny, PZ=1; - int seism_regGridID[MAXGRIDS]; - int seism_filex[MAXGRIDS], seism_filey[MAXGRIDS], seism_filez[MAXGRIDS]; - int seism_fileeta[MAXGRIDS], seism_fileep[MAXGRIDS]; - int one=1; - #endif - - // Variables for filtering of source-time-function (Daniel) - int filtorder=-1; - /* filter parameters b and a, and state variable d */ - double srcfilt_b[MAXFILT], srcfilt_a[MAXFILT], **d_srcfilt_d; - FILE *fltfid; - - int outsize, nout; - time_t time1, time2; - - /* for FOLLOWBATHY option - save surface output on ocean floor */ - int *bathy; - int *d_bathy; - float tmpvs; - -// variable initialization begins - //NZ=(int*) calloc(MAXGRIDS, sizeof(int)); - command(argc, argv, &TMAX, DH, &DT, &ARBC, &PHT, &NPC, &ND, NSRC, &NST, - &NVAR, &NVE, &MEDIASTART, &IFAULT, &READ_STEP, &READ_STEP_GPU, - &NTISKP, &WRITE_STEP, &NX, &NY, NZ, &PX, &PY, NBGX, NEDX, NSKPX, - NBGY, NEDY, NSKPY, NBGZ, NEDZ, NSKPZ, &FAC, &Q0, &EX, &FP, &IDYNA, - &SoCalQ, INSRC, INVEL, OUT, INSRC_I2, CHKFILE, &ngrids, - &FOLLOWBATHY, INTOPO, &usetopo, SOURCEFILE, - &usesourcefile, RECVFILE, &userecvfile, FORCEFILE, &useforcefile, - SGTFILE, &usesgtfile); - - #ifndef SEISMIO - #ifdef NOBGIO - sprintf(filenamebasex,"%s/SX",OUT); - sprintf(filenamebasey,"%s/SY",OUT); - sprintf(filenamebasez,"%s/SZ",OUT); - sprintf(filenamebaseeta,"%s/Eta",OUT); - sprintf(filenamebaseep,"%s/EP",OUT); - #endif - #endif - - MPI_Init(&argc,&argv); - MPI_Comm_rank(MPI_COMM_WORLD,&rank); - MPI_Comm_size(MPI_COMM_WORLD,&size_tot); + // topography variables + int usetopo = 0; + char INTOPO[IN_FILE_LEN]; + + int usesourcefile = 0; + char SOURCEFILE[IN_FILE_LEN]; + + int userecvfile = 0; + char RECVFILE[IN_FILE_LEN]; + + int useforcefile = 0; + char FORCEFILE[IN_FILE_LEN]; + + int usesgtfile = 0; + char SGTFILE[IN_FILE_LEN]; + + // GPU variables + long int num_bytes; + float **d_d1; + float **d_u1; + float **d_v1; + float **d_w1; + float **d_f_u1; + float **d_f_v1; + float **d_f_w1; + float **d_b_u1; + float **d_b_v1; + float **d_b_w1; + float **d_dcrjx; + float **d_dcrjy; + float **d_dcrjz; + float **d_lam; + float **d_mu; + float **d_qp; + float *d_coeff; + float **d_qs; + float **d_vx1; + float **d_vx2; + int **d_ww; + float **d_wwo; + float **d_xx; + float **d_yy; + float **d_zz; + float **d_xy; + float **d_xz; + float **d_yz; + float **d_r1; + float **d_r2; + float **d_r3; + float **d_r4; + float **d_r5; + float **d_r6; + float **d_lam_mu; + int **d_tpsrc; + float **d_taxx; + float **d_tayy; + float **d_tazz; + float **d_taxz; + float **d_tayz; + float **d_taxy; + + float **d_Bufx, **d_Bufy, **d_Bufz, **d_Bufeta; + // plasticity + float **d_sigma2; + float **d_yldfac, **d_cohes, **d_phi, **d_neta; + // end of GPU variables + int i, j, k, idx, idy, idz; + long int idtmp; + long int tmpInd; + const int maxdim = 3; + float taumax, taumin, tauu; + Grid3D tau = NULL, tau1 = NULL, tau2 = NULL; + Grid3D weights = NULL; + int npsrc[MAXGRIDS]; + long int nt, cur_step, source_step; + double time_un = 0.0; + double time_init = 0.0; + // time_src and time_mesh measures the time spent + // in source and mesh reading + double time_src = 0.0, time_mesh = 0.0; + // time_gpuio measures the time spent in gpu memory copying for IO + double time_gpuio = 0.0; + double time_gpuio_tmp = 0.0; + // MPI+CUDA variables + cudaError_t cerr = 0; + size_t cmemfree, cmemtotal; + cudaStream_t stream_1, /*stream_1b,*/ stream_2, /*stream_2b,*/ stream_i, stream_i2; + ; + cudaStream_t stream_o; + int rank, size, err, srcproc[MAXGRIDS], rank_gpu; + int dim[2], period[2], coord[2], reorder; + int x_rank_L = -1, x_rank_R = -1, y_rank_F = -1, y_rank_B = -1; + MPI_Comm MCW, MC1; + MPI_Request request_x[MAXGRIDS][4], request_y[MAXGRIDS][4]; + MPI_Status status_x[MAXGRIDS][4], status_y[MAXGRIDS][4], filestatus; + MPI_File fh; + int maxNX_NY_NZ_WS; +#ifdef NOBGIO + /*int fmtype[3], fptype[3], foffset[3];*/ + int **ones; + MPI_Aint **dispArray; + MPI_Datatype filetype[MAXGRIDS]; +#endif + + int msg_v_size_x[MAXGRIDS], msg_v_size_y[MAXGRIDS], count_x[MAXGRIDS], count_y[MAXGRIDS]; + int xls[MAXGRIDS], xre[MAXGRIDS], xvs[MAXGRIDS], xve[MAXGRIDS], xss1[MAXGRIDS]; + int xse1[MAXGRIDS], xss2[MAXGRIDS], xse2[MAXGRIDS], xss3[MAXGRIDS], xse3[MAXGRIDS]; + int yfs[MAXGRIDS], yfe[MAXGRIDS], ybs[MAXGRIDS], ybe[MAXGRIDS], yls[MAXGRIDS], yre[MAXGRIDS]; + /* Added by Daniel for plasticity computation boundaries */ + int xlsp[MAXGRIDS], xrep[MAXGRIDS], ylsp[MAXGRIDS], yrep[MAXGRIDS]; + float **SL_vel; // Velocity to be sent to Left in x direction (u1,v1,w1) + float **SR_vel; // Velocity to be Sent to Right in x direction (u1,v1,w1) + float **RL_vel; // Velocity to be Recv from Left in x direction (u1,v1,w1) + float **RR_vel; // Velocity to be Recv from Right in x direction (u1,v1,w1) + float **SF_vel; // Velocity to be sent to Front in y direction (u1,v1,w1) + float **SB_vel; // Velocity to be Sent to Back in y direction (u1,v1,w1) + float **RF_vel; // Velocity to be Recv from Front in y direction (u1,v1,w1) + float **RB_vel; // Velocity to be Recv from Back in y direction (u1,v1,w1) + + // variable definition ends + + int tmpSize; + int WRITE_STEP; + int NTISKP; + int rec_NX[MAXGRIDS]; + int rec_NY[MAXGRIDS]; + int rec_NZ[MAXGRIDS]; + int rec_nxt[MAXGRIDS]; + int rec_nyt[MAXGRIDS]; + int rec_nzt[MAXGRIDS]; + int rec_nbgx[MAXGRIDS]; // 0-based indexing, however NBG* is 1-based + int rec_nedx[MAXGRIDS]; // 0-based indexing, however NED* is 1-based + int rec_nbgy[MAXGRIDS]; // 0-based indexing + int rec_nedy[MAXGRIDS]; // 0-based indexing + int rec_nbgz[MAXGRIDS]; // 0-based indexing + int rec_nedz[MAXGRIDS]; // 0-based indexing + char filename[50]; +#ifdef NOBGIO + char filenamebasex[50]; + char filenamebasey[50]; + char filenamebasez[50]; + char filenamebaseeta[50]; + char filenamebaseep[50]; +#endif + + // moving initial stress computation to GPU + float fmajor = 0, fminor = 0, strike[3], dip[3], Rz[9], RzT[9]; + + // variables for fault boundary condition (Daniel) + int fbc_ext[6], fbc_off[3], fbc_extl[6], fbc_dim[3], fbc_seismio, fbc_tskp = 1; + char fbc_pmask[200]; + long int nel[MAXGRIDS]; + + int ranktype = 0, size_tot; + MPI_Comm MCT, MCS, MCI; + + /*Daniel - Buffers for exchange of yield factors, same naming as with velocity */ + float **SL_yldfac, **SR_yldfac, **RL_yldfac, **RR_yldfac; + float **SF_yldfac, **SB_yldfac, **RF_yldfac, **RB_yldfac; + float **d_SL_yldfac, **d_SR_yldfac, **d_RL_yldfac, **d_RR_yldfac; + float **d_SF_yldfac, **d_SB_yldfac, **d_RF_yldfac, **d_RB_yldfac; + int *yldfac_msg_size_x, *yldfac_msg_size_y; + long int num_bytes2; + MPI_Request request_x_yldfac[MAXGRIDS][4], request_y_yldfac[MAXGRIDS][4]; + MPI_Status status_x_yldfac[MAXGRIDS][4], status_y_yldfac[MAXGRIDS][4]; + int count_x_yldfac[MAXGRIDS], count_y_yldfac[MAXGRIDS]; + int yls2[MAXGRIDS], yre2[MAXGRIDS]; + + /* DM variables added by Daniel */ + int p; + int ngrids; + int grdfct[MAXGRIDS]; /* Horizontal grid extent with respect to coarsest grid */ + + //int dm = 53; + //int dm = 41; + + /*buffers for overlap zone variables */ + float **SL_swap, **SR_swap, **RL_swap, **RR_swap; + float **SF_swap, **SB_swap, **RF_swap, **RB_swap; + float **d_SL_swap, **d_SR_swap, **d_RL_swap, **d_RR_swap; + float **d_SF_swap, **d_SB_swap, **d_RF_swap, **d_RB_swap; + int *swp_msg_size_x; //*swp_msg_size_x_l; + int *swp_msg_size_y; //*swp_msg_size_y_l; + MPI_Request request_x_swp[MAXGRIDS][4], request_y_swp[MAXGRIDS][4]; + MPI_Status status_x_swp[MAXGRIDS][4], status_y_swp[MAXGRIDS][4]; + int count_x_swp[MAXGRIDS], count_y_swp[MAXGRIDS]; + int intlev[MAXGRIDS], swaplevmin = align + 1, swaplevmax = align + 8, nswaplev; + int grid_output[MAXGRIDS]; + int islowest = 0; + + /*computation of moment and magnitude for kinematic source */ + float **mom, **d_mom, tmom = 0.0f, gmom, mag; + int n; + +#ifdef SEISMIO + //int ghostx=ngsl+2, ghosty=ngsl+2, ghostz=align; + int ghostx = 0, ghosty = 0, ghostz = 0; + char seism_method[] = "mpiio"; + int nx, ny, PZ = 1; + int seism_regGridID[MAXGRIDS]; + int seism_filex[MAXGRIDS], seism_filey[MAXGRIDS], seism_filez[MAXGRIDS]; + int seism_fileeta[MAXGRIDS], seism_fileep[MAXGRIDS]; + int one = 1; +#endif + + // Variables for filtering of source-time-function (Daniel) + int filtorder = -1; + /* filter parameters b and a, and state variable d */ + double srcfilt_b[MAXFILT], srcfilt_a[MAXFILT], **d_srcfilt_d; + FILE *fltfid; + + int outsize, nout; + time_t time1, time2; + + /* for FOLLOWBATHY option - save surface output on ocean floor */ + int *bathy; + int *d_bathy; + float tmpvs; + + // variable initialization begins + //NZ=(int*) calloc(MAXGRIDS, sizeof(int)); + command(argc, argv, &TMAX, DH, &DT, &ARBC, &PHT, &NPC, &ND, NSRC, &NST, + &NVAR, &NVE, &MEDIASTART, &IFAULT, &READ_STEP, &READ_STEP_GPU, + &NTISKP, &WRITE_STEP, &NX, &NY, NZ, &PX, &PY, NBGX, NEDX, NSKPX, + NBGY, NEDY, NSKPY, NBGZ, NEDZ, NSKPZ, &FAC, &Q0, &EX, &FP, &IDYNA, + &SoCalQ, INSRC, INVEL, OUT, INSRC_I2, CHKFILE, &ngrids, + &FOLLOWBATHY, INTOPO, &usetopo, SOURCEFILE, + &usesourcefile, RECVFILE, &userecvfile, FORCEFILE, &useforcefile, + SGTFILE, &usesgtfile); + +#ifndef SEISMIO +#ifdef NOBGIO + sprintf(filenamebasex, "%s/SX", OUT); + sprintf(filenamebasey, "%s/SY", OUT); + sprintf(filenamebasez, "%s/SZ", OUT); + sprintf(filenamebaseeta, "%s/Eta", OUT); + sprintf(filenamebaseep, "%s/EP", OUT); +#endif +#endif + + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size_tot); #ifdef GDB_ATTACH - if ( rank == 0) { - volatile int i = 0; - printf("Process ID %d is ready for attach\n", getpid()); - fflush(stdout); - while (0 == i) - sleep(5); - } + if (rank == 0) + { + volatile int i = 0; + printf("Process ID %d is ready for attach\n", getpid()); + fflush(stdout); + while (0 == i) + sleep(5); + } #endif - time_init = gethrtime(); - if (rank == 0) fprintf(stdout, "Initializing...\n"); + time_init = gethrtime(); + if (rank == 0) + fprintf(stdout, "Initializing...\n"); #if VERBOSE - if (rank==0) fprintf(stdout, "AWP-ODC-DM: Number of grid resolutions = %d\n", ngrids); + if (rank == 0) + fprintf(stdout, "AWP-ODC-DM: Number of grid resolutions = %d\n", ngrids); +#endif + fflush(stdout); + +#ifndef NOBGIO + if ((size_tot % 3) != 0) + { + if (rank == 0) + fprintf(stderr, "Error. Number of CPUs %d must be divisible by 3.\n", size_tot); + MPI_Finalize(); + return (0); + } + size = size_tot / 3; + + if ((NX % PX) != 0) + { + if (rank == 0) + fprintf(stderr, "NX on grid %d (%d) is not divisible by PX (%d)\n", + ngrids - 1, NX, PX); + MPI_Finalize(); + return (0); + } + + if ((NY % PY) != 0) + { + if (rank == 0) + fprintf(stderr, "NY on grid %d (%d) is not divisible by PY (%d)\n", + ngrids - 1, NY, PY); + MPI_Finalize(); + } + + MPI_Comm_dup(MPI_COMM_WORLD, &MCT); + /* The communicator MCW includes all ranks involved in GPU computations */ + /* colors for MPI_Comm_split: 0=launches kernels; 1=source I/O for IFAULT=4; 2=time series output*/ + if (rank < size) + ranktype = 0; + else if (rank < size * 2) + ranktype = 1; + else + ranktype = 2; + MPI_Comm_split(MCT, ranktype, 0, &MCW); + MPI_Comm_split(MCT, ranktype, 1, &MCS); + MPI_Comm_split(MCT, ranktype, 2, &MCI); + + for (p = 0; p < ngrids; p++) + count_y_yldfac[p] = count_x_yldfac[p] = 0; + + MPI_Barrier(MCT); + + /* Business as usual for these ranks */ + if (ranktype == 0) + { +#else + size = size_tot; + MPI_Comm_dup(MPI_COMM_WORLD, &MCW); #endif - fflush(stdout); - - #ifndef NOBGIO - if ((size_tot % 3) != 0){ - if (rank==0) fprintf(stderr, "Error. Number of CPUs %d must be divisible by 3.\n", size_tot); - MPI_Finalize(); - return(0); - } - size = size_tot / 3; - - if ((NX % PX) != 0) { - if (rank==0) fprintf(stderr, "NX on grid %d (%d) is not divisible by PX (%d)\n", - ngrids-1, NX, PX); - MPI_Finalize(); - return(0); - } - - if ((NY % PY) != 0) { - if (rank==0) fprintf(stderr, "NY on grid %d (%d) is not divisible by PY (%d)\n", - ngrids-1, NY, PY); - MPI_Finalize(); - } - - MPI_Comm_dup(MPI_COMM_WORLD, &MCT ); - /* The communicator MCW includes all ranks involved in GPU computations */ - /* colors for MPI_Comm_split: 0=launches kernels; 1=source I/O for IFAULT=4; 2=time series output*/ - if (rank < size) ranktype=0; - else if (rank < size*2) ranktype=1; - else ranktype=2; - MPI_Comm_split(MCT, ranktype, 0, &MCW); - MPI_Comm_split(MCT, ranktype, 1, &MCS); - MPI_Comm_split(MCT, ranktype, 2, &MCI); - - for (p=0; p-1; p--) grdfct[p] = grdfct[p+1] * 3; - - DH[ngrids-1] = DH[0]; - for (p=0; p -1; p--) + grdfct[p] = grdfct[p + 1] * 3; + + DH[ngrids - 1] = DH[0]; + for (p = 0; p < ngrids; p++) + { + DH[p] = DH[ngrids - 1] / grdfct[p]; + nxt[p] = NX / PX * grdfct[p]; + nyt[p] = NY / PY * grdfct[p]; + } + + for (p = 0; p < ngrids; p++) + { + nzt[p] = NZ[p]; + if ((nzt[p] % BLOCK_SIZE_Z) != 0) + { + if (rank == 0) + { + fprintf(stderr, "NZT for grid %d is not divisble by BLOCK_SIZE_Z.\n", p); + fprintf(stderr, "NZT = %d, BLOCK_SIZE_Z=%d\n", nzt[p], BLOCK_SIZE_Z); + fprintf(stderr, "Aborting. Please change NZT or change BLOCK_SIZE_Z in pmcl3d_cons.h and recompile.\n"); + } + MPI_Finalize(); + return (0); + } + } + + nt = (int)(TMAX / DT) + 1; + dim[0] = PX; + dim[1] = PY; + if (NPC < 2) + { + period[0] = 0; + period[1] = 0; + } + else + { /* Periodic PCs - Daniel */ + period[0] = 1; + period[1] = 1; + } + reorder = 1; + err = MPI_Cart_create(MCW, 2, dim, period, reorder, &MC1); + err = MPI_Cart_shift(MC1, 0, 1, &x_rank_L, &x_rank_R); + err = MPI_Cart_shift(MC1, 1, 1, &y_rank_F, &y_rank_B); + + /*if (x_rank_L == MPI_UNDEFINED) x_rank_L = -1; if (x_rank_R == MPI_UNDEFINED) x_rank_R = -1; if (y_rank_F == MPI_UNDEFINED) y_rank_F = -1; if (y_rank_B == MPI_UNDEFINED) y_rank_B = -1;*/ - if (x_rank_L < 0) x_rank_L = -1; - if (x_rank_R < 0 ) x_rank_R = -1; - if (y_rank_F < 0) y_rank_F = -1; - if (y_rank_B < 0) y_rank_B = -1; - - err = MPI_Cart_coords(MC1, rank, 2, coord); - err = MPI_Barrier(MCW); - // Below line is only for HPGPU4 machine! - //rank_gpu = rank%4; - // Below line is for 1 GPU/node systems or Summit using 1 GPU per resource set - rank_gpu = 0; - CUCHK(cudaSetDevice(rank_gpu)); + if (x_rank_L < 0) + x_rank_L = -1; + if (x_rank_R < 0) + x_rank_R = -1; + if (y_rank_F < 0) + y_rank_F = -1; + if (y_rank_B < 0) + y_rank_B = -1; + + err = MPI_Cart_coords(MC1, rank, 2, coord); + err = MPI_Barrier(MCW); + // Below line is only for HPGPU4 machine! + //rank_gpu = rank%4; + // Below line is for 1 GPU/node systems or Summit using 1 GPU per resource set + rank_gpu = 0; + CUCHK(cudaSetDevice(rank_gpu)); #if VERBOSE -printf("\n\nrank=%d) RS=%d, RSG=%d, NST=%d, IF=%d\n\n\n", -rank, READ_STEP, READ_STEP_GPU, NST, IFAULT); + printf("\n\nrank=%d) RS=%d, RSG=%d, NST=%d, IF=%d\n\n\n", + rank, READ_STEP, READ_STEP_GPU, NST, IFAULT); #endif - for (p=0; p -1 && NEDY[p] > -1 && NEDZ[p] > -1) grid_output[p] = 1; + for (p = 0; p < ngrids; p++) + { + if (p == 0) + { + if (NEDX[p] == -1) + NEDX[p] = NX * grdfct[p]; + if (NEDY[p] == -1) + NEDY[p] = NY * grdfct[p]; + if (NEDZ[p] == -1) + NEDZ[p] = NZ[p]; + grid_output[p] = 1; + } + // make NED's a record point + // for instance if NBGX:NSKPX:NEDX = 1:3:9 + // then we have 1,4,7 but NEDX=7 is better + NEDX[p] = NEDX[p] - (NEDX[p] - NBGX[p]) % NSKPX[p]; + NEDY[p] = NEDY[p] - (NEDY[p] - NBGY[p]) % NSKPY[p]; + NEDZ[p] = NEDZ[p] - (NEDZ[p] - NBGZ[p]) % NSKPZ[p]; + if (NEDX[p] > -1 && NEDY[p] > -1 && NEDZ[p] > -1) + grid_output[p] = 1; #if VERBOSE - fprintf(stdout, "%d: X: %d:%d:%d. Y: %d:%d:%d. Z:%d:%d:%d\n", - p, NBGX[p], NSKPX[p], NEDX[p], NBGY[p], NSKPY[p], NEDY[p], NBGZ[p], NSKPZ[p], NEDZ[p]); - fflush(stdout); + fprintf(stdout, "%d: X: %d:%d:%d. Y: %d:%d:%d. Z:%d:%d:%d\n", + p, NBGX[p], NSKPX[p], NEDX[p], NBGY[p], NSKPY[p], NEDY[p], NBGZ[p], NSKPZ[p], NEDZ[p]); + fflush(stdout); #endif - } - #ifndef SEISMIO - // number of recording points in total - for (p=0; prec_NY[p]?rec_NX[p]:rec_NY[p]); - maxNX_NY_NZ_WS = (maxNX_NY_NZ_WS>rec_NZ[p]?maxNX_NY_NZ_WS:rec_NZ[p]); - maxNX_NY_NZ_WS = (maxNX_NY_NZ_WS>WRITE_STEP?maxNX_NY_NZ_WS:WRITE_STEP); - ones[p]=(int*) calloc(maxNX_NY_NZ_WS, sizeof(int)); - for(i=0;i rec_NY[p] ? rec_NX[p] : rec_NY[p]); + maxNX_NY_NZ_WS = (maxNX_NY_NZ_WS > rec_NZ[p] ? maxNX_NY_NZ_WS : rec_NZ[p]); + maxNX_NY_NZ_WS = (maxNX_NY_NZ_WS > WRITE_STEP ? maxNX_NY_NZ_WS : WRITE_STEP); + ones[p] = (int *)calloc(maxNX_NY_NZ_WS, sizeof(int)); + for (i = 0; i < maxNX_NY_NZ_WS; ++i) + ones[p][i] = 1; + dispArray[p] = (MPI_Aint *)calloc(maxNX_NY_NZ_WS, sizeof(MPI_Aint)); + + err = MPI_Type_contiguous(rec_nxt[p], MPI_FLOAT, &filetype[p]); + err = MPI_Type_commit(&filetype[p]); + for (i = 0; i < rec_nyt[p]; i++) + { + dispArray[p][i] = sizeof(float); + dispArray[p][i] = dispArray[p][i] * rec_NX[p] * i; + } + err = MPI_Type_create_hindexed(rec_nyt[p], ones[p], dispArray[p], filetype[p], &filetype[p]); + err = MPI_Type_commit(&filetype[p]); + for (i = 0; i < rec_nzt[p]; i++) + { + dispArray[p][i] = sizeof(float); + dispArray[p][i] = dispArray[p][i] * rec_NY[p] * rec_NX[p] * i; + } + err = MPI_Type_create_hindexed(rec_nzt[p], ones[p], dispArray[p], filetype[p], &filetype[p]); + err = MPI_Type_commit(&filetype[p]); + for (i = 0; i < WRITE_STEP; i++) + { + dispArray[p][i] = sizeof(float); + dispArray[p][i] = dispArray[p][i] * rec_NZ[p] * rec_NY[p] * rec_NX[p] * i; + } + err = MPI_Type_create_hindexed(WRITE_STEP, ones[p], dispArray[p], filetype[p], &filetype[p]); + err = MPI_Type_commit(&filetype[p]); + MPI_Type_size(filetype[p], &tmpSize); #if VERBOSE - if(rank==0) printf("filetype size grid %d (supposedly=rec_nxt*nyt*nzt*WS*4=%ld) =%d\n", - p, rec_nxt[p]*rec_nyt[p]*rec_nzt[p]*WRITE_STEP*sizeof(float),tmpSize); + if (rank == 0) + printf("filetype size grid %d (supposedly=rec_nxt*nyt*nzt*WS*4=%ld) =%d\n", + p, rec_nxt[p] * rec_nyt[p] * rec_nzt[p] * WRITE_STEP * sizeof(float), tmpSize); #endif + } - } - - /* + /* fmtype[0] = WRITE_STEP; fmtype[1] = NY; fmtype[2] = NX; @@ -545,752 +582,856 @@ rank, READ_STEP, READ_STEP_GPU, NST, IFAULT); err = MPI_Type_create_subarray(3, fmtype, fptype, foffset, MPI_ORDER_C, MPI_FLOAT, &filetype); err = MPI_Type_commit(&filetype);*/ - #endif - - #else - err = 0; - // 2 <= maxdim <= 3 - for (p=0; p 0){ - MPI_Bcast(srcfilt_b, filtorder+1, MPI_DOUBLE, 0, MCW); - MPI_Bcast(srcfilt_a, filtorder+1, MPI_DOUBLE, 0, MCW); - } - - SetDeviceFilterParameters(filtorder, srcfilt_b, srcfilt_a); - - tpsrc = (PosInf*) calloc(ngrids, sizeof(PosInf)); - taxx = (Grid1D*) calloc(ngrids, sizeof(Grid1D)); - tayy = (Grid1D*) calloc(ngrids, sizeof(Grid1D)); - tazz = (Grid1D*) calloc(ngrids, sizeof(Grid1D)); - taxy = (Grid1D*) calloc(ngrids, sizeof(Grid1D)); - taxz = (Grid1D*) calloc(ngrids, sizeof(Grid1D)); - tayz = (Grid1D*) calloc(ngrids, sizeof(Grid1D)); - - for (p=0; p 0) { - sprintf(insrcgrid, "%s_%d", INSRC, p); - sprintf(insrc_i2_grid, "%s_%d", INSRC_I2, p); + } + } + MPI_Bcast(&filtorder, 1, MPI_INT, 0, MCW); + fflush(stdout); + + if (filtorder > 0) + { + MPI_Bcast(srcfilt_b, filtorder + 1, MPI_DOUBLE, 0, MCW); + MPI_Bcast(srcfilt_a, filtorder + 1, MPI_DOUBLE, 0, MCW); + } + + SetDeviceFilterParameters(filtorder, srcfilt_b, srcfilt_a); + + tpsrc = (PosInf *)calloc(ngrids, sizeof(PosInf)); + taxx = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + tayy = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + tazz = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + taxy = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + taxz = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + tayz = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + + for (p = 0; p < ngrids; p++) + { + npsrc[p] = 0; + tpsrc[p] = NULL; + taxx[p] = tayy[p] = tazz[p] = taxy[p] = taxz[p] = tayz[p] = NULL; + } + + if (IFAULT == 5) + { + if (rank == 0) + fprintf(stdout, "Using IFAULT=5: kinematic source.\n"); + if ((NST != 2) || (READ_STEP != 2)) + { + if (rank == 0) + fprintf(stderr, "IFAULT=5 requires NST = READ_STEP =2.\nQuitting."); + MPI_Finalize(); + return (-1); + } + } + + if (IFAULT < 3 || IFAULT == 5) + { + for (p = 0; p < ngrids; p++) + { + if (NSRC[p] > 0) + { + sprintf(insrcgrid, "%s_%d", INSRC, p); + sprintf(insrc_i2_grid, "%s_%d", INSRC_I2, p); #if VERBOSE - fprintf(stdout, "opening %s\n", insrcgrid); + fprintf(stdout, "opening %s\n", insrcgrid); #endif - err = inisource(rank, IFAULT, NSRC[p], READ_STEP, NST, srcproc+p, NZ[p], MCW, nxt[p], nyt[p], nzt[p], - coord, maxdim, npsrc+p, tpsrc+p, taxx+p, tayy+p, tazz+p, taxz+p, tayz+p, taxy+p, insrcgrid, insrc_i2_grid); - } - else srcproc[p] = -1; - } - } - else if(IFAULT == 4){ - err = read_src_ifault_4(rank, READ_STEP, - INSRC, maxdim, coord, NZ[0], - nxt[0], nyt[0], nzt[0], - &npsrc[0], &srcproc[0], - &tpsrc[0], &taxx[0], &tayy[0], &tazz[0], 1, - fbc_ext, fbc_off, fbc_pmask, fbc_extl, fbc_dim, - &fbc_seismio, &fbc_tskp, NST, size); - } - - if (IFAULT == 5){ - mom=(float**) calloc(ngrids, sizeof(float*)); - d_mom=(float**) calloc(ngrids, sizeof(float*)); - for (p=0; p 0){ - for (p=0; p 0 for IFAULT=6.\n", NST); - MPI_Finalize(); - } - for (p=0; p 0) + { + for (p = 0; p < ngrids; p++) + { + num_bytes = npsrc[p] * (filtorder + 1) * sizeof(double); + CUCHK(cudaMalloc((void **)&d_srcfilt_d[p], num_bytes)); + CUCHK(cudaMemset(d_srcfilt_d[p], 0., num_bytes)); + } + } + } + + if (IFAULT == 6) + { + if (rank == 0) + fprintf(stdout, "Using plane wave input at grid position %d in grid %d\n", NZ[ngrids - 1] - ND - 1, ngrids - 1); + if (READ_STEP != NST) + { + if (rank == 0) + fprintf(stderr, "Error. READ_STEP should be equal NST for IFAULT=6\n"); + MPI_Finalize(); + } + if (NST < 1) + { + if (rank == 0) + fprintf(stderr, "Error. NST=%d, but should be > 0 for IFAULT=6.\n", NST); + MPI_Finalize(); + } + for (p = 0; p < ngrids - 1; p++) + srcproc[p] = -1; + srcproc[ngrids - 1] = rank; + err = ini_plane_wave(rank, MCW, INSRC, NST, taxx + ngrids - 1, tayy + ngrids - 1, tazz + ngrids - 1); + if (rank == 0) + fprintf(stdout, "taxx[%d]=%e\n", NST - 1, taxx[ngrids - 1][NST - 1]); + } + + if (err) + { + printf("source initialization failed\n"); + return -1; + } + time_src += gethrtime(); #if VERBOSE - if(rank==0) printf("After inisource. Time elapsed (seconds): %lf\n", time_src); - fflush(stdout); + if (rank == 0) + printf("After inisource. Time elapsed (seconds): %lf\n", time_src); + fflush(stdout); #endif - d_tpsrc = (int**) calloc(ngrids, sizeof(int*)); - d_taxx = (float**) calloc(ngrids, sizeof(float*)); - d_tayy = (float**) calloc(ngrids, sizeof(float*)); - d_tazz = (float**) calloc(ngrids, sizeof(float*)); - d_taxy = (float**) calloc(ngrids, sizeof(float*)); - d_taxz = (float**) calloc(ngrids, sizeof(float*)); - d_tayz = (float**) calloc(ngrids, sizeof(float*)); - - for (p=0; p 0) { - corrected=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], d1[p], d1[p-1], p, p-1, "d1"); - corrected+=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], mu[p], mu[p-1], p, p-1, "mu"); - corrected+=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], lam[p], lam[p-1], p, p-1, "lam"); - corrected+=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], qp[p], qp[p-1], p, p-1, "qp"); - corrected+=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], qs[p], qs[p-1], p, p-1, "qs"); - if (corrected > 0) fprintf(stdout, "Warning: Inconsistent material constants between mesh %d and %d corrected.\n", p-1, p); - } - - } - fflush(stdout); - - if (FOLLOWBATHY == 1) { - bathy = (int*) calloc((nxt[0]+4+ngsl2)*(nyt[0]+4+ngsl2), sizeof(int)); - //for (i=0; i align; k--){ - //if (mu[0][i][j][k] < 1.e7) { - tmpvs=sqrt(1./(mu[0][i][j][k] * d1[0][i][j][k])); - if (tmpvs > 0.001f){ - //bathy[i][j] = k; - int pos=j*(nxt[0]+4+ngsl2)+i; - bathy[pos] = k; - fprintf(bathyfid, "%d %d %d %e\n", i, j, k, tmpvs); - break; - }}}} - fclose(bathyfid); - - num_bytes = sizeof(int)*(nxt[0]+4+ngsl2)*(nyt[0]+4+ngsl2); - CUCHK(cudaMalloc((void**) &d_bathy, num_bytes)); - CUCHK(cudaMemcpy(d_bathy, bathy, num_bytes, cudaMemcpyHostToDevice)); - } - - time_mesh += gethrtime(); + fflush(stdout); + vpe = (float **)calloc(ngrids, sizeof(float *)); + vse = (float **)calloc(ngrids, sizeof(float *)); + dde = (float **)calloc(ngrids, sizeof(float *)); + for (p = 0; p < ngrids; p++) + { + char INVEL2[52]; + int corrected; + sprintf(INVEL2, "%s_%d", INVEL, p); + //if (rank==0) fprintf(stdout, "opening %s\n", INVEL2); + vpe[p] = (float *)calloc(2, sizeof(float)); + vse[p] = (float *)calloc(2, sizeof(float)); + dde[p] = (float *)calloc(2, sizeof(float)); + inimesh(rank, MEDIASTART, d1[p], mu[p], lam[p], qp[p], qs[p], &taumax, &taumin, tau, + weights, coeff, NVAR, FP, FAC, Q0, EX, + nxt[p], nyt[p], nzt[p], PX, PY, NX * grdfct[p], NY * grdfct[p], nzt[p], coord, MCW, IDYNA, NVE, + SoCalQ, INVEL2, vse[p], vpe[p], dde[p]); + if (p > 0) + { + corrected = checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], d1[p], d1[p - 1], p, p - 1, "d1"); + corrected += checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], mu[p], mu[p - 1], p, p - 1, "mu"); + corrected += checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], lam[p], lam[p - 1], p, p - 1, "lam"); + corrected += checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], qp[p], qp[p - 1], p, p - 1, "qp"); + corrected += checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], qs[p], qs[p - 1], p, p - 1, "qs"); + if (corrected > 0) + fprintf(stdout, "Warning: Inconsistent material constants between mesh %d and %d corrected.\n", p - 1, p); + } + } + fflush(stdout); + + if (FOLLOWBATHY == 1) + { + bathy = (int *)calloc((nxt[0] + 4 + ngsl2) * (nyt[0] + 4 + ngsl2), sizeof(int)); + //for (i=0; i align; k--) + { + //if (mu[0][i][j][k] < 1.e7) { + tmpvs = sqrt(1. / (mu[0][i][j][k] * d1[0][i][j][k])); + if (tmpvs > 0.001f) + { + //bathy[i][j] = k; + int pos = j * (nxt[0] + 4 + ngsl2) + i; + bathy[pos] = k; + fprintf(bathyfid, "%d %d %d %e\n", i, j, k, tmpvs); + break; + } + } + } + } + fclose(bathyfid); + + num_bytes = sizeof(int) * (nxt[0] + 4 + ngsl2) * (nyt[0] + 4 + ngsl2); + CUCHK(cudaMalloc((void **)&d_bathy, num_bytes)); + CUCHK(cudaMemcpy(d_bathy, bathy, num_bytes, cudaMemcpyHostToDevice)); + } + + time_mesh += gethrtime(); #if VERBOSE - if(rank==0) printf("After inimesh. Time elapsed (seconds): %lf\n", time_mesh); + if (rank == 0) + printf("After inimesh. Time elapsed (seconds): %lf\n", time_mesh); #endif - fflush(stdout); - if(rank==0) - writeCHK(CHKFILE, NTISKP, DT, DH, nxt, nyt, nzt, - nt, ARBC, NPC, NVE, FAC, Q0, EX, FP, vse, vpe, dde, ngrids); - - for (p=0; p 1) && (IFAULT < 4 || IFAULT == 5)){ - fprintf(stdout, "removing plasticity from source nodes\n"); - for (p=0; p=0) && (xi < (nxt[0] + ngsl2 +1))) dox = 1; - if ((yi>=0) && (yi < (nyt[0] + ngsl2 +1))) doy = 1; - if ((zi>=0) && (yi < (nzt[0] + ngsl2 +1))) doz = 1; - if ((dox && doy) && doz ) cohes[p][xi][yi][zi]=1.e18; - } - } - } - } - } - fprintf(stdout, "done\n"); - } - MPI_Barrier(MCW); - - - vx1 = (Grid3D*) calloc(ngrids, sizeof(Grid3D)); - vx2 = (Grid3D*) calloc(ngrids, sizeof(Grid3D)); - ww = (Grid3Dww*) calloc(ngrids, sizeof(Grid3Dww)); - wwo = (Grid3D*) calloc(ngrids, sizeof(Grid3D)); - - d_lam_mu = (float**) calloc(ngrids, sizeof(float*)); - - for (p=0; p 0) { - int corrected; - corrected=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], vx1[p], vx1[p-1], p, p-1, "vx1"); - corrected+=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], vx2[p], vx2[p-1], p, p-1, "vx2"); - corrected+=checkmesh(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], wwo[p], wwo[p-1], p, p-1, "wwo"); - corrected+=checkmesh_ww(nxt[p], nyt[p], nzt[p], nxt[p-1], nyt[p-1], nzt[p-1], ww[p], ww[p-1], p, p-1, "ww"); - if (corrected > 0) fprintf(stdout, "Warning: Inconsistent texture variables between mesh %d and %d corrected.\n", - p-1, p); - } - } - - - Delloc3D(tau); - Delloc3D(tau1); - Delloc3D(tau2); - } + float t_xl, t_xl2m; + t_xl = 1.0 / lam[p][i][j][nzt[p] + align - 1]; + t_xl2m = 2.0 / mu[p][i][j][nzt[p] + align - 1] + t_xl; + lam_mu[p][i][j][0] = t_xl / t_xl2m; + } + + if (NVE == 3) + { + printf("%d) Computing initial stress\n", rank); + inidrpr_hoekbrown_light(nxt[p], nyt[p], nzt[p], NVE, coord, DH[p], rank, mu[p], lam[p], d1[p], + sigma2[p], cohes[p], phi[p], &fmajor, &fminor, strike, dip, MCW, p); + rotation_matrix(strike, dip, Rz, RzT); + } + } + fflush(stdout); + + /*set a zone without plastic yielding around source nodes*/ + MPI_Barrier(MCW); + if ((NVE > 1) && (IFAULT < 4 || IFAULT == 5)) + { + fprintf(stdout, "removing plasticity from source nodes\n"); + for (p = 0; p < ngrids; p++) + { + for (j = 0; j < npsrc[p]; j++) + { + idx = tpsrc[p][j * maxdim] + 1 + ngsl; + idy = tpsrc[p][j * maxdim + 1] + 1 + ngsl; + idz = tpsrc[p][j * maxdim + 2] + align - 1; + int xi, yi, zi; + int dox, doy, doz; + for (xi = idx - 1; xi < idx + 2; xi++) + { + for (yi = idy - 2; yi < idy + 2; yi++) + { // because we are adding slip on two sides of the fault + for (zi = idz - 1; zi < idz + 2; zi++) + { + dox = doy = doz = 0; + if ((xi >= 0) && (xi < (nxt[0] + ngsl2 + 1))) + dox = 1; + if ((yi >= 0) && (yi < (nyt[0] + ngsl2 + 1))) + doy = 1; + if ((zi >= 0) && (yi < (nzt[0] + ngsl2 + 1))) + doz = 1; + if ((dox && doy) && doz) + cohes[p][xi][yi][zi] = 1.e18; + } + } + } + } + } + fprintf(stdout, "done\n"); + } + MPI_Barrier(MCW); + + vx1 = (Grid3D *)calloc(ngrids, sizeof(Grid3D)); + vx2 = (Grid3D *)calloc(ngrids, sizeof(Grid3D)); + ww = (Grid3Dww *)calloc(ngrids, sizeof(Grid3Dww)); + wwo = (Grid3D *)calloc(ngrids, sizeof(Grid3D)); + + d_lam_mu = (float **)calloc(ngrids, sizeof(float *)); + + for (p = 0; p < ngrids; p++) + { + num_bytes = sizeof(float) * (nxt[p] + 4 + ngsl2) * (nyt[p] + 4 + ngsl2); + CUCHK(cudaMalloc((void **)&d_lam_mu[p], num_bytes)); + CUCHK(cudaMemcpy(d_lam_mu[p], &lam_mu[p][0][0][0], num_bytes, cudaMemcpyHostToDevice)); + + vx1[p] = Alloc3D(nxt[p] + 4 + ngsl2, nyt[p] + 4 + ngsl2, nzt[p] + 2 * align); + vx2[p] = Alloc3D(nxt[p] + 4 + ngsl2, nyt[p] + 4 + ngsl2, nzt[p] + 2 * align); + ww[p] = Alloc3Dww(nxt[p] + 4 + ngsl2, nyt[p] + 4 + ngsl2, nzt[p] + 2 * align); + wwo[p] = Alloc3D(nxt[p] + 4 + ngsl2, nyt[p] + 4 + ngsl2, nzt[p] + 2 * align); + } + + //fprintf(stdout, "sizeof Grid1D: %ld, sizeof Grid1D*: %ld\n", sizeof(Grid1D), sizeof(Grid1D*)); + dcrjx = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + dcrjy = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + dcrjz = (Grid1D *)calloc(ngrids, sizeof(Grid1D)); + if ((NPC == 0) || (NPC == 2)) + { + for (p = 0; p < ngrids; p++) + { + dcrjx[p] = Alloc1D(nxt[p] + 4 + ngsl2); + dcrjy[p] = Alloc1D(nyt[p] + 4 + ngsl2); + dcrjz[p] = Alloc1D(nzt[p] + 2 * align); + + for (i = 0; i < nxt[p] + 4 + ngsl2; i++) + dcrjx[p][i] = 1.0; + for (j = 0; j < nyt[p] + 4 + ngsl2; j++) + dcrjy[p][j] = 1.0; + for (k = 0; k < nzt[p] + 2 * align; k++) + dcrjz[p][k] = 1.0; + + if (p == ngrids - 1) + islowest = 1; + else + islowest = 0; + inicrj(ARBC, coord, nxt[p], nyt[p], nzt[p], NX * grdfct[p], NY * grdfct[p], ND * grdfct[p], dcrjx[p], dcrjy[p], dcrjz[p], islowest, NPC); + + /*DM: disable ABCs at bottom unless it's the lowest grid*/ + //if (p < ngrids-1) for(k=0;k 0) + { + int corrected; + corrected = checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], vx1[p], vx1[p - 1], p, p - 1, "vx1"); + corrected += checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], vx2[p], vx2[p - 1], p, p - 1, "vx2"); + corrected += checkmesh(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], wwo[p], wwo[p - 1], p, p - 1, "wwo"); + corrected += checkmesh_ww(nxt[p], nyt[p], nzt[p], nxt[p - 1], nyt[p - 1], nzt[p - 1], ww[p], ww[p - 1], p, p - 1, "ww"); + if (corrected > 0) + fprintf(stdout, "Warning: Inconsistent texture variables between mesh %d and %d corrected.\n", + p - 1, p); + } + } + + Delloc3D(tau); + Delloc3D(tau1); + Delloc3D(tau2); + } #if VERBOSE - if(rank==0) printf("Allocate device media pointers and copy.\n"); + if (rank == 0) + printf("Allocate device media pointers and copy.\n"); #endif - fflush(stdout); - d_d1 = (float**) calloc(ngrids, sizeof(float*)); - d_lam = (float**) calloc(ngrids, sizeof(float*)); - d_mu = (float**) calloc(ngrids, sizeof(float*)); - d_qp = (float**) calloc(ngrids, sizeof(float*)); - d_qs = (float**) calloc(ngrids, sizeof(float*)); - - d_vx1 = (float**) calloc(ngrids, sizeof(float*)); - d_vx2 = (float**) calloc(ngrids, sizeof(float*)); - d_ww = (int**) calloc(ngrids, sizeof(int*)); - d_wwo = (float**) calloc(ngrids, sizeof(float*)); - for (p=0; p 0) istopo = 0; - grids[p] = grids_init(nxt[p], nyt[p], nzt[p], coord[0], - coord[1], 0, istopo, DH[p]); - } + // Initialize grids + grids_t grids[MAXGRIDS]; + int istopo = usetopo; + for (p = 0; p < ngrids; p++) + { + // Disable topography in grids below the top grid + if (p > 0) + istopo = 0; + grids[p] = grids_init(nxt[p], nyt[p], nzt[p], coord[0], + coord[1], 0, istopo, DH[p]); + } - f_grid_t *metrics_f = NULL; + f_grid_t *metrics_f = NULL; #if TOPO - topo_t T = topo_init(usetopo, INTOPO, - rank, - x_rank_L, x_rank_R, - y_rank_F, y_rank_B, coord, - dim[0], dim[1], - nxt[0], nyt[0], nzt[0], - DT, *DH, - stream_1, stream_2, stream_i - ); - topo_bind(&T, d_d1[0], d_lam[0], d_mu[0], - d_qp[0], d_coeff, d_qs[0], d_vx1[0], d_vx2[0], d_ww[0], - d_wwo[0], d_xx[0], d_yy[0], d_zz[0], - d_xy[0], d_xz[0], d_yz[0], d_r1[0], d_r2[0], d_r3[0], - d_r4[0], d_r5[0], d_r6[0], d_u1[0], d_v1[0], d_w1[0], - d_f_u1[0], d_f_v1[0], d_f_w1[0], d_b_u1[0], d_b_v1[0], - d_b_w1[0], d_dcrjx[0], d_dcrjy[0], d_dcrjz[0]); - topo_init_metrics(&T); - - if (T.use) { - topo_init_grid(&T); - topo_init_geometry(&T); - topo_build(&T); - topo_set_constants(&T); - } - + topo_t T = topo_init(usetopo, INTOPO, + rank, + x_rank_L, x_rank_R, + y_rank_F, y_rank_B, coord, + dim[0], dim[1], + nxt[0], nyt[0], nzt[0], + DT, *DH, + stream_1, stream_2, stream_i); + topo_bind(&T, d_d1[0], d_lam[0], d_mu[0], + d_qp[0], d_coeff, d_qs[0], d_vx1[0], d_vx2[0], d_ww[0], + d_wwo[0], d_xx[0], d_yy[0], d_zz[0], + d_xy[0], d_xz[0], d_yz[0], d_r1[0], d_r2[0], d_r3[0], + d_r4[0], d_r5[0], d_r6[0], d_u1[0], d_v1[0], d_w1[0], + d_f_u1[0], d_f_v1[0], d_f_w1[0], d_b_u1[0], d_b_v1[0], + d_b_w1[0], d_dcrjx[0], d_dcrjy[0], d_dcrjz[0]); + topo_init_metrics(&T); + + if (T.use) + { + topo_init_grid(&T); + topo_init_geometry(&T); + topo_build(&T); + topo_set_constants(&T); + } +#endif +#if VERBOSE + if (rank == 0) + printf("Initialize source and receivers\n"); + fflush(stdout); #endif + if (T.use) + { + metrics_f = &T.metrics_f; + } + + if (usesourcefile) + sources_init(SOURCEFILE, grids, ngrids, metrics_f, MCW, rank, + size_tot); + if (userecvfile) + receivers_init(RECVFILE, grids, ngrids, metrics_f, MCW, rank, + size_tot); + if (useforcefile) + forces_init(FORCEFILE, grids, ngrids, metrics_f, MCW, rank, + size_tot); + if (usesgtfile) + { + sgt_init(SGTFILE, grids, ngrids, metrics_f, MCW, rank, + size_tot); + for (p = 0; p < ngrids; p++) + { + sgt_write_material_properties(d_d1[p], d_lam[p], + d_mu[p], p); + } + } #if VERBOSE - if(rank == 0)printf("Initialize source and receivers\n"); - fflush(stdout); + if (rank == 0) + printf("done.\n"); + fflush(stdout); #endif + size_t cmemfreeMin; + cudaMemGetInfo(&cmemfree, &cmemtotal); + if (sizeof(size_t) == 8) + MPI_Reduce(&cmemfree, &cmemfreeMin, 1, MPI_UINT64_T, MPI_MIN, 0, MCW); + else + MPI_Reduce(&cmemfree, &cmemfreeMin, 1, MPI_UINT32_T, MPI_MIN, 0, MCW); + if (rank == 0) + printf("CUDA MEMORY: free = %f GB \ttotal = %f GB \n", + cmemfreeMin / 1e9, cmemtotal / 1e9); + + if (rank == 0) + { + cudaMemGetInfo(&cmemfree, &cmemtotal); +#if VERBOSE + printf("CUDA MEMORY: Total=%ld\tAvailable=%ld\n", cmemtotal, cmemfree); +#endif + } - if (T.use) { - metrics_f = &T.metrics_f; + for (p = 0; p < ngrids; p++) + { + receivers_write(d_u1[p], d_v1[p], d_w1[p], 0, nt, p); + sgt_write(d_xx[p], d_yy[p], d_zz[p], d_xy[0], d_xz[p], d_yz[p], 0, nt, p); + } + sources_read(0); + forces_read(0); + + if (rank == 0) + fchk = fopen(CHKFILE, "a+"); + + time_init = gethrtime() - time_init; + if (rank == 0) + printf("Initialization completed in %f s.\n", time_init); + // Main Loop Starts + if (rank == 0) + { + printf( + "Time step \t Time \t\t Elapsed time \t sec per time step \t Time " + "steps per sec \t Percentage completed\n"); + printf( + "-----------------------------------------------------------------" + "----------------------------------------------------\n"); + } + if (((NPC == 0) || (NPC == 2)) && (NVE == 1 || NVE == 3)) + { + time_un -= gethrtime(); + //This loop has no loverlapping because there is source input + for (cur_step = 1; cur_step <= nt; cur_step++) + { + //CUCHK(cudaDeviceSynchronize()); + CUCHK(cudaStreamSynchronize(stream_i)); + CUCHK(cudaStreamSynchronize(stream_1)); + CUCHK(cudaStreamSynchronize(stream_2)); + if (cur_step % 10 == 0 && rank == 0) + { + double elapsed = gethrtime() + time_un; + double step_s = elapsed / cur_step; + double pcomplete = 100 * (double)cur_step / (double)(nt - 1); + printf( + "%ld \t\t %4.3f s \t %4.3f s \t %3.5f s/step \t %5.3f step/s \t %2.2f %% \n", + cur_step, cur_step * DT, elapsed, step_s, 1.0 / step_s, pcomplete); + + fflush(stdout); + fflush(stderr); } + CUCHK(cudaGetLastError()); + //cerr=cudaGetLastError(); - if (usesourcefile) - sources_init(SOURCEFILE, grids, ngrids, metrics_f, MCW, rank, - size_tot); - if (userecvfile) - receivers_init(RECVFILE, grids, ngrids, metrics_f, MCW, rank, - size_tot); - if (useforcefile) - forces_init(FORCEFILE, grids, ngrids, metrics_f, MCW, rank, - size_tot); - if (usesgtfile) { - sgt_init(SGTFILE, grids, ngrids, metrics_f, MCW, rank, - size_tot); - for (p = 0; p < ngrids; p++) { - sgt_write_material_properties(d_d1[p], d_lam[p], - d_mu[p], p); - } + for (p = 0; p < ngrids; p++) + { + dump_nonzeros(d_u1[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "u1", p, cur_step, 6, rank, size); + dump_nonzeros(d_v1[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "v1", p, cur_step, 6, rank, size); + dump_nonzeros(d_w1[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "w1", p, cur_step, 6, rank, size); } -#if VERBOSE - if(rank == 0)printf("done.\n"); - fflush(stdout); + + if (cerr != cudaSuccess) + printf("CUDA ERROR! rank=%d before timestep: %s\n", rank, cudaGetErrorString(cerr)); + //pre-post MPI Message + + for (p = 0; p < ngrids; p++) + { + PostRecvMsg_Y(RF_vel[p], RB_vel[p], MCW, request_y[p], &count_y[p], msg_v_size_y[p], y_rank_F, y_rank_B, p); + //PostRecvMsg_X(RL_vel[p], RR_vel[p], MCW, request_x[p], &count_x[p], msg_v_size_x[p], x_rank_L, x_rank_R, p); + //velocity computation in y boundary, two ghost cell regions + if (!usetopo || p > 0) + { + dvelcy_H(d_u1[p], d_v1[p], d_w1[p], d_xx[p], d_yy[p], d_zz[p], d_xy[p], + d_xz[p], d_yz[p], d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], + d_d1[p], nxt[p], nzt[p], d_f_u1[p], d_f_v1[p], d_f_w1[p], + stream_1, yfs[p], yfe[p], y_rank_F, p); + } + else + { +#if TOPO + topo_velocity_front_H(&T); #endif + } + Cpy2Host_VY(d_f_u1[p], d_f_v1[p], d_f_w1[p], SF_vel[p], nxt[p], nzt[p], stream_1, y_rank_F); + + if (!usetopo || p > 0) + { + dvelcy_H(d_u1[p], d_v1[p], d_w1[p], d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], + d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], d_d1[p], nxt[p], nzt[p], + d_b_u1[p], d_b_v1[p], d_b_w1[p], stream_2, ybs[p], ybe[p], y_rank_B, p); + } + else + { +#if TOPO + topo_velocity_back_H(&T); +#endif + } - size_t cmemfreeMin; - cudaMemGetInfo(&cmemfree, &cmemtotal); - if(sizeof(size_t)==8) - MPI_Reduce(&cmemfree, &cmemfreeMin, 1, MPI_UINT64_T, MPI_MIN, 0, MCW); - else - MPI_Reduce(&cmemfree, &cmemfreeMin, 1, MPI_UINT32_T, MPI_MIN, 0, MCW); - if (rank == 0) - printf("CUDA MEMORY: free = %f GB \ttotal = %f GB \n", - cmemfreeMin / 1e9, cmemtotal / 1e9); + Cpy2Host_VY(d_b_u1[p], d_b_v1[p], d_b_w1[p], SB_vel[p], nxt[p], nzt[p], stream_2, y_rank_B); + CUCHK(cudaStreamSynchronize(stream_1)); /*these fix sync issues, but not sure why*/ + CUCHK(cudaStreamSynchronize(stream_2)); + //usleep(1); - if(rank==0){ - cudaMemGetInfo(&cmemfree, &cmemtotal); -#if VERBOSE - printf("CUDA MEMORY: Total=%ld\tAvailable=%ld\n",cmemtotal,cmemfree); + if (!usetopo || p > 0) + { + dvelcx_H_opt(d_u1[p], d_v1[p], d_w1[p], d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], + d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], d_d1[p], nyt[p], nzt[p], stream_i, xvs[p], xve[p], p, ngrids); + } + else + { +#if TOPO + topo_velocity_interior_H(&T); #endif - } - - for (p=0; p 0) { - dvelcy_H(d_u1[p], d_v1[p], d_w1[p], d_xx[p], d_yy[p], d_zz[p], d_xy[p], - d_xz[p], d_yz[p], d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], - d_d1[p], nxt[p], nzt[p], d_f_u1[p], d_f_v1[p], d_f_w1[p], - stream_1, yfs[p], yfe[p], y_rank_F, p); - } else { - #if TOPO - topo_velocity_front_H(&T); - #endif - } - Cpy2Host_VY(d_f_u1[p], d_f_v1[p], d_f_w1[p], SF_vel[p], nxt[p], nzt[p], stream_1, y_rank_F); - - if (!usetopo || p > 0) { - dvelcy_H(d_u1[p], d_v1[p], d_w1[p], d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], - d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], d_d1[p], nxt[p], nzt[p], - d_b_u1[p], d_b_v1[p], d_b_w1[p], stream_2, ybs[p], ybe[p], y_rank_B, p); - } else { - #if TOPO - topo_velocity_back_H(&T); - #endif - } - - Cpy2Host_VY(d_b_u1[p], d_b_v1[p], d_b_w1[p], SB_vel[p], nxt[p], nzt[p], stream_2, y_rank_B); - - CUCHK(cudaStreamSynchronize(stream_1)); /*these fix sync issues, but not sure why*/ - CUCHK(cudaStreamSynchronize(stream_2)); - //usleep(1); - - if (!usetopo || p > 0) { - dvelcx_H_opt(d_u1[p], d_v1[p], d_w1[p], d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], - d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], d_d1[p], nyt[p], nzt[p], stream_i, xvs[p], xve[p], p, ngrids); - } else { - #if TOPO - topo_velocity_interior_H(&T); - #endif - } - } + } + } - for (p=0; p 0) { - dstrqc_H(d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], - d_r1[p], d_r2[p], d_r3[p], d_r4[p], d_r5[p], d_r6[p], - d_u1[p], d_v1[p], d_w1[p], d_lam[p], - d_mu[p], d_qp[p],d_coeff, d_qs[p], d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], - nyt[p], nzt[p], stream_1, d_lam_mu[p], - d_vx1[p], d_vx2[p], d_ww[p], d_wwo[p], - NX*grdfct[p], NPC, coord[0], coord[1], xss1[p], xse1[p], - yls[p], yre[p], p); - dstrqc_H(d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], - d_r1[p], d_r2[p], d_r3[p], d_r4[p], d_r5[p], d_r6[p], - d_u1[p], d_v1[p], d_w1[p], d_lam[p], - d_mu[p], d_qp[p],d_coeff, d_qs[p], d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], - nyt[p], nzt[p], stream_2, d_lam_mu[p], - d_vx1[p], d_vx2[p], d_ww[p], d_wwo[p], - NX*grdfct[p], NPC, coord[0], coord[1], xss3[p], xse3[p], - yls[p], yre[p], p); - } else { - topo_stress_left_H(&T); - topo_stress_right_H(&T); + //velocity communication in x direction + CUCHK(cudaStreamSynchronize(stream_1)); + for (p = 0; p < ngrids; p++) + { + PostSendMsg_X(SL_vel[p], SR_vel[p], MCW, request_x[p], &count_x[p], + msg_v_size_x[p], x_rank_L, x_rank_R, rank, Left, p); + } + CUCHK(cudaStreamSynchronize(stream_2)); + for (p = 0; p < ngrids; p++) + { + PostSendMsg_X(SL_vel[p], SR_vel[p], MCW, request_x[p], &count_x[p], + msg_v_size_x[p], x_rank_L, x_rank_R, rank, Right, p); + MPI_Waitall(count_x[p], request_x[p], status_x[p]); + + Cpy2Device_VX(d_u1[p], d_v1[p], d_w1[p], RL_vel[p], RR_vel[p], nxt[p], nyt[p], nzt[p], + stream_1, stream_2, x_rank_L, x_rank_R); + + if (!usetopo || p > 0) + { + dstrqc_H(d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], + d_r1[p], d_r2[p], d_r3[p], d_r4[p], d_r5[p], d_r6[p], + d_u1[p], d_v1[p], d_w1[p], d_lam[p], + d_mu[p], d_qp[p], d_coeff, d_qs[p], d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], + nyt[p], nzt[p], stream_1, d_lam_mu[p], + d_vx1[p], d_vx2[p], d_ww[p], d_wwo[p], + NX * grdfct[p], NPC, coord[0], coord[1], xss1[p], xse1[p], + yls[p], yre[p], p); + dstrqc_H(d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], + d_r1[p], d_r2[p], d_r3[p], d_r4[p], d_r5[p], d_r6[p], + d_u1[p], d_v1[p], d_w1[p], d_lam[p], + d_mu[p], d_qp[p], d_coeff, d_qs[p], d_dcrjx[p], d_dcrjy[p], d_dcrjz[p], + nyt[p], nzt[p], stream_2, d_lam_mu[p], + d_vx1[p], d_vx2[p], d_ww[p], d_wwo[p], + NX * grdfct[p], NPC, coord[0], coord[1], xss3[p], xse3[p], + yls[p], yre[p], p); + } + else + { + topo_stress_left_H(&T); + topo_stress_right_H(&T); + } + } + CUCHK(cudaDeviceSynchronize()); + + for (p = 0; p < ngrids; p++) + { + dump_nonzeros(d_xx[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "xx", p, cur_step, 8, rank, size); + dump_nonzeros(d_yy[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "yy", p, cur_step, 8, rank, size); + dump_nonzeros(d_zz[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "zz", p, cur_step, 8, rank, size); + dump_nonzeros(d_xy[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "xy", p, cur_step, 8, rank, size); + dump_nonzeros(d_xz[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "xz", p, cur_step, 8, rank, size); + dump_nonzeros(d_yz[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "yz", p, cur_step, 8, rank, size); } - } - CUCHK(cudaDeviceSynchronize()); - - for (p=0; p=align; k--) { - for(j=2+ngsl; j<2+ngsl+nyt[p]; j++) { - for(i=2+ngsl; i<2+ngsl+nxt[p]; i++) { - Bufx[0][tmpInd] = u1[p][i][j][k]; - Bufy[0][tmpInd] = v1[p][i][j][k]; - Bufz[0][tmpInd] = w1[p][i][j][k]; - if (NVE == 3) Bufeta[0][tmpInd] = neta[p][i][j][k]; - tmpInd++; - } - } - } - - /*seism_write(&seism_filex[p], &u1[p][0][0][0], &err); + //printf("Output data buffered in (sec): %lf\n",time_gpuio_tmp); + } + + if ((cur_step / NTISKP) % WRITE_STEP == 0) + { + CUCHK(cudaDeviceSynchronize()); +#ifndef NOBGIO + outsize = rec_nxt[p] * rec_nyt[p] * rec_nzt[p] * WRITE_STEP; + time(&time1); + MPI_Send(Bufx[p], outsize, MPI_FLOAT, rank + 2 * size, MPIRANKIO + 30, MPI_COMM_WORLD); + time(&time2); + if (rank == 0 && p == 0) + fprintf(stdout, "Wait time for sending output (): %5.f seconds.\n", difftime(time2, time1)); + MPI_Send(Bufy[p], outsize, MPI_FLOAT, rank + 2 * size, MPIRANKIO + 31, MPI_COMM_WORLD); + MPI_Send(Bufz[p], outsize, MPI_FLOAT, rank + 2 * size, MPIRANKIO + 32, MPI_COMM_WORLD); + if (NVE == 3) + MPI_Send(Bufeta[p], outsize, MPI_FLOAT, rank + 2 * size, MPIRANKIO + 33, MPI_COMM_WORLD); +#else + sprintf(filename, "%s_%1d_%07ld", filenamebasex, p, cur_step); + err = MPI_File_open(MCW, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); + //error_check(err, "MPI_File_open X"); + err = MPI_File_set_view(fh, displacement[p], MPI_FLOAT, filetype[p], "native", MPI_INFO_NULL); + //error_check(err, "MPI_File_set_view X"); + err = MPI_File_write_all(fh, Bufx[p], rec_nxt[p] * rec_nyt[p] * rec_nzt[p] * WRITE_STEP, MPI_FLOAT, &filestatus); + //error_check(err, "MPI_File_write X"); + + err = MPI_File_close(&fh); + //error_check(err, "MPI_File_close X"); + + sprintf(filename, "%s_%1d_%07ld", filenamebasey, p, cur_step); + err = MPI_File_open(MCW, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); + err = MPI_File_set_view(fh, displacement[p], MPI_FLOAT, filetype[p], "native", MPI_INFO_NULL); + err = MPI_File_write_all(fh, Bufy[p], rec_nxt[p] * rec_nyt[p] * rec_nzt[p] * WRITE_STEP, MPI_FLOAT, &filestatus); + err = MPI_File_close(&fh); + sprintf(filename, "%s_%1d_%07ld", filenamebasez, p, cur_step); + err = MPI_File_open(MCW, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); + err = MPI_File_set_view(fh, displacement[p], MPI_FLOAT, filetype[p], "native", MPI_INFO_NULL); + err = MPI_File_write_all(fh, Bufz[p], rec_nxt[p] * rec_nyt[p] * rec_nzt[p] * WRITE_STEP, MPI_FLOAT, &filestatus); + err = MPI_File_close(&fh); + //saves the plastic shear work + if (NVE == 3) + { + sprintf(filename, "%s_%1d_%07ld", filenamebaseeta, p, cur_step); + err = MPI_File_open(MCW, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); + err = MPI_File_set_view(fh, displacement[p], MPI_FLOAT, filetype[p], "native", MPI_INFO_NULL); + err = MPI_File_write_all(fh, Bufeta[p], rec_nxt[p] * rec_nyt[p] * rec_nzt[p] * WRITE_STEP, MPI_FLOAT, &filestatus); + err = MPI_File_close(&fh); + } +#endif + } + } +//else +//cudaDeviceSynchronize(); +#else + for (p = 0; p < ngrids; p++) + { + num_bytes = sizeof(float) * (nxt[p] + 4 + ngsl2) * (nyt[p] + 4 + ngsl2) * (nzt[p] + 2 * align); + if (!rank && p == 0) + time_gpuio_tmp = -gethrtime(); + CUCHK(cudaMemcpy(&u1[p][0][0][0], d_u1[p], num_bytes, cudaMemcpyDeviceToHost)); + CUCHK(cudaMemcpy(&v1[p][0][0][0], d_v1[p], num_bytes, cudaMemcpyDeviceToHost)); + CUCHK(cudaMemcpy(&w1[p][0][0][0], d_w1[p], num_bytes, cudaMemcpyDeviceToHost)); + //added for plasticity + if (NVE == 3) + CUCHK(cudaMemcpy(&neta[p][0][0][0], d_neta[p], num_bytes, cudaMemcpyDeviceToHost)); + + num_bytes = sizeof(float) * (nxt[p]) * (nyt[p]) * (nzt[p]); + Bufx[0] = (float *)malloc(num_bytes); + Bufy[0] = (float *)malloc(num_bytes); + Bufz[0] = (float *)malloc(num_bytes); + Bufeta[0] = (float *)malloc(num_bytes); + + tmpInd = 0; + for (k = nzt[p] + align - 1; k >= align; k--) + { + for (j = 2 + ngsl; j < 2 + ngsl + nyt[p]; j++) + { + for (i = 2 + ngsl; i < 2 + ngsl + nxt[p]; i++) + { + Bufx[0][tmpInd] = u1[p][i][j][k]; + Bufy[0][tmpInd] = v1[p][i][j][k]; + Bufz[0][tmpInd] = w1[p][i][j][k]; + if (NVE == 3) + Bufeta[0][tmpInd] = neta[p][i][j][k]; + tmpInd++; + } + } + } + + /*seism_write(&seism_filex[p], &u1[p][0][0][0], &err); seism_write(&seism_filey[p], &v1[p][0][0][0], &err); seism_write(&seism_filez[p], &w1[p][0][0][0], &err); if (NVE == 3) seism_write(&seism_fileeta[p], &neta[p][0][0][0], &err);*/ - seism_write(&seism_filex[p], Bufx[0], &err); - seism_write(&seism_filey[p], Bufy[0], &err); - seism_write(&seism_filez[p], Bufz[0], &err); - if (NVE == 3) seism_write(&seism_fileeta[p], &neta[p][0][0][0], &err); - - free(Bufx[0]); - free(Bufy[0]); - free(Bufz[0]); - if (NVE == 3) free(Bufeta[0]); - } - #endif - - // write-statistics to chk file: - if(rank==0){ - if (NPC < 2){ /* for periodic BCs, ND may be larger than nxt - Daniel */ - i = ND+2+ngsl; - j = i; - } - else i = j = 2+ngsl; - - k = nzt[0]+align-1-ND; - fprintf(fchk,"%ld :\t%e\t%e\t%e\n",cur_step,u1[0][i][j][k],v1[0][i][j][k],w1[0][i][j][k]); - fflush(fchk); - } + seism_write(&seism_filex[p], Bufx[0], &err); + seism_write(&seism_filey[p], Bufy[0], &err); + seism_write(&seism_filez[p], Bufz[0], &err); + if (NVE == 3) + seism_write(&seism_fileeta[p], &neta[p][0][0][0], &err); + + free(Bufx[0]); + free(Bufy[0]); + free(Bufz[0]); + if (NVE == 3) + free(Bufeta[0]); + } +#endif + + // write-statistics to chk file: + if (rank == 0) + { + if (NPC < 2) + { /* for periodic BCs, ND may be larger than nxt - Daniel */ + i = ND + 2 + ngsl; + j = i; + } + else + i = j = 2 + ngsl; + + k = nzt[0] + align - 1 - ND; + fprintf(fchk, "%ld :\t%e\t%e\t%e\n", cur_step, u1[0][i][j][k], v1[0][i][j][k], w1[0][i][j][k]); + fflush(fchk); + } + } + } + //else + //cudaDeviceSynchronize(); + + if ((cur_step < (NST * fbc_tskp) - 1) && (IFAULT >= 2) && + ((cur_step + 1) % (READ_STEP_GPU * fbc_tskp) == 0)) + { + printf("%d) Read new source from CPU.\n", rank); + if ((cur_step + 1) % (READ_STEP * fbc_tskp) == 0) + { + printf("%d) Read new source from file.\n", rank); + if (IFAULT == 2) + for (p = 0; p < ngrids; p++) + { + if (rank == srcproc[p]) + { + sprintf(insrcgrid, "%s_%d", INSRC, p); + sprintf(insrc_i2_grid, "%s_%d", INSRC_I2, p); + read_src_ifault_2(rank, READ_STEP, + insrcgrid, insrc_i2_grid, + maxdim, coord, NZ[p], + nxt[p], nyt[p], nzt[p], + npsrc + p, srcproc + p, + tpsrc + p, taxx + p, tayy + p, tazz + p, + taxz + p, tayz + p, taxy + p, (cur_step + 1) / READ_STEP + 1); + } + } + else if ((IFAULT == 4) && (rank == srcproc[0])) + { + read_src_ifault_4(rank, READ_STEP, + INSRC, maxdim, coord, NZ[0], + nxt[0], nyt[0], nzt[0], + npsrc, srcproc, + tpsrc, taxx, tayy, tazz, cur_step + 2, + fbc_ext, fbc_off, fbc_pmask, fbc_extl, fbc_dim, + &fbc_seismio, &fbc_tskp, NST, size); + } + } + if (rank == srcproc[0]) + printf("%d) SOURCE: taxx,yy,zz:%e,%e,%e\n", rank, + taxx[0][cur_step % READ_STEP], tayy[0][cur_step % READ_STEP], tazz[0][cur_step % READ_STEP]); + // Synchronous copy! + + for (p = 0; p < ngrids; p++) + { + if (rank == srcproc[p]) + Cpy2Device_source(npsrc[p], READ_STEP_GPU, + (cur_step + 1) % (READ_STEP * fbc_tskp) / fbc_tskp, + taxx[p], tayy[p], tazz[p], + taxz[p], tayz[p], taxy[p], + d_taxx[p], d_tayy[p], d_tazz[p], + d_taxz[p], d_tayz[p], d_taxy[p], IFAULT); + } + source_step = 0; + } } + time_un += gethrtime(); + CUCHK(cudaDeviceSynchronize()); + } + + if (IFAULT == 5) + { + for (p = 0; p < ngrids; p++) + { + if (rank == srcproc[p]) + { + num_bytes = npsrc[p] * sizeof(float); + fprintf(stdout, "num_bytes=%ld\n", num_bytes); + CUCHK(cudaMemcpy(mom[p], d_mom[p], num_bytes, cudaMemcpyDeviceToHost)); + for (n = 0; n < npsrc[p]; n++) + { + /*fprintf(stdout, "mom[%d]=%e\n", n, mom[p][n]);*/ + tmom += mom[p][n]; + } + } } - //else - //cudaDeviceSynchronize(); - - if((cur_step<(NST*fbc_tskp)-1) && (IFAULT >= 2) && - ((cur_step+1)%(READ_STEP_GPU*fbc_tskp)== 0)){ - printf("%d) Read new source from CPU.\n",rank); - if((cur_step+1)%(READ_STEP*fbc_tskp) == 0){ - printf("%d) Read new source from file.\n",rank); - if (IFAULT == 2) - for (p=0; p=nzt[p]+align-1 - rec_nedz[p]; k=k-NSKPZ[p]) - for(j=2+ngsl + rec_nbgy[p]; j<=2+ngsl + rec_nedy[p]; j=j+NSKPY[p]) - for(i=2+ngsl + rec_nbgx[p]; i<=2+ngsl + rec_nedx[p]; i=i+NSKPX[p]) { - if (tmpInd >= (rec_nxt[p]*rec_nyt[p]*rec_nzt[p])) - fprintf(stdout, "tmpind=%ld (allocated %d)\n", tmpInd, (rec_nxt[p]*rec_nyt[p]*rec_nzt[p])); - Bufeta2[p][tmpInd] = neta[p][i][j][k]; - tmpInd++; - } - - MPI_Datatype filetype2; - - - maxNX_NY_NZ_WS = (maxNX_NY_NZ_WS>rec_NZ[p]?maxNX_NY_NZ_WS:rec_NZ[p]); - int ones2[maxNX_NY_NZ_WS]; - MPI_Aint dispArray2[maxNX_NY_NZ_WS]; - for(i=0;i= nzt[p] + align - 1 - rec_nedz[p]; k = k - NSKPZ[p]) + for (j = 2 + ngsl + rec_nbgy[p]; j <= 2 + ngsl + rec_nedy[p]; j = j + NSKPY[p]) + for (i = 2 + ngsl + rec_nbgx[p]; i <= 2 + ngsl + rec_nedx[p]; i = i + NSKPX[p]) + { + if (tmpInd >= (rec_nxt[p] * rec_nyt[p] * rec_nzt[p])) + fprintf(stdout, "tmpind=%ld (allocated %d)\n", tmpInd, (rec_nxt[p] * rec_nyt[p] * rec_nzt[p])); + Bufeta2[p][tmpInd] = neta[p][i][j][k]; + tmpInd++; + } + + MPI_Datatype filetype2; + + maxNX_NY_NZ_WS = (maxNX_NY_NZ_WS > rec_NZ[p] ? maxNX_NY_NZ_WS : rec_NZ[p]); + int ones2[maxNX_NY_NZ_WS]; + MPI_Aint dispArray2[maxNX_NY_NZ_WS]; + for (i = 0; i < maxNX_NY_NZ_WS; ++i) + { + ones2[i] = 1; + } + + err = MPI_Type_contiguous(rec_nxt[p], MPI_FLOAT, &filetype2); + err = MPI_Type_commit(&filetype2); + for (i = 0; i < rec_nyt[p]; i++) + { + dispArray2[i] = sizeof(float); + dispArray2[i] = dispArray2[i] * rec_NX[p] * i; + } + err = MPI_Type_create_hindexed(rec_nyt[p], ones2, dispArray2, filetype2, &filetype2); + err = MPI_Type_commit(&filetype2); + for (i = 0; i < rec_nzt[p]; i++) + { + dispArray2[i] = sizeof(float); + dispArray2[i] = dispArray2[i] * rec_NY[p] * rec_NX[p] * i; + } + err = MPI_Type_create_hindexed(rec_nzt[p], ones2, dispArray2, filetype2, &filetype2); + err = MPI_Type_commit(&filetype2); + MPI_Type_size(filetype2, &tmpSize); +#if VERBOSE + printf("filetype size (supposedly=rec_nxt*rec_nyt*rec_nzt*4=%ld) =%d\n", + rec_nxt[p] * rec_nyt[p] * rec_nzt[p] * sizeof(float), tmpSize); +#endif - } + sprintf(filename, "Finaleta_%d_%07ld", p, cur_step); + err = MPI_File_open(MCW, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); + err = MPI_File_set_view(fh, displacement[p], MPI_FLOAT, filetype2, "native", MPI_INFO_NULL); + if (err != MPI_SUCCESS) + { + fprintf(stderr, "MPI error in MPI_File_set_view():\n"); + char errstr[200]; + int strlen; + MPI_Error_string(err, errstr, &strlen); + fprintf(stderr, "MPI error in MPI_File_set_view(): %s\n", errstr); + } + err = MPI_File_write_all(fh, Bufeta2, rec_nxt[p] * rec_nyt[p] * rec_nzt[p], MPI_FLOAT, &filestatus); + if (err != MPI_SUCCESS) + { + char errstr[200]; + int strlen; + MPI_Error_string(err, errstr, &strlen); + fprintf(stderr, "MPI error in MPI_File_write_all(): %s\n", errstr); + } + err = MPI_File_close(&fh); + } +#else + for (p = 0; p < ngrids; p++) + { + nx = NX * grdfct[p]; + ny = NX * grdfct[p]; + num_bytes = sizeof(float) * (nxt[p] + 4 + ngsl2) * (nyt[p] + 4 + ngsl2) * (nzt[p] + 2 * align); + CUCHK(cudaMemcpy(&neta[p][0][0][0], d_neta[p], num_bytes, cudaMemcpyDeviceToHost)); + seism_createRegularGrid(&one, &nx, &one, &one, &ny, &one, + &one, nzt + p, &one, seism_regGridID + p, &err); + + sprintf(filenamebaseep, "%s/EP_%d", OUT, p); + + seism_file_open(filenamebaseep, "w", &one, "float", seism_regGridID + p, seism_fileep + p, &err); + seism_write(&seism_fileep[p], &neta[p][0][0][0], &err); + seism_file_close(seism_fileep + p, &err); + } +#endif + } #if TOPO - topo_free(&T); - receivers_finalize(); - sources_finalize(); + topo_free(&T); + receivers_finalize(); + sources_finalize(); #endif - cudaStreamDestroy(stream_1); - //cudaStreamDestroy(stream_1b); - cudaStreamDestroy(stream_2); - //cudaStreamDestroy(stream_2b); - cudaStreamDestroy(stream_i); - cudaStreamDestroy(stream_i2); - cudaStreamDestroy(stream_o); - for (p=0; pcomm, filename, - MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, - &fh), - m->rank); + MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, + &fh), + m->rank); MPICHK2(MPI_File_write_at_all(fh, - m->offset, - data, m->num_elements, MPI_PREC, - &filestatus), - m->rank); + m->offset, + data, m->num_elements, MPI_PREC, + &filestatus), + m->rank); m->offset += m->total_num_bytes; MPICHK2(MPI_File_close(&fh), m->rank); } @@ -41,26 +43,27 @@ void mpi_io_read(mpi_io_t *m, prec *data, const char *filename) MPI_File fh; MPI_Status filestatus; MPICHK2(MPI_File_open(m->comm, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, - &fh), - m->rank); + &fh), + m->rank); MPICHK2(MPI_File_read_at_all(fh, m->offset, data, m->num_elements, MPI_PREC, &filestatus), - m->rank); + m->rank); m->offset += m->total_num_bytes; MPICHK2(MPI_File_close(&fh), m->rank); } mpi_io_idx_t mpi_io_idx_init(MPI_Comm comm, int rank, int *indices, - int *blocklen, size_t num_blocks, size_t num_writes) + int *blocklen, size_t num_blocks, size_t num_writes) { mpi_io_idx_t out = {.comm = comm, .rank = rank}; int *offsets = malloc(sizeof(offsets) * num_blocks); out.num_bytes = 0; out.num_elements = 0; out.offset = 0; - for (size_t i = 0; i < num_blocks; ++i) { + for (size_t i = 0; i < num_blocks; ++i) + { offsets[i] = indices[i] * num_writes; out.num_elements += blocklen[i]; } @@ -69,8 +72,8 @@ mpi_io_idx_t mpi_io_idx_init(MPI_Comm comm, int rank, int *indices, out.num_bytes = blocklen[0] * sizeof(prec); MPICHK2(MPI_Type_indexed(num_blocks, blocklen, offsets, MPI_PREC, - &out.dtype), - rank); + &out.dtype), + rank); MPI_Type_commit(&out.dtype); free(offsets); return out; @@ -81,18 +84,19 @@ void mpi_io_idx_write(mpi_io_idx_t *m, prec *data, const char *filename) MPI_File fh; MPI_Status filestatus; MPICHK2(MPI_File_open(m->comm, filename, - MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, - &fh), - m->rank); + MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, + &fh), + m->rank); MPICHK2(MPI_File_set_view(fh, m->offset, MPI_PREC, m->dtype, "native", - MPI_INFO_NULL), - m->rank); + MPI_INFO_NULL), + m->rank); MPICHK2(MPI_File_write_all(fh, data, m->num_elements, MPI_PREC, - &filestatus), - m->rank); + &filestatus), + m->rank); m->offset += m->num_bytes; m->current_write++; - if (m->current_write == m->num_writes) { + if (m->current_write == m->num_writes) + { m->current_write = 0; m->offset = 0; } @@ -104,16 +108,17 @@ void mpi_io_idx_read(mpi_io_idx_t *m, prec *data, const char *filename) MPI_File fh; MPI_Status filestatus; MPICHK2(MPI_File_open(m->comm, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, - &fh), - m->rank); + &fh), + m->rank); MPICHK2(MPI_File_set_view(fh, m->offset, MPI_PREC, m->dtype, "native", - MPI_INFO_NULL), - m->rank); + MPI_INFO_NULL), + m->rank); MPICHK2(MPI_File_read_all(fh, data, m->num_elements, MPI_PREC, &filestatus), - m->rank); + m->rank); m->offset += m->num_bytes; - if (m->current_write == m->num_writes) { + if (m->current_write == m->num_writes) + { m->current_write = 0; m->offset = 0; } @@ -124,4 +129,3 @@ void mpi_io_idx_finalize(mpi_io_idx_t *m) { MPICHK2(MPI_Type_free(&m->dtype), m->rank); } - diff --git a/src/test/check.c b/src/test/check.c index 4047c6b..d8f22c3 100644 --- a/src/test/check.c +++ b/src/test/check.c @@ -29,7 +29,7 @@ int chk_infl(const size_t *a, const size_t *b, const size_t n) { int err = 0; for (size_t i = 0; i < n; ++i) { - int diff = abs(a[i] - b[i]); + int diff = abs((int)a[i] - (int)b[i]); err = diff > err ? diff : err; } return err; diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 9fb5c82..87e388f 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -20,12 +20,12 @@ void source_init_indexed(source_t *src, const input_t *input, size_t num_reads); -source_t source_init(const char *file_end, - const enum grid_types grid_type, +source_t source_init(const char *file_end, + const enum grid_types grid_type, const input_t *input, - const grids_t *grids, + const grids_t *grids, const int ngrids, - const f_grid_t *f, + const f_grid_t *f, const int rank, const MPI_Comm comm) { @@ -35,108 +35,122 @@ source_t source_init(const char *file_end, source_init_common(&src, file_end, grid_type, input, grids, ngrids, f, rank, comm, is_source); - if (!src.use) { + if (!src.use) + { return src; } - size_t num_reads = input->steps / (input->cpu_buffer_size * input->gpu_buffer_size); source_init_indexed(&src, input, num_reads); src.io = mpi_io_idx_init(src.comm, rank, src.offsets, src.blocklen, - src.length, num_reads); + src.length, num_reads); return src; } - void source_finalize(source_t *src) { - if (!src->use) return; + if (!src->use) + return; free(src->indices); buffer_finalize(&src->buffer); free(src->blocklen); free(src->offsets); free(src->host_buffer_extra); - for (int i = 0; i < src->ngrids; ++i) { - if (src->x[i] != NULL) free(src->x[i]); - if (src->y[i] != NULL) free(src->y[i]); - if (src->z[i] != NULL) free(src->z[i]); - if (src->xu[i] != NULL) free(src->xu[i]); - if (src->yu[i] != NULL) free(src->yu[i]); - if (src->zu[i] != NULL) free(src->zu[i]); - if (src->type[i] != NULL) free(src->type[i]); + for (int i = 0; i < src->ngrids; ++i) + { + if (src->x[i] != NULL) + free(src->x[i]); + if (src->y[i] != NULL) + free(src->y[i]); + if (src->z[i] != NULL) + free(src->z[i]); + if (src->xu[i] != NULL) + free(src->xu[i]); + if (src->yu[i] != NULL) + free(src->yu[i]); + if (src->zu[i] != NULL) + free(src->zu[i]); + if (src->type[i] != NULL) + free(src->type[i]); } } -void source_find_grid_number(const input_t *input, const - grids_t *grids, int *grid_number, +void source_find_grid_number(const input_t *input, const grids_t *grids, int *grid_number, const int *indices, const int length, const int num_grids) { - - for (int j = 0; j < length; ++j) { + for (int j = 0; j < length; ++j) + { grid_number[j] = -1; } - _prec lower = 0; _prec upper = 0; - _prec overlap = 0; - for (int i = 0; i < num_grids; ++i) { - prec *z1 = malloc(sizeof z1 * grids[i].z.size.z); - grid1_t z_grid = grid_grid1_z(grids[i].z); + _prec overlap = 0; + for (int i = 0; i < num_grids; ++i) + { + prec *z1 = malloc(sizeof z1 * grids[i].z.size.z); + grid1_t z_grid = grid_grid1_z(grids[i].z); grid_fill1(z1, z_grid); - upper = lower; - lower = lower - z1[z_grid.end]; + upper = lower; + lower = lower - z1[z_grid.end]; - for (int j = 0; j < length; ++j) { + for (int j = 0; j < length; ++j) + { _prec z = input->z[indices[j]]; // Take into account that topography can yield positive // z-values - if (input->type[indices[j]] == INPUT_SURFACE_COORD) { + if (input->type[indices[j]] == INPUT_SURFACE_COORD) + { grid_number[j] = 0; continue; } - else if (z > 0) { + else if (z > 0) + { grid_number[j] = 0; } - else if (z > lower && z <= upper - overlap) { + else if (z > lower && z <= upper - overlap) + { grid_number[j] = i; } - } + } - if (i + 1 != num_grids) { - overlap = z_grid.gridspacing * OVERLAP; - } else { + if (i + 1 != num_grids) + { + overlap = z_grid.gridspacing * OVERLAP; + } + else + { overlap = 0.0f; } - lower = lower + overlap; - free(z1); - } - + lower = lower + overlap; + free(z1); + } - for (int j = 0; j < length; ++j) { - if (grid_number[j] == -1) { - fprintf(stderr, - "Failed to assign source/receiver id=%d "\ - " to a grid, z=%f.\n", j, input->z[indices[j]]); + for (int j = 0; j < length; ++j) + { + if (grid_number[j] == -1) + { + fprintf(stderr, + "Failed to assign source/receiver id=%d " + " to a grid, z=%f.\n", + j, input->z[indices[j]]); exit(1); } - } - } void source_init_common(source_t *src, const char *filename, const enum grid_types grid_type, - const input_t *input, - const grids_t *grids, + const input_t *input, + const grids_t *grids, const int ngrids, - const f_grid_t *f, + const f_grid_t *f, const int rank, const MPI_Comm comm, const int is_source) { sprintf(src->filename, "%s_%s", input->file, filename); @@ -149,7 +163,8 @@ void source_init_common(source_t *src, const char *filename, int *grid_number = malloc(sizeof grid_number * input->length); int *indices = malloc(sizeof indices * input->length); - for (size_t i = 0; i < input->length; ++i) { + for (size_t i = 0; i < input->length; ++i) + { indices[i] = i; } @@ -163,37 +178,37 @@ void source_init_common(source_t *src, const char *filename, grid3_t grid_top = grids_select(grid_type, &grids[0]); dm_offset_x[0] = 0; dm_offset_y[0] = 0; - dm_offset_z[0] = 0; - for (int j = 1; j < ngrids; ++j) { - grid3_t grid_pre = grids_select(grid_type, &grids[j-1]); - grid3_t grid_cur = grids_select(grid_type, &grids[j]); + dm_offset_z[0] = 0; + for (int j = 1; j < ngrids; ++j) + { + grid3_t grid_pre = grids_select(grid_type, &grids[j - 1]); + grid3_t grid_cur = grids_select(grid_type, &grids[j]); dm_offset_x[j] = dm_offset_x[j - 1] + - SOURCE_DM_OFFSET_X * grid_pre.gridspacing- - (grid_cur.shift.x * 0.5 * grid_cur.gridspacing - -grid_pre.shift.x * 0.5 * grid_pre.gridspacing); + SOURCE_DM_OFFSET_X * grid_pre.gridspacing - + (grid_cur.shift.x * 0.5 * grid_cur.gridspacing - grid_pre.shift.x * 0.5 * grid_pre.gridspacing); dm_offset_y[j] = dm_offset_y[j - 1] + - SOURCE_DM_OFFSET_Y * grid_pre.gridspacing- - (grid_cur.shift.y * 0.5 * grid_cur.gridspacing - -grid_pre.shift.y * 0.5 * grid_pre.gridspacing); - dm_offset_z[j] = grid_top.shift.z * 0.5 * grid_top.gridspacing - - (grid_cur.shift.z * 0.5 * grid_cur.gridspacing); + SOURCE_DM_OFFSET_Y * grid_pre.gridspacing - + (grid_cur.shift.y * 0.5 * grid_cur.gridspacing - grid_pre.shift.y * 0.5 * grid_pre.gridspacing); + dm_offset_z[j] = grid_top.shift.z * 0.5 * grid_top.gridspacing - + (grid_cur.shift.z * 0.5 * grid_cur.gridspacing); } - for (size_t i = 0; i < input->length; ++i) { - // Shift by 0.5 such that x = 0, y = 0 is - // located at a material or topography grid - // point. - x[i] = input->x[i] + - SOURCE_OFFSET_X * grid_top.gridspacing; - y[i] = input->y[i]; - z[i] = input->z[i]; - - int grid_num = grid_number[i]; - - // Apply DM-specific shift for all other blocks - x[i] = x[i] + dm_offset_x[grid_num]; - y[i] = y[i] + dm_offset_y[grid_num]; - z[i] = z[i] + dm_offset_z[grid_num]; + for (size_t i = 0; i < input->length; ++i) + { + // Shift by 0.5 such that x = 0, y = 0 is + // located at a material or topography grid + // point. + x[i] = input->x[i] + + SOURCE_OFFSET_X * grid_top.gridspacing; + y[i] = input->y[i]; + z[i] = input->z[i]; + + int grid_num = grid_number[i]; + + // Apply DM-specific shift for all other blocks + x[i] = x[i] + dm_offset_x[grid_num]; + y[i] = y[i] + dm_offset_y[grid_num]; + z[i] = z[i] + dm_offset_z[grid_num]; } free(dm_offset_x); @@ -202,38 +217,44 @@ void source_init_common(source_t *src, const char *filename, free(indices); src->length = 0; - for (int j = 0; j < ngrids; ++j) { + size_t *src_count = malloc(sizeof src_count * ngrids); + + for (int j = 0; j < ngrids; ++j) + { size_t num_sources_in_block = 0; grid3_t grid = grids_select(grid_type, &grids[j]); AWPCHK(dist_indices(&src->indices, &num_sources_in_block, x, y, - input->length, grid, grid_number, j, + input->length, grid, grid_number, j, is_source, DIST_COUNT)); - src->length += num_sources_in_block; + src_count[j] = src->length; + src->length += num_sources_in_block; } src->indices = malloc(sizeof(src->indices) * src->length); - for (int j = 0; j < ngrids; ++j) { + for (int j = 0; j < ngrids; ++j) + { grid3_t grid = grids_select(grid_type, &grids[j]); - AWPCHK(dist_indices(&src->indices, &src->length, x, y, - input->length, grid, grid_number, j, - is_source, DIST_INSERT_INDICES)); + AWPCHK(dist_indices(&src->indices, &src_count[j], x, y, + input->length, grid, grid_number, j, + is_source, DIST_INSERT_INDICES)); } free(grid_number); + free(src_count); } - src->ngrids = ngrids; src->use = src->length > 0 ? 1 : 0; src->steps = input->steps; - MPI_Comm_split(comm, src->use, rank, &src->comm); - if (!src->use) { + if (!src->use) + { return; } - for (int j = 0; j < ngrids; ++j) { + for (int j = 0; j < ngrids; ++j) + { src->lengths[j] = 0; } @@ -243,15 +264,18 @@ void source_init_common(source_t *src, const char *filename, src->length, ngrids); // count number of local sources for each grid - for (size_t i = 0; i < src->length; ++i) { - for (int j = 0; j < ngrids; ++j) { - if (grid_number[i] == j) src->lengths[j] += 1; + for (size_t i = 0; i < src->length; ++i) + { + for (int j = 0; j < ngrids; ++j) + { + if (grid_number[i] == j) + src->lengths[j] += 1; } } - // Init arrays that contains local coordinates - for (int j = 0; j < ngrids; ++j) { + for (int j = 0; j < ngrids; ++j) + { src->global_indices[j] = calloc(sizeof src->global_indices[j], src->lengths[j]); src->x[j] = malloc(sizeof src->x * src->lengths[j]); @@ -260,14 +284,17 @@ void source_init_common(source_t *src, const char *filename, src->xu[j] = malloc(sizeof src->x * src->lengths[j]); src->yu[j] = malloc(sizeof src->y * src->lengths[j]); src->zu[j] = malloc(sizeof src->z * src->lengths[j]); - src->type[j] = malloc(sizeof src->type * src->lengths[j]); + src->type[j] = malloc(sizeof src->type * src->lengths[j]); } // copy global source data to local source data - for (int j = 0; j < ngrids; ++j) { + for (int j = 0; j < ngrids; ++j) + { int local_idx = 0; - for (size_t i = 0; i < src->length; ++i) { - if (grid_number[i] != j) continue; + for (size_t i = 0; i < src->length; ++i) + { + if (grid_number[i] != j) + continue; src->global_indices[j][local_idx] = i; src->x[j][local_idx] = x[src->indices[i]]; src->y[j][local_idx] = y[src->indices[i]]; @@ -283,30 +310,35 @@ void source_init_common(source_t *src, const char *filename, _prec overlap = 0.0; _prec lower = 0.0; _prec block_height = 0.0; - for (int j = 0; j < ngrids; ++j) { + for (int j = 0; j < ngrids; ++j) + { grid3_t grid = grids_select(grid_type, &grids[j]); - - grid3_t metric_grid = grid_init_metric_grid( grid.inner_size, - grid_node(), grid.coordinate, grid.boundary1, - grid.boundary2, grid.gridspacing); - if (f!= NULL && j == 0) { + grid3_t metric_grid = grid_init_metric_grid(grid.inner_size, + grid_node(), grid.coordinate, grid.boundary1, + grid.boundary2, grid.gridspacing); + + if (f != NULL && j == 0) + { block_height = grid.gridspacing * (grid.size.z - 2); } - else { + else + { block_height = grid.gridspacing * (grid.size.z - 1); } - lower = lower - block_height + overlap; + lower = lower - block_height + overlap; - if (src->lengths[j] == 0) { + if (src->lengths[j] == 0) + { src->x[j] = NULL; src->y[j] = NULL; src->z[j] = NULL; src->type[j] = NULL; } - if (src->lengths[j] != 0 && f != NULL && j == 0) { + if (src->lengths[j] != 0 && f != NULL && j == 0) + { // x, y, z grid vectors compatible with topography grid grid1_t x_grid = grid_grid1_x(metric_grid); grid1_t y_grid = grid_grid1_y(metric_grid); @@ -329,28 +361,29 @@ void source_init_common(source_t *src, const char *filename, metric_grid, src->x[j], src->y[j], src->lengths[j], input->degree); - - for (size_t k = 0; k < src->lengths[j]; ++k) { - switch (src->type[j][k]) { - // Map to parameter space - case INPUT_VOLUME_COORD: - src->z[j][k] = - (block_height + src->z[j][k]) / - f_interp[k]; - break; - case INPUT_SURFACE_COORD: - src->z[j][k] = z1[z_grid.size - 2]; - break; - // FIXME: INPUT_BATHYMETRY_COORD - // Implement treatment for ocean - // bathymetry. - // Recommendation: Add a - // function to "receivers.c" and - // a function to to "receiver.c" - // Place the implementation in - // "receiver.c" but call this - // function for each receiver - // component in "receivers.c" + for (size_t k = 0; k < src->lengths[j]; ++k) + { + switch (src->type[j][k]) + { + // Map to parameter space + case INPUT_VOLUME_COORD: + src->z[j][k] = + (block_height + src->z[j][k]) / + f_interp[k]; + break; + case INPUT_SURFACE_COORD: + src->z[j][k] = z1[z_grid.size - 2]; + break; + // FIXME: INPUT_BATHYMETRY_COORD + // Implement treatment for ocean + // bathymetry. + // Recommendation: Add a + // function to "receivers.c" and + // a function to to "receiver.c" + // Place the implementation in + // "receiver.c" but call this + // function for each receiver + // component in "receivers.c" } } @@ -361,88 +394,90 @@ void source_init_common(source_t *src, const char *filename, free(x1); free(y1); free(z1); - } + } // Regular AWP - else { - for (size_t k = 0; k < src->lengths[j]; ++k) { - switch (src->type[j][k]) { - case INPUT_VOLUME_COORD: - src->z[j][k] = (src->z[j][k] - lower); - break; - // Map to parameter space - case INPUT_SURFACE_COORD: - // Only coordinates in the top - // block can be surface - // coordinates - assert(j == 0); - src->z[j][k] = block_height; - break; - } - } + else + { + for (size_t k = 0; k < src->lengths[j]; ++k) + { + switch (src->type[j][k]) + { + case INPUT_VOLUME_COORD: + src->z[j][k] = (src->z[j][k] - lower); + break; + // Map to parameter space + case INPUT_SURFACE_COORD: + // Only coordinates in the top + // block can be surface + // coordinates + assert(j == 0); + src->z[j][k] = block_height; + break; + } + } } overlap = grid.gridspacing * OVERLAP; - if (src->lengths[j] == 0) continue; + if (src->lengths[j] == 0) + continue; // Init grid that covers interior and halo regions grid3_t full_grid = grid_init_full_grid( - grid.inner_size, grid.shift, grid.coordinate, - grid.boundary1, grid.boundary2, grid.gridspacing); + grid.inner_size, grid.shift, grid.coordinate, + grid.boundary1, grid.boundary2, grid.gridspacing); grid_data_t xyz; grid_data_init(&xyz, full_grid); // Compute interpolation coefficients on the full grid AWPCHK(cuinterp_init(&src->interpolation[j], xyz.x, xyz.y, xyz.z, - full_grid, src->x[j], src->y[j], src->z[j], - src->global_indices[j], - src->lengths[j], input->degree)); - - - //Special treatment for sources located in the overlap zone - if(ngrids > 1) - { - for (size_t k = 0; k < src->lengths[j]; ++k) - { - //top block - if (j == 0) - { - //bottom two grids will not be used - if(src->interpolation[j].iz[k] < 2) - { - src->interpolation[j].iz[k]=2; - } - } - //blocks in between - else if(j > 0 && j != ngrids-1) - { - //bottom two grids will not be used - if(src->interpolation[j].iz[k] < 2) - { - src->interpolation[j].iz[k]=2; - } - else if(src->interpolation[j].iz[k] > grid.size.z-3) - { - //the top two grids in the coarse grid will not be used - src->interpolation[j].iz[k]=grid.size.z-3; - } - } - //bottom block - else if(j > 0 && j == ngrids - 1) - { - if(src->interpolation[j].iz[k] > grid.size.z-3) + full_grid, src->x[j], src->y[j], src->z[j], + src->global_indices[j], + src->lengths[j], input->degree)); + + //Special treatment for sources located in the overlap zone + if (ngrids > 1) + { + for (size_t k = 0; k < src->lengths[j]; ++k) + { + //top block + if (j == 0) + { + //bottom two grids will not be used + if (src->interpolation[j].iz[k] < 2) + { + src->interpolation[j].iz[k] = 2; + } + } + //blocks in between + else if (j > 0 && j != ngrids - 1) + { + //bottom two grids will not be used + if (src->interpolation[j].iz[k] < 2) { - //the top two grids in the coarse grid will not be used - src->interpolation[j].iz[k]=grid.size.z-3; - } - } - }//k loop - } - + src->interpolation[j].iz[k] = 2; + } + else if (src->interpolation[j].iz[k] > grid.size.z - 3) + { + //the top two grids in the coarse grid will not be used + src->interpolation[j].iz[k] = grid.size.z - 3; + } + } + //bottom block + else if (j > 0 && j == ngrids - 1) + { + if (src->interpolation[j].iz[k] > grid.size.z - 3) + { + //the top two grids in the coarse grid will not be used + src->interpolation[j].iz[k] = grid.size.z - 3; + } + } + } //k loop + } #ifdef DEBUG_SOURCE -{ - grid3_t vel_grid = grid_init_stress_grid( + { + grid3_t vel_grid = grid_init_stress_grid( grid.inner_size, grid.shift, grid.coordinate, grid.boundary1, grid.boundary2, grid.gridspacing); grid1_t x_grid = grid_grid1_x(vel_grid); @@ -457,66 +492,67 @@ void source_init_common(source_t *src, const char *filename, grid_fill1(y1, y_grid); grid_fill1(z1, z_grid); - - if (grid_type == XX) { - printf("rank = %d, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", - rank, grid.shift.x, grid.shift.y, grid.shift.z, - j, - x1[ngsl/2], y1[ngsl/2], z1[0], - grid.gridspacing); - - for (size_t k = 0; k < src->lengths[j]; ++k) - { - printf("query int x y z = %f %f %f | nearest x y z = %f %f %f | index = %d %d %d\n", - src->x[j][k], src->y[j][k], src->z[j][k], - x1[ngsl/2+src->interpolation[j].ix[k]-ngsl], - y1[ngsl/2+src->interpolation[j].iy[k]-ngsl], - z1[src->interpolation[j].iz[k]], - src->interpolation[j].ix[k], - src->interpolation[j].iy[k], - src->interpolation[j].iz[k]); - printf("index-x: %d \n", - src->interpolation[j].ix[0]); - print("weights-x: %f %f %f %f \n", - src->interpolation[j].lx[0], - src->interpolation[j].lx[1], - src->interpolation[j].lx[2], - src->interpolation[j].lx[3]); - } + if (grid_type == XX) + { + printf("rank = %d, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", + rank, grid.shift.x, grid.shift.y, grid.shift.z, + j, + x1[ngsl / 2], y1[ngsl / 2], z1[0], + grid.gridspacing); + + for (size_t k = 0; k < src->lengths[j]; ++k) + { + printf("query int x y z = %f %f %f | nearest x y z = %f %f %f | index = %d %d %d\n", + src->x[j][k], src->y[j][k], src->z[j][k], + x1[ngsl / 2 + src->interpolation[j].ix[k] - ngsl], + y1[ngsl / 2 + src->interpolation[j].iy[k] - ngsl], + z1[src->interpolation[j].iz[k]], + src->interpolation[j].ix[k], + src->interpolation[j].iy[k], + src->interpolation[j].iz[k]); + printf("index-x: %d \n", + src->interpolation[j].ix[0]); + print("weights-x: %f %f %f %f \n", + src->interpolation[j].lx[0], + src->interpolation[j].lx[1], + src->interpolation[j].lx[2], + src->interpolation[j].lx[3]); + } + } + fflush(stdout); } - fflush(stdout); -} #endif -//-------------------------------------------------------------------------------- - + //-------------------------------------------------------------------------------- + grid_data_free(&xyz); } // end loop j free(grid_number); free(x); free(y); - src->buffer = buffer_init(src->length, - input->gpu_buffer_size, - input->cpu_buffer_size, input->stride); + input->gpu_buffer_size, + input->cpu_buffer_size, input->stride); // Extra space for host buffer src->host_buffer_extra = malloc(src->buffer.h_buffer_bytes); - } void source_init_indexed(source_t *src, const input_t *input, size_t num_reads) { - if (!src->use) return; + if (!src->use) + return; src->blocklen = malloc(sizeof(src->blocklen) * input->length); src->offsets = malloc(sizeof(src->offsets) * input->length); size_t num_elements = input->steps / num_reads; src->num_elements = num_elements; - for (size_t i = 0; i < src->length; ++i) { + for (size_t i = 0; i < src->length; ++i) + { src->blocklen[i] = num_elements; } - for (size_t i = 0; i < src->length; ++i) { + for (size_t i = 0; i < src->length; ++i) + { src->offsets[i] = src->indices[i] * num_elements; } } @@ -525,48 +561,49 @@ void source_read(source_t *src, size_t step) { if (!src->use) return; - if (step > src->steps) { + if (step > src->steps) + { src->use = 0; return; } - if (buffer_is_host_empty(&src->buffer, step)) { - prec *host_ptr = buffer_get_host_ptr(&src->buffer, step); - mpi_io_idx_read(&src->io, host_ptr, src->filename); - - // Transpose data from (index, time) to (time, index) - // (last index is contiguous) - size_t rows = src->length; - size_t cols = src->buffer.num_host * src->buffer.num_device; - array_transpose(src->host_buffer_extra, host_ptr, rows, cols); - SWAP(src->host_buffer_extra, src->buffer.h_buffer, prec*); + if (buffer_is_host_empty(&src->buffer, step)) + { + prec *host_ptr = buffer_get_host_ptr(&src->buffer, step); + mpi_io_idx_read(&src->io, host_ptr, src->filename); + + // Transpose data from (index, time) to (time, index) + // (last index is contiguous) + size_t rows = src->length; + size_t cols = src->buffer.num_host * src->buffer.num_device; + array_transpose(src->host_buffer_extra, host_ptr, rows, cols); + SWAP(src->host_buffer_extra, src->buffer.h_buffer, prec *); } - - if (buffer_is_device_empty(&src->buffer, step)) { + + if (buffer_is_device_empty(&src->buffer, step)) + { buffer_copy_to_device(&src->buffer, step); } - } void source_add_cartesian(prec *out, source_t *src, const size_t step, const prec h, const prec dt, const int grid_num) { if (!src->use || !buffer_is_device_ready(&src->buffer, step) || - src->lengths[grid_num] == 0) + src->lengths[grid_num] == 0) return; - prec *source_data = buffer_get_device_ptr(&src->buffer, step); - cusource_add_cartesian_H(&src->interpolation[grid_num], + cusource_add_cartesian_H(&src->interpolation[grid_num], out, source_data, h, dt); } void source_add_curvilinear(prec *out, source_t *src, const size_t step, const prec h, const prec dt, const prec *f, - const int ny, - const prec *dg, const int grid_num) + const int ny, + const prec *dg, const int grid_num) { if (!src->use || !buffer_is_device_ready(&src->buffer, step) || - src->lengths[grid_num] == 0) + src->lengths[grid_num] == 0) return; prec *source_data = buffer_get_device_ptr(&src->buffer, step); @@ -577,16 +614,15 @@ void source_add_curvilinear(prec *out, source_t *src, const size_t step, void source_add_force(prec *out, const prec *d1, source_t *src, const size_t step, const prec h, const prec dt, const prec quad_weight, - const prec *f, const int nx, const int ny, const int nz, + const prec *f, const int nx, const int ny, const int nz, const prec *dg, - const int grid_num) + const int grid_num) { if (!src->use || !buffer_is_device_ready(&src->buffer, step) || - src->lengths[grid_num] == 0) + src->lengths[grid_num] == 0) return; prec *source_data = buffer_get_device_ptr(&src->buffer, step); cusource_add_force_H(&src->interpolation[grid_num], out, - source_data, d1, h, dt, quad_weight, f, nx, ny, nz, dg); + source_data, d1, h, dt, quad_weight, f, nx, ny, nz, dg); } - From a7763b93daaea21d1af3bf5a121b4e748fc08645 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 7 Dec 2020 14:33:48 -0800 Subject: [PATCH 17/56] add zhat arg to source functions. --- include/topography/sources/source.cuh | 4 ++-- include/topography/sources/source.h | 4 +++- src/topography/sources/source.c | 4 ++-- src/topography/sources/source.cu | 6 +++--- src/topography/sources/sources.c | 13 +++++++------ 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/include/topography/sources/source.cuh b/include/topography/sources/source.cuh index 54e867f..13a0649 100644 --- a/include/topography/sources/source.cuh +++ b/include/topography/sources/source.cuh @@ -21,7 +21,7 @@ __global__ void cusource_add_cartesian(prec *out, const prec *in, const int num_query, const grid3_t grid); void cusource_add_curvilinear_H(const cu_interp_t *I, prec *out, const prec *in, const prec h, const prec dt, const prec *f, - const int ny, const prec *dg); + const int ny, const prec *dg, const int zhat); __global__ void cusource_add_curvilinear(prec *out, const prec *in, const prec *lx, const prec *ly, const prec *lz, const int num_basis, const int *ix, @@ -29,7 +29,7 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, const int *lidx, const prec h, const prec dt, const int num_query, const grid3_t grid, - const prec *f, const int ny, const prec *dg); + const prec *f, const int ny, const prec *dg, const int zhat); void cusource_add_force_H(const cu_interp_t *I, prec *out, const prec *in, const prec *d1, const prec h, const prec dt, const prec quad_weight, diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index 7ec329d..a2f9a40 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -89,9 +89,11 @@ void source_read(source_t *src, size_t step); void source_add_cartesian(prec *out, source_t *src, const size_t step, const prec h, const prec dt, const int grid_num); +// zhat: indicates if the source should be applied on the cell-centered grid in +// the z-direction or not void source_add_curvilinear(prec *out, source_t *src, const size_t step, const prec h, const prec dt, const prec *f, - const int ny, const prec *dg, const int grid_num); + const int ny, const prec *dg, const int grid_num, const int zhat); void source_add_force(prec *out, const prec *d1, source_t *src, const size_t step, const prec h, const prec dt, diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 87e388f..8521031 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -600,7 +600,7 @@ void source_add_cartesian(prec *out, source_t *src, const size_t step, void source_add_curvilinear(prec *out, source_t *src, const size_t step, const prec h, const prec dt, const prec *f, const int ny, - const prec *dg, const int grid_num) + const prec *dg, const int grid_num, const int zhat) { if (!src->use || !buffer_is_device_ready(&src->buffer, step) || src->lengths[grid_num] == 0) @@ -608,7 +608,7 @@ void source_add_curvilinear(prec *out, source_t *src, const size_t step, prec *source_data = buffer_get_device_ptr(&src->buffer, step); cusource_add_curvilinear_H(&src->interpolation[grid_num], out, - source_data, h, dt, f, ny, dg); + source_data, h, dt, f, ny, dg, zhat); } void source_add_force(prec *out, const prec *d1, source_t *src, diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 8bcfb15..0a812cd 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -63,7 +63,7 @@ __global__ void cusource_add_cartesian(prec *out, const prec *in, void cusource_add_curvilinear_H(const cu_interp_t *I, prec *out, const prec *in, const prec h, const prec dt, const prec *f, - const int ny, const prec *dg) + const int ny, const prec *dg, const int zhat) { dim3 block (INTERP_THREADS, 1, 1); dim3 grid((I->num_query + INTERP_THREADS - 1) / INTERP_THREADS, @@ -71,7 +71,7 @@ void cusource_add_curvilinear_H(const cu_interp_t *I, prec *out, const prec *in, cusource_add_curvilinear<<>>( out, in, I->d_lx, I->d_ly, I->d_lz, I->num_basis, I->d_ix, I->d_iy, - I->d_iz, I->d_ridx, h, dt, I->num_query, I->grid, f, ny, dg); + I->d_iz, I->d_ridx, h, dt, I->num_query, I->grid, f, ny, dg, zhat); CUCHK(cudaGetLastError()); } @@ -82,7 +82,7 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, const int *lidx, const prec h, const prec dt, const int num_query, const grid3_t grid, - const prec *f, const int ny, const prec *dg) + const prec *f, const int ny, const prec *dg, const int zhat) { int q = threadIdx.x + blockDim.x * blockIdx.x; if (q >= num_query) { diff --git a/src/topography/sources/sources.c b/src/topography/sources/sources.c index 7c99f45..89564e0 100644 --- a/src/topography/sources/sources.c +++ b/src/topography/sources/sources.c @@ -86,18 +86,19 @@ void sources_add_curvilinear(prec *d_xx, prec *d_yy, prec *d_zz, prec *d_xy, if (!use) return; int ny = f->size[1]; + // last argument specifies if the grid is cell-centered in the z-direction source_add_curvilinear(d_xx, &Mxx, step, h, dt, f->d_f_c, ny, g->d_g3_c, - grid_num); + grid_num, 1); source_add_curvilinear(d_yy, &Myy, step, h, dt, f->d_f_c, ny, g->d_g3_c, - grid_num); + grid_num, 1); source_add_curvilinear(d_zz, &Mzz, step, h, dt, f->d_f_c, ny, g->d_g3_c, - grid_num); + grid_num, 1); source_add_curvilinear(d_xy, &Mxy, step, h, dt, f->d_f, ny, g->d_g3_c, - grid_num); + grid_num, 1); source_add_curvilinear(d_xz, &Mxz, step, h, dt, f->d_f_1, ny, g->d_g3, - grid_num); + grid_num, 0); source_add_curvilinear(d_yz, &Myz, step, h, dt, f->d_f_2, ny, g->d_g3, - grid_num); + grid_num, 0); } source_t sources_get_source(enum grid_types grid_type) From b4c635321f8beedf171d8538bef2017337554d29 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 7 Dec 2020 15:33:06 -0800 Subject: [PATCH 18/56] fix source amplitude errors for sources placed near the boundary at the cell-centered grid points. --- src/topography/sources/source.cu | 39 +++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 0a812cd..901e778 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -96,6 +96,36 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, prec dth = dt / (h * h * h); + // Quadrature weights near the top boundary in the z-direction. First weight is on the + // boundary + // hweights: weights at the nodal grid points + const prec hweights[4] = {0.34939236111111110494320541874913, + 1.24348958333333325931846502498956, + 0.88151041666666662965923251249478, + 1.02560763888888883954564334999304}; + // hhatweights: weights at the cell-centered grid points + const prec hhatweights[4] = {0.12638888888888888395456433499930, + 0.84635416666666662965923251249478, + 1.03298611111111116045435665000696, + 0.99427083333333332593184650249896}; + + int nz = grid.size.z; + // Print statements used for debugging + //printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); + //for (int k = 0; k < num_basis; ++k) + // printf("%d ", iz[q] + k); + //printf("| "); + //for (int k = 0; k < num_basis; ++k) + // printf("%f ", lz[q * num_basis + k]); + //printf("| "); + //if (zhat == 0) { + //for (int k = 0; k < num_basis; ++k) + // printf("%d ", nz - (iz[q] + 2 + k)); + //} else { + //for (int k = 0; k < num_basis; ++k) + // printf("%d ", nz - (iz[q] + 1 + k)); + //} + //printf("\n"); for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { @@ -103,9 +133,16 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, 1.0 / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k)); size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); + prec w = 1.0f; + int offset_z = nz - (iz[q] + k + 2); + int offset_zhat = nz - (iz[q] + k + 1); + if (zhat == 0 && offset_z < 4 && offset_z >= 0) + w = hweights[offset_z]; + if (zhat == 1 && offset_zhat < 4 && offset_zhat >= 0) + w = hhatweights[offset_zhat]; prec value = - dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * - in[lidx[q]] * Ji; + in[lidx[q]] * Ji * w; #if USE_ATOMICS atomicAdd(&out[pos], value); #else From fdebaf0cf72cf888186cb36507b737fcdc175c82 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 7 Dec 2020 21:54:55 -0800 Subject: [PATCH 19/56] Fix wrong quadrature weights. --- src/topography/sources/source.cu | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 901e778..62b4ab1 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -96,18 +96,14 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, prec dth = dt / (h * h * h); - // Quadrature weights near the top boundary in the z-direction. First weight is on the + // Reciprocal quadrature weights near the top boundary in the z-direction. First weight is on the // boundary // hweights: weights at the nodal grid points - const prec hweights[4] = {0.34939236111111110494320541874913, - 1.24348958333333325931846502498956, - 0.88151041666666662965923251249478, - 1.02560763888888883954564334999304}; + const prec hweights[4] = {3.55599789310935, 0.6905974224013051, + 1.4771520525102637, 0.914256470417062}; // hhatweights: weights at the cell-centered grid points - const prec hhatweights[4] = {0.12638888888888888395456433499930, - 0.84635416666666662965923251249478, - 1.03298611111111116045435665000696, - 0.99427083333333332593184650249896}; + const prec hhatweights[4] = {2.9022824945274315, 2.28681149230364, + 0.7658753535345706, 1.0959408329892313}; int nz = grid.size.z; // Print statements used for debugging From be130ec636eb037c305f698ff41d2c1142e84393 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sun, 13 Dec 2020 15:20:22 -0800 Subject: [PATCH 20/56] change step to size_t in buffer. --- include/buffers/buffer.h | 2 +- src/buffers/buffer.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/buffers/buffer.h b/include/buffers/buffer.h index 5d826b7..a4c2f32 100644 --- a/include/buffers/buffer.h +++ b/include/buffers/buffer.h @@ -214,7 +214,7 @@ void buffer_copy_to_device(buffer_t *buffer, size_t step); * buffer: Buffer data structure. * step: Time step to query buffer at. */ -void buffer_copy_to_host(buffer_t *buffer, int step); +void buffer_copy_to_host(buffer_t *buffer, size_t step); #ifdef __cplusplus } diff --git a/src/buffers/buffer.c b/src/buffers/buffer.c index 5d9d13e..dbc7f4b 100644 --- a/src/buffers/buffer.c +++ b/src/buffers/buffer.c @@ -99,7 +99,7 @@ void buffer_copy_to_device(buffer_t *buffer, size_t step) buffer->d_buffer_bytes, cudaMemcpyHostToDevice)); } -void buffer_copy_to_host(buffer_t *buffer, int step) +void buffer_copy_to_host(buffer_t *buffer, size_t step) { if (!buffer_is_device_full(buffer, step)) return; From e4a5aea5ac86410717b1d042c3edf17652cd590f Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sun, 13 Dec 2020 17:25:30 -0800 Subject: [PATCH 21/56] fix integer overflow in mpi_io_indexed. --- src/mpi/io.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/mpi/io.c b/src/mpi/io.c index ac2f825..dbc9af4 100644 --- a/src/mpi/io.c +++ b/src/mpi/io.c @@ -58,22 +58,27 @@ mpi_io_idx_t mpi_io_idx_init(MPI_Comm comm, int rank, int *indices, int *blocklen, size_t num_blocks, size_t num_writes) { mpi_io_idx_t out = {.comm = comm, .rank = rank}; - int *offsets = malloc(sizeof(offsets) * num_blocks); + MPI_Aint *offsets = malloc(sizeof(offsets) * num_blocks); + int *offsets2 = malloc(sizeof(offsets2) * num_blocks); out.num_bytes = 0; out.num_elements = 0; out.offset = 0; + int size; + MPICHK2(MPI_Type_size(MPI_PREC, &size), rank); for (size_t i = 0; i < num_blocks; ++i) { - offsets[i] = indices[i] * num_writes; + offsets[i] = indices[i] * num_writes * size; out.num_elements += blocklen[i]; } out.num_writes = num_writes; out.current_write = 0; out.num_bytes = blocklen[0] * sizeof(prec); - - MPICHK2(MPI_Type_indexed(num_blocks, blocklen, offsets, MPI_PREC, - &out.dtype), - rank); + + MPICHK2(MPI_Type_create_hindexed(num_blocks, + blocklen, + offsets, + MPI_PREC, + &out.dtype), rank); MPI_Type_commit(&out.dtype); free(offsets); return out; From 8749550e3aa6f9ab23d8fe2be3a9aa46c8cb63e9 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 28 Jan 2021 20:30:45 -0800 Subject: [PATCH 22/56] enable debugging statements and fix force boundary issue for a single point with no interpolation. --- src/topography/sources/source.c | 18 +++++++++++++++--- src/topography/sources/source.cu | 25 +++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 8521031..18385c0 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -17,6 +17,7 @@ #include #define OVERLAP 7.0 +#define DEBUG_SOURCE void source_init_indexed(source_t *src, const input_t *input, size_t num_reads); @@ -492,10 +493,10 @@ void source_init_common(source_t *src, const char *filename, grid_fill1(y1, y_grid); grid_fill1(z1, z_grid); - if (grid_type == XX) + if (grid_type == SX || grid_type == SY || grid_type == SZ || grid_type == X || grid_type == Y || grid_type == Z) { - printf("rank = %d, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", - rank, grid.shift.x, grid.shift.y, grid.shift.z, + printf("rank = %d, grid_type = %d, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", + rank, grid_type, grid.shift.x, grid.shift.y, grid.shift.z, j, x1[ngsl / 2], y1[ngsl / 2], z1[0], grid.gridspacing); @@ -517,6 +518,17 @@ void source_init_common(source_t *src, const char *filename, src->interpolation[j].lx[1], src->interpolation[j].lx[2], src->interpolation[j].lx[3]); + print("weights-y: %f %f %f %f \n", + src->interpolation[j].ly[0], + src->interpolation[j].ly[1], + src->interpolation[j].ly[2], + src->interpolation[j].ly[3]); + print("weights-z: %f %f %f %f \n", + src->interpolation[j].lz[0], + src->interpolation[j].lz[1], + src->interpolation[j].lz[2], + src->interpolation[j].lz[3]); + printf("---------------------------------------\n\n"); } } fflush(stdout); diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 62b4ab1..44b34f5 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -122,6 +122,7 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, // printf("%d ", nz - (iz[q] + 1 + k)); //} //printf("\n"); + // for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { @@ -139,6 +140,7 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, prec value = - dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]] * Ji * w; + #if USE_ATOMICS atomicAdd(&out[pos], value); #else @@ -190,16 +192,35 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, d1[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] - + make topography=1 x=1 y=1 source=1 test prec dth = dt / (h * h * h); + printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); + for (int k = 0; k < num_basis; ++k) + printf("%d ", iz[q] + k); + printf("| "); + for (int k = 0; k < num_basis; ++k) + printf("%f ", lz[q * num_basis + k]); + printf("| "); + for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { prec Ji = - quad_weight / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k) * _rho(i + ix[q], j + iy[q], iz[q] + k)); - size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); + if (isinf(Ji)) Ji = 0.f; + printf("quad_weight = %g, f = %g g = %g rho = %g Ji = %g, [%d %d %d] \n", quad_weight, + _f(i + ix[q], j + iy[q]), + _dg(iz[q] + k), + _rho(i + ix[q], j + iy[q], iz[q] + k), + Ji, i + ix[q], j + iy[q], iz[q] + k + ); + //size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); + int pos = + (iz[q] + k) + align + + (2 * align + nz) * ((ix[q] + i) + ngsl + 2) * (2 * ngsl + ny + 4) + + (2 * align + nz) * ((iy[q] + j) + ngsl + 2); prec value = -dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]] * Ji; #if USE_ATOMICS From a977b5e8b686821cd172632b5a0db707e73fa17c Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Fri, 29 Jan 2021 15:07:05 -0800 Subject: [PATCH 23/56] fix source in the x-direction. --- include/grid/grid_3d.h | 1 + src/grid/grid_3d.c | 23 ++++++++++++--- src/mpi/distribute.c | 2 +- src/topography/grids.c | 6 ++-- src/topography/sources/source.c | 2 +- src/topography/sources/source.cu | 48 +++++++++++++++++++++----------- src/topography/sources/sources.c | 2 -- 7 files changed, 56 insertions(+), 28 deletions(-) diff --git a/include/grid/grid_3d.h b/include/grid/grid_3d.h index ec518e1..354d59f 100644 --- a/include/grid/grid_3d.h +++ b/include/grid/grid_3d.h @@ -211,6 +211,7 @@ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_force_part_x(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_part_y(const _prec *x, const _prec q, const grid1_t grid); diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index 0b30b9e..1f7083a 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -317,15 +317,30 @@ int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid) return ERR_OUT_OF_BOUNDS_UPPER; } return SUCCESS; + +} + +int grid_in_bounds_force_part_x(const _prec *x, const _prec q, const grid1_t grid) +{ + _prec h = grid.gridspacing; + printf("q = %g x[0] = %g \n", q, x[0]); + if ( q - (x[0] - 0.5f * h - ngsl * h) < 0 ) { + return ERR_OUT_OF_BOUNDS_LOWER; + } + if ( q - (x[grid.size - 1] + 0.5f * h + ngsl * h) >= 0) { + return ERR_OUT_OF_BOUNDS_UPPER; + } + return SUCCESS; } int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid) { _prec h = grid.gridspacing; - if ( q - (x[0] - h / 2 - 2 * h) < 0 ) { + printf("x[0] = %g \n", x[0]); + if ( q - (x[0] - h / 2 - grid.padding * h) < 0 ) { return ERR_OUT_OF_BOUNDS_LOWER; } - if ( q - (x[grid.size - 1] + h / 2 + 2 * h) >= 0) { + if ( q - (x[grid.size - 1] + h / 2 + grid.padding * h) >= 0) { return ERR_OUT_OF_BOUNDS_UPPER; } return SUCCESS; @@ -333,10 +348,10 @@ int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid) int grid_in_bounds_part_y(const _prec *x, const _prec q, const grid1_t grid) { _prec h = grid.gridspacing; - if ( q - (x[0] - h / 2 - 1.5 * h) < 0 ) { + if ( q - (x[0] - h - grid.padding * h) < 0 ) { return ERR_OUT_OF_BOUNDS_LOWER; } - if ( q - (x[grid.size - 1] + h / 2 + 1.5 * h) >= 0) { + if ( q - (x[grid.size - 1] + h + grid.padding * h) >= 0) { return ERR_OUT_OF_BOUNDS_UPPER; } return SUCCESS; diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index 5e3f917..e9af346 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -27,7 +27,7 @@ __inline__ int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const int is_source) { - int inbounds_x = is_source ? grid_in_bounds_part_x(x, qx, grid_x) : grid_in_bounds_ext1(x, qx, grid_x); + int inbounds_x = is_source ? grid_in_bounds_force_part_x(x, qx, grid_x) : grid_in_bounds_ext1(x, qx, grid_x); int inbounds_y = is_source ? grid_in_bounds_part_y(y, qy, grid_y) : grid_in_bounds_ext1(y, qy, grid_y); if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) return 1; diff --git a/src/topography/grids.c b/src/topography/grids.c index 57ec2af..1e8f250 100644 --- a/src/topography/grids.c +++ b/src/topography/grids.c @@ -29,9 +29,9 @@ grids_t grids_init(const int nx, const int ny, const int nz, const int coord_x, grids.z = grid_init(size, grid_z(), coord, bnd1, bnd2, 0, h); // Point force grids - grids.sx = grid_init(size, grid_x(), coord, bnd1, bnd2, ngsl / 2, h); - grids.sy = grid_init(size, grid_y(), coord, bnd1, bnd2, ngsl / 2, h); - grids.sz = grid_init(size, grid_z(), coord, bnd1, bnd2, ngsl / 2, h); + grids.sx = grid_init(size, grid_x(), coord, bnd1, bnd2, 0 * ngsl / 2, h); + grids.sy = grid_init(size, grid_y(), coord, bnd1, bnd2, 0 * ngsl / 2, h); + grids.sz = grid_init(size, grid_z(), coord, bnd1, bnd2, 0 * ngsl / 2, h); // stress grids grids.xx = grid_init(size, grid_xx(), coord, bnd1, bnd2, ngsl / 2, h); diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 18385c0..d4e9388 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -493,7 +493,7 @@ void source_init_common(source_t *src, const char *filename, grid_fill1(y1, y_grid); grid_fill1(z1, z_grid); - if (grid_type == SX || grid_type == SY || grid_type == SZ || grid_type == X || grid_type == Y || grid_type == Z) + if (grid_type == SX || grid_type == SY || grid_type == SZ) { printf("rank = %d, grid_type = %d, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", rank, grid_type, grid.shift.x, grid.shift.y, grid.shift.z, diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 44b34f5..d298a36 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -123,6 +123,17 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, //} //printf("\n"); // + // + // + // + //printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); + //for (int k = 0; k < num_basis; ++k) + // printf("%d ", ix[q] + k); + //printf("| "); + //for (int k = 0; k < num_basis; ++k) + // printf("%f ", lx[q * num_basis + k]); + //printf("| "); + //printf("\n"); for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { @@ -192,35 +203,38 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, d1[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] - make topography=1 x=1 y=1 source=1 test + prec dth = dt / (h * h * h); - printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); - for (int k = 0; k < num_basis; ++k) - printf("%d ", iz[q] + k); - printf("| "); - for (int k = 0; k < num_basis; ++k) - printf("%f ", lz[q * num_basis + k]); - printf("| "); + //printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); + //for (int k = 0; k < num_basis; ++k) + // printf("%d ", ix[q] + k); + //printf("| "); + //for (int k = 0; k < num_basis; ++k) + // printf("%f ", lx[q * num_basis + k]); + //printf("| "); + //printf("\n"); for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { + // Do not apply stencil at halo points + if ( ix[q] + i >= nx + ngsl || ix[q] + i < ngsl ) continue; prec Ji = - quad_weight / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k) * _rho(i + ix[q], j + iy[q], iz[q] + k)); - if (isinf(Ji)) Ji = 0.f; - printf("quad_weight = %g, f = %g g = %g rho = %g Ji = %g, [%d %d %d] \n", quad_weight, - _f(i + ix[q], j + iy[q]), - _dg(iz[q] + k), - _rho(i + ix[q], j + iy[q], iz[q] + k), - Ji, i + ix[q], j + iy[q], iz[q] + k - ); + //if (isinf(Ji)) Ji = 0.f; + //printf("quad_weight = %g, f = %g g = %g rho = %g Ji = %g, [%d %d %d] \n", quad_weight, + // _f(i + ix[q], j + iy[q]), + // _dg(iz[q] + k), + // _rho(i + ix[q], j + iy[q], iz[q] + k), + // Ji, i + ix[q], j + iy[q], iz[q] + k + // ); //size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); int pos = (iz[q] + k) + align + - (2 * align + nz) * ((ix[q] + i) + ngsl + 2) * (2 * ngsl + ny + 4) + - (2 * align + nz) * ((iy[q] + j) + ngsl + 2); + (2 * align + nz) * ((ix[q] + i) + 2) * (2 * ngsl + ny + 4) + + (2 * align + nz) * ((iy[q] + j) + 2); prec value = -dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]] * Ji; #if USE_ATOMICS diff --git a/src/topography/sources/sources.c b/src/topography/sources/sources.c index 89564e0..475fb7c 100644 --- a/src/topography/sources/sources.c +++ b/src/topography/sources/sources.c @@ -34,8 +34,6 @@ void sources_init(const char *filename, const grids_t *grids, int ngrids, if (!use) return; - // FIXME: Add support for multiple grids - if (rank == 0) { AWPCHK(input_init(&input, filename)); } From 4142ba3b7849372a6fac624ee268eafabb8ef215 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Fri, 29 Jan 2021 15:22:38 -0800 Subject: [PATCH 24/56] fix force in the y direction. --- include/grid/grid_3d.h | 1 + src/grid/grid_3d.c | 13 ++++++++++++- src/mpi/distribute.c | 2 +- src/topography/sources/source.cu | 3 ++- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/grid/grid_3d.h b/include/grid/grid_3d.h index 354d59f..05869cf 100644 --- a/include/grid/grid_3d.h +++ b/include/grid/grid_3d.h @@ -212,6 +212,7 @@ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_force_part_x(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_force_part_y(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_part_y(const _prec *x, const _prec q, const grid1_t grid); diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index 1f7083a..c353749 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -323,7 +323,18 @@ int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid) int grid_in_bounds_force_part_x(const _prec *x, const _prec q, const grid1_t grid) { _prec h = grid.gridspacing; - printf("q = %g x[0] = %g \n", q, x[0]); + if ( q - (x[0] - 0.5f * h - ngsl * h) < 0 ) { + return ERR_OUT_OF_BOUNDS_LOWER; + } + if ( q - (x[grid.size - 1] + 0.5f * h + ngsl * h) >= 0) { + return ERR_OUT_OF_BOUNDS_UPPER; + } + return SUCCESS; +} + +int grid_in_bounds_force_part_y(const _prec *x, const _prec q, const grid1_t grid) +{ + _prec h = grid.gridspacing; if ( q - (x[0] - 0.5f * h - ngsl * h) < 0 ) { return ERR_OUT_OF_BOUNDS_LOWER; } diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index e9af346..049b87f 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -28,7 +28,7 @@ __inline__ int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const int is_source) { int inbounds_x = is_source ? grid_in_bounds_force_part_x(x, qx, grid_x) : grid_in_bounds_ext1(x, qx, grid_x); - int inbounds_y = is_source ? grid_in_bounds_part_y(y, qy, grid_y) : grid_in_bounds_ext1(y, qy, grid_y); + int inbounds_y = is_source ? grid_in_bounds_force_part_y(y, qy, grid_y) : grid_in_bounds_ext1(y, qy, grid_y); if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) return 1; return 0; diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index d298a36..a883a42 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -219,7 +219,8 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { // Do not apply stencil at halo points - if ( ix[q] + i >= nx + ngsl || ix[q] + i < ngsl ) continue; + if ( ix[q] + i >= nx + ngsl || ix[q] + i < ngsl || + iy[q] + j >= ny + ngsl || iy[q] + j < ngsl ) continue; prec Ji = - quad_weight / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k) * _rho(i + ix[q], j + iy[q], iz[q] + k)); From 10aa7d5ad2e0415c14738a99b8366645bdab32c3 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Fri, 29 Jan 2021 16:17:13 -0800 Subject: [PATCH 25/56] add partitioning interface, but this change breaks the gaussian hill test. --- include/mpi/distribute.h | 5 +++-- include/topography/sources/source.h | 9 +++++++-- src/mpi/distribute.c | 31 +++++++++++++++++++++++------ src/topography/receivers/receiver.c | 3 +-- src/topography/sources/forces.c | 6 +++--- src/topography/sources/source.c | 12 +++++------ src/topography/sources/source.cu | 4 ++-- src/topography/sources/sources.c | 12 +++++------ 8 files changed, 53 insertions(+), 29 deletions(-) diff --git a/include/mpi/distribute.h b/include/mpi/distribute.h index 22cce2b..2e0f262 100644 --- a/include/mpi/distribute.h +++ b/include/mpi/distribute.h @@ -4,6 +4,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -13,9 +14,9 @@ enum dist_options {DIST_COUNT, DIST_INSERT_INDICES}; int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, const size_t n, const grid3_t grid, const int *grid_numbers, - const int grid_number, const int is_source, const enum dist_options mode); + const int grid_number, const enum source_type st, const enum dist_options mode); -int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const int is_source); +int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const enum source_type st); #ifdef __cplusplus } #endif diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index a2f9a40..b196940 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -58,6 +58,10 @@ typedef struct { } source_t; +// Source type determines how to partition either a moment tensor source, force, or receiver, across +// a mpi subdomain. +enum source_type {MOMENT_TENSOR, FORCE, RECEIVER}; + source_t source_init(const char *file_end, const enum grid_types grid_type, const input_t *input, @@ -65,7 +69,8 @@ source_t source_init(const char *file_end, const int ngrids, const f_grid_t *f, const int rank, - const MPI_Comm comm); + const MPI_Comm comm, + const enum source_type st); void source_finalize(source_t *src); @@ -82,7 +87,7 @@ void source_init_common(source_t *src, const char *filename, const f_grid_t *f, const int rank, const MPI_Comm comm, - const int is_source); + const enum source_type st); MPI_Comm source_communicator(source_t *src, const int rank, const MPI_Comm comm); void source_read(source_t *src, size_t step); diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index 049b87f..f780533 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -6,6 +6,7 @@ #include #include #include +#include #include /* Distributes indices based on which part of space they belong to. @@ -25,10 +26,28 @@ */ -__inline__ int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const int is_source) -{ - int inbounds_x = is_source ? grid_in_bounds_force_part_x(x, qx, grid_x) : grid_in_bounds_ext1(x, qx, grid_x); - int inbounds_y = is_source ? grid_in_bounds_force_part_y(y, qy, grid_y) : grid_in_bounds_ext1(y, qy, grid_y); +__inline__ int dist_indices_in_bounds(const prec qx, const prec qy, + const prec *x, const prec *y, + grid1_t grid_x, grid1_t grid_y, + const enum source_type st) { + int inbounds_x = 0; + int inbounds_y = 0; + printf("partition! st = %d \n", st); + switch (st) { + case MOMENT_TENSOR: + printf("moment tensor!\n"); + inbounds_x = grid_in_bounds_part_x(x, qx, grid_x); + inbounds_y = grid_in_bounds_part_y(y, qy, grid_y); + break; + case FORCE: + inbounds_x = grid_in_bounds_force_part_x(x, qx, grid_x); + inbounds_y = grid_in_bounds_force_part_y(y, qy, grid_y); + break; + case RECEIVER: + inbounds_x = grid_in_bounds_ext1(x, qx, grid_x); + inbounds_y = grid_in_bounds_ext1(y, qy, grid_y); + break; + } if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) return 1; return 0; @@ -36,7 +55,7 @@ __inline__ int dist_indices_in_bounds(const prec qx, const prec qy, const prec * int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, const size_t n, const grid3_t grid, const int *grid_numbers, - const int grid_number, const int is_source, const enum dist_options mode) + const int grid_number, const enum source_type st, const enum dist_options mode) { size_t nlocal = 0; @@ -53,7 +72,7 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, size_t j = *nidx; for (size_t i = 0; i < n; ++i) { - if (dist_indices_in_bounds(qx[i], qy[i], x, y, grid_x, grid_y, is_source) && + if (dist_indices_in_bounds(qx[i], qy[i], x, y, grid_x, grid_y, st) && grid_numbers[i] == grid_number) { switch (mode) diff --git a/src/topography/receivers/receiver.c b/src/topography/receivers/receiver.c index 326ab33..a30bb22 100644 --- a/src/topography/receivers/receiver.c +++ b/src/topography/receivers/receiver.c @@ -27,9 +27,8 @@ recv_t receiver_init(const char *filename, strcpy(recv.filename, filename); - const int is_source = 0; source_init_common(&recv, filename, grid_type, input, grids, ngrids, f, - rank, comm, is_source); + rank, comm, RECEIVER); if (!recv.use) { return recv; diff --git a/src/topography/sources/forces.c b/src/topography/sources/forces.c index 812f134..12d01d1 100644 --- a/src/topography/sources/forces.c +++ b/src/topography/sources/forces.c @@ -39,9 +39,9 @@ void forces_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - Fx = source_init("fx", SX, &input, grids, ngrids, f, rank, comm); - Fy = source_init("fy", SY, &input, grids, ngrids, f, rank, comm); - Fz = source_init("fz", SZ, &input, grids, ngrids, f, rank, comm); + Fx = source_init("fx", SX, &input, grids, ngrids, f, rank, comm, FORCE); + Fy = source_init("fy", SY, &input, grids, ngrids, f, rank, comm, FORCE); + Fz = source_init("fz", SZ, &input, grids, ngrids, f, rank, comm, FORCE); if (Fx.use) AWPCHK(forces_boundary_check(&Fx)); diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index d4e9388..bd2e33e 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -28,13 +28,13 @@ source_t source_init(const char *file_end, const int ngrids, const f_grid_t *f, const int rank, - const MPI_Comm comm) + const MPI_Comm comm, + const enum source_type st) { source_t src; - const int is_source = 1; source_init_common(&src, file_end, grid_type, input, grids, ngrids, f, - rank, comm, is_source); + rank, comm, st); if (!src.use) { @@ -152,7 +152,7 @@ void source_init_common(source_t *src, const char *filename, const grids_t *grids, const int ngrids, const f_grid_t *f, - const int rank, const MPI_Comm comm, const int is_source) + const int rank, const MPI_Comm comm, const enum source_type st) { sprintf(src->filename, "%s_%s", input->file, filename); @@ -226,7 +226,7 @@ void source_init_common(source_t *src, const char *filename, grid3_t grid = grids_select(grid_type, &grids[j]); AWPCHK(dist_indices(&src->indices, &num_sources_in_block, x, y, input->length, grid, grid_number, j, - is_source, DIST_COUNT)); + st, DIST_COUNT)); src_count[j] = src->length; src->length += num_sources_in_block; } @@ -237,7 +237,7 @@ void source_init_common(source_t *src, const char *filename, grid3_t grid = grids_select(grid_type, &grids[j]); AWPCHK(dist_indices(&src->indices, &src_count[j], x, y, input->length, grid, grid_number, j, - is_source, DIST_INSERT_INDICES)); + st, DIST_INSERT_INDICES)); } free(grid_number); free(src_count); diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index a883a42..43ca137 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -201,8 +201,8 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, #define _rho(i, j, k) \ d1[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] + (2 * align + nz) * ((i) + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + 2)] prec dth = dt / (h * h * h); diff --git a/src/topography/sources/sources.c b/src/topography/sources/sources.c index 475fb7c..ea3a015 100644 --- a/src/topography/sources/sources.c +++ b/src/topography/sources/sources.c @@ -40,12 +40,12 @@ void sources_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - Mxx = source_init("xx", XX, &input, grids, ngrids, f, rank, comm); - Myy = source_init("yy", YY, &input, grids, ngrids, f, rank, comm); - Mzz = source_init("zz", ZZ, &input, grids, ngrids, f, rank, comm); - Mxy = source_init("xy", XY, &input, grids, ngrids, f, rank, comm); - Mxz = source_init("xz", XZ, &input, grids, ngrids, f, rank, comm); - Myz = source_init("yz", YZ, &input, grids, ngrids, f, rank, comm); + Mxx = source_init("xx", XX, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); + Myy = source_init("yy", YY, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); + Mzz = source_init("zz", ZZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); + Mxy = source_init("xy", XY, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); + Mxz = source_init("xz", XZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); + Myz = source_init("yz", YZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); } void sources_read(size_t step) From ce414a6db6fffca2e150209c1c81a2e0c981cc2f Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sat, 30 Jan 2021 20:38:33 -0800 Subject: [PATCH 26/56] remove unused macro. --- include/topography/metrics/metrics.h | 5 +---- src/topography/metrics/metrics.c | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/include/topography/metrics/metrics.h b/include/topography/metrics/metrics.h index f4e6a35..4b63697 100644 --- a/include/topography/metrics/metrics.h +++ b/include/topography/metrics/metrics.h @@ -25,12 +25,9 @@ // This parameter pads the compute region. Its needed for the computation of // derivative and interpolation stencils. Do not change its value. -#define pmetrics_f_index(g,i,j) ((g)->offset[1] + (g)->bounds_y[0] + j) + \ +#define metrics_f_index(g,i,j) ((g)->offset[1] + (g)->bounds_y[0] + j) + \ ((g)->offset[0] + (g)->bounds_x[0] + i) * \ (g)->slice -#define metrics_f_index(g,i,j) ((g).offset[1] + (g).bounds_y[0] + j) + \ - ((g).offset[0] + (g).bounds_x[0] + i) * \ - (g).slice static const int metrics_padding = 8; diff --git a/src/topography/metrics/metrics.c b/src/topography/metrics/metrics.c index e302250..3a0d233 100644 --- a/src/topography/metrics/metrics.c +++ b/src/topography/metrics/metrics.c @@ -211,7 +211,7 @@ int metrics_interpolate_f_point(const f_grid_t *f, prec *out, const prec *in, out[q] = 0.0; for (int i = 0; i < deg + 1; ++i) { for (int j = 0; j < deg + 1; ++j) { - int pos = pmetrics_f_index(f, ix + i, iy + j); + int pos = metrics_f_index(f, ix + i, iy + j); out[q] += lx[i] * ly[j] * in[pos]; } } From cafe12d78849c629138d488ff9e2186f154eae02 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sat, 30 Jan 2021 20:39:34 -0800 Subject: [PATCH 27/56] fix output of density. --- src/topography/receivers/sgt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/topography/receivers/sgt.c b/src/topography/receivers/sgt.c index c92b876..2267121 100644 --- a/src/topography/receivers/sgt.c +++ b/src/topography/receivers/sgt.c @@ -77,7 +77,7 @@ void sgt_write_material_properties(const prec *d_d1, const prec *d_lami, char *filename; filename = malloc(sizeof filename * len); sprintf(filename, "%sd1", mat.filename); - receiver_write(&mat, 0, filename, d_lami, grid_num); + receiver_write(&mat, 0, filename, d_d1, grid_num); sprintf(filename, "%slami", mat.filename); receiver_write(&mat, 0, filename, d_lami, grid_num); sprintf(filename, "%smui", mat.filename); From 0eed1b483795f0891e7c78eab990a1720ba1a722 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sat, 30 Jan 2021 21:18:23 -0800 Subject: [PATCH 28/56] remove unused grids. --- include/topography/grids.h | 4 ---- src/topography/grids.c | 11 +++-------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/include/topography/grids.h b/include/topography/grids.h index 7f956d7..8655157 100644 --- a/include/topography/grids.h +++ b/include/topography/grids.h @@ -16,10 +16,6 @@ typedef struct grid3_t x; grid3_t y; grid3_t z; - - grid3_t sx; - grid3_t sy; - grid3_t sz; grid3_t xx; grid3_t yy; diff --git a/src/topography/grids.c b/src/topography/grids.c index 1e8f250..97a3821 100644 --- a/src/topography/grids.c +++ b/src/topography/grids.c @@ -27,11 +27,6 @@ grids_t grids_init(const int nx, const int ny, const int nz, const int coord_x, grids.x = grid_init(size, grid_x(), coord, bnd1, bnd2, 0, h); grids.y = grid_init(size, grid_y(), coord, bnd1, bnd2, 0, h); grids.z = grid_init(size, grid_z(), coord, bnd1, bnd2, 0, h); - - // Point force grids - grids.sx = grid_init(size, grid_x(), coord, bnd1, bnd2, 0 * ngsl / 2, h); - grids.sy = grid_init(size, grid_y(), coord, bnd1, bnd2, 0 * ngsl / 2, h); - grids.sz = grid_init(size, grid_z(), coord, bnd1, bnd2, 0 * ngsl / 2, h); // stress grids grids.xx = grid_init(size, grid_xx(), coord, bnd1, bnd2, ngsl / 2, h); @@ -84,13 +79,13 @@ grid3_t grids_select(const enum grid_types grid_type, const grids_t *grids) return grids->z; break; case SX: - return grids->sx; + return grids->x; break; case SY: - return grids->sy; + return grids->y; break; case SZ: - return grids->sz; + return grids->z; break; case XX: return grids->xx; From 016f8c0d7b6c7c8e3a6f7cd941248e2962478951 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sat, 30 Jan 2021 22:26:37 -0800 Subject: [PATCH 29/56] rename partitioning functions and update partitioning bounds to minimize the amount of overlap. --- include/grid/grid_3d.h | 7 +++---- src/grid/grid_3d.c | 38 +++++++------------------------------- src/mpi/distribute.c | 14 ++++++-------- 3 files changed, 16 insertions(+), 43 deletions(-) diff --git a/include/grid/grid_3d.h b/include/grid/grid_3d.h index 05869cf..76f4535 100644 --- a/include/grid/grid_3d.h +++ b/include/grid/grid_3d.h @@ -211,10 +211,9 @@ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid); -int grid_in_bounds_force_part_x(const _prec *x, const _prec q, const grid1_t grid); -int grid_in_bounds_force_part_y(const _prec *x, const _prec q, const grid1_t grid); -int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid); -int grid_in_bounds_part_y(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_force(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_receiver(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_moment_tensor(const _prec *x, const _prec q, const grid1_t grid); /* * Fill the array `out` with the grid point values in the x-direction of a grid diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index c353749..bb146ee 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -307,7 +307,7 @@ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid) return SUCCESS; } -int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid) +int grid_in_bounds_receiver(const _prec *x, const _prec q, const grid1_t grid) { _prec h = grid.gridspacing; if ( q - (x[0] - h / 2) < 0 ) { @@ -320,49 +320,25 @@ int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid) } -int grid_in_bounds_force_part_x(const _prec *x, const _prec q, const grid1_t grid) +int grid_in_bounds_force(const _prec *x, const _prec q, const grid1_t grid) { _prec h = grid.gridspacing; - if ( q - (x[0] - 0.5f * h - ngsl * h) < 0 ) { + if ( q - (x[0] - 2 * h) < 0 ) { return ERR_OUT_OF_BOUNDS_LOWER; } - if ( q - (x[grid.size - 1] + 0.5f * h + ngsl * h) >= 0) { + if ( q - (x[grid.size - 1] + 2 * h) >= 0) { return ERR_OUT_OF_BOUNDS_UPPER; } return SUCCESS; } -int grid_in_bounds_force_part_y(const _prec *x, const _prec q, const grid1_t grid) +int grid_in_bounds_moment_tensor(const _prec *x, const _prec q, const grid1_t grid) { _prec h = grid.gridspacing; - if ( q - (x[0] - 0.5f * h - ngsl * h) < 0 ) { + if ( q - (x[0] - ngsl / 2 * h) < 0 ) { return ERR_OUT_OF_BOUNDS_LOWER; } - if ( q - (x[grid.size - 1] + 0.5f * h + ngsl * h) >= 0) { - return ERR_OUT_OF_BOUNDS_UPPER; - } - return SUCCESS; -} - -int grid_in_bounds_part_x(const _prec *x, const _prec q, const grid1_t grid) -{ - _prec h = grid.gridspacing; - printf("x[0] = %g \n", x[0]); - if ( q - (x[0] - h / 2 - grid.padding * h) < 0 ) { - return ERR_OUT_OF_BOUNDS_LOWER; - } - if ( q - (x[grid.size - 1] + h / 2 + grid.padding * h) >= 0) { - return ERR_OUT_OF_BOUNDS_UPPER; - } - return SUCCESS; -} -int grid_in_bounds_part_y(const _prec *x, const _prec q, const grid1_t grid) -{ - _prec h = grid.gridspacing; - if ( q - (x[0] - h - grid.padding * h) < 0 ) { - return ERR_OUT_OF_BOUNDS_LOWER; - } - if ( q - (x[grid.size - 1] + h + grid.padding * h) >= 0) { + if ( q - (x[grid.size - 1] + ngsl / 2 * h) >= 0) { return ERR_OUT_OF_BOUNDS_UPPER; } return SUCCESS; diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index f780533..6164f5d 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -32,20 +32,18 @@ __inline__ int dist_indices_in_bounds(const prec qx, const prec qy, const enum source_type st) { int inbounds_x = 0; int inbounds_y = 0; - printf("partition! st = %d \n", st); switch (st) { case MOMENT_TENSOR: - printf("moment tensor!\n"); - inbounds_x = grid_in_bounds_part_x(x, qx, grid_x); - inbounds_y = grid_in_bounds_part_y(y, qy, grid_y); + inbounds_x = grid_in_bounds_moment_tensor(x, qx, grid_x); + inbounds_y = grid_in_bounds_moment_tensor(y, qy, grid_y); break; case FORCE: - inbounds_x = grid_in_bounds_force_part_x(x, qx, grid_x); - inbounds_y = grid_in_bounds_force_part_y(y, qy, grid_y); + inbounds_x = grid_in_bounds_force(x, qx, grid_x); + inbounds_y = grid_in_bounds_force(y, qy, grid_y); break; case RECEIVER: - inbounds_x = grid_in_bounds_ext1(x, qx, grid_x); - inbounds_y = grid_in_bounds_ext1(y, qy, grid_y); + inbounds_x = grid_in_bounds_receiver(x, qx, grid_x); + inbounds_y = grid_in_bounds_receiver(y, qy, grid_y); break; } if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) From 5e93b1f5ba5536558d110ea6af455b47713e0af4 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sat, 30 Jan 2021 22:29:36 -0800 Subject: [PATCH 30/56] remove debug statements. --- src/topography/sources/source.c | 1 - src/topography/sources/source.cu | 78 +++++++------------------------- 2 files changed, 16 insertions(+), 63 deletions(-) diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index bd2e33e..68a0978 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -17,7 +17,6 @@ #include #define OVERLAP 7.0 -#define DEBUG_SOURCE void source_init_indexed(source_t *src, const input_t *input, size_t num_reads); diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 43ca137..8934a45 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -89,15 +89,13 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, return; } -#define _f(i, j) \ - f[(j) + align + \ - ((i) + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] #define _dg(k) dg[(k) + align] prec dth = dt / (h * h * h); - // Reciprocal quadrature weights near the top boundary in the z-direction. First weight is on the - // boundary + // Reciprocal quadrature weights near the top boundary in the z-direction. First weight is + // on the boundary // hweights: weights at the nodal grid points const prec hweights[4] = {3.55599789310935, 0.6905974224013051, 1.4771520525102637, 0.914256470417062}; @@ -106,41 +104,16 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, 0.7658753535345706, 1.0959408329892313}; int nz = grid.size.z; - // Print statements used for debugging - //printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); - //for (int k = 0; k < num_basis; ++k) - // printf("%d ", iz[q] + k); - //printf("| "); - //for (int k = 0; k < num_basis; ++k) - // printf("%f ", lz[q * num_basis + k]); - //printf("| "); - //if (zhat == 0) { - //for (int k = 0; k < num_basis; ++k) - // printf("%d ", nz - (iz[q] + 2 + k)); - //} else { - //for (int k = 0; k < num_basis; ++k) - // printf("%d ", nz - (iz[q] + 1 + k)); - //} - //printf("\n"); - // - // - // - // - //printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); - //for (int k = 0; k < num_basis; ++k) - // printf("%d ", ix[q] + k); - //printf("| "); - //for (int k = 0; k < num_basis; ++k) - // printf("%f ", lx[q * num_basis + k]); - //printf("| "); - //printf("\n"); for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { prec Ji = 1.0 / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k)); - size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); + int pos = + (iz[q] + k) + align + + (2 * align + nz) * (ix[q] + i) * (2 * ngsl + ny + 4) + + (2 * align + nz) * (iy[q] + j); prec w = 1.0f; int offset_z = nz - (iz[q] + k + 2); int offset_zhat = nz - (iz[q] + k + 1); @@ -179,6 +152,7 @@ void cusource_add_force_H(const cu_interp_t *I, prec *out, const prec *in, CUCHK(cudaGetLastError()); } +#include __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, const prec *lx, const prec *ly, const prec *lz, const int num_basis, @@ -194,48 +168,28 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, return; } -#define _f(i, j) \ - f[(j) + align + \ - ((i) + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] #define _dg(k) dg[(k) + align] -#define _rho(i, j, k) \ - d1[(k) + align + \ - (2 * align + nz) * ((i) + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + 2)] +#define _rho(i, j, k) \ + d1[(k) + align + (2 * align + nz) * (i) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * (j)] prec dth = dt / (h * h * h); - //printf("nz = %d %d offset = %d | ", grid.size.z, iz[q], nz - iz[q] - 1); - //for (int k = 0; k < num_basis; ++k) - // printf("%d ", ix[q] + k); - //printf("| "); - //for (int k = 0; k < num_basis; ++k) - // printf("%f ", lx[q * num_basis + k]); - //printf("| "); - //printf("\n"); - for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { // Do not apply stencil at halo points - if ( ix[q] + i >= nx + ngsl || ix[q] + i < ngsl || - iy[q] + j >= ny + ngsl || iy[q] + j < ngsl ) continue; + if ( ix[q] + i >= 2 + nx + ngsl || ix[q] + i < 2 + ngsl || + iy[q] + j >= 2 + ny + ngsl || iy[q] + j < 2 + ngsl ) continue; prec Ji = - quad_weight / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k) * _rho(i + ix[q], j + iy[q], iz[q] + k)); - //if (isinf(Ji)) Ji = 0.f; - //printf("quad_weight = %g, f = %g g = %g rho = %g Ji = %g, [%d %d %d] \n", quad_weight, - // _f(i + ix[q], j + iy[q]), - // _dg(iz[q] + k), - // _rho(i + ix[q], j + iy[q], iz[q] + k), - // Ji, i + ix[q], j + iy[q], iz[q] + k - // ); - //size_t pos = grid_index(grid, ix[q] + i, iy[q] + j, iz[q] + k); int pos = (iz[q] + k) + align + - (2 * align + nz) * ((ix[q] + i) + 2) * (2 * ngsl + ny + 4) + - (2 * align + nz) * ((iy[q] + j) + 2); + (2 * align + nz) * (ix[q] + i) * (2 * ngsl + ny + 4) + + (2 * align + nz) * (iy[q] + j); prec value = -dth * lx[q * num_basis + i] * ly[q * num_basis + j] * lz[q * num_basis + k] * in[lidx[q]] * Ji; #if USE_ATOMICS From 4c6de6fefb4c567ab375d33b4af4e905cd296288 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 4 Feb 2021 17:49:09 -0800 Subject: [PATCH 31/56] Fix SGT output. --- include/grid/grid_3d.h | 3 +-- include/topography/receivers/receiver.h | 1 + include/topography/sources/source.h | 6 +++--- src/awp/pmcl3d.c | 4 ++-- src/grid/grid_3d.c | 14 ++++++++++++++ src/mpi/distribute.c | 4 ++++ src/topography/receivers/receiver.c | 3 ++- src/topography/receivers/receivers.c | 6 +++--- src/topography/receivers/sgt.c | 14 +++++++------- 9 files changed, 37 insertions(+), 18 deletions(-) diff --git a/include/grid/grid_3d.h b/include/grid/grid_3d.h index 76f4535..24067f6 100644 --- a/include/grid/grid_3d.h +++ b/include/grid/grid_3d.h @@ -209,10 +209,9 @@ int grid_fill1(prec *out, const grid1_t grid); */ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid); -int grid_in_bounds_ext1(const _prec *x, const _prec q, const grid1_t grid); - int grid_in_bounds_force(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_receiver(const _prec *x, const _prec q, const grid1_t grid); +int grid_in_bounds_sgt(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_moment_tensor(const _prec *x, const _prec q, const grid1_t grid); /* diff --git a/include/topography/receivers/receiver.h b/include/topography/receivers/receiver.h index 1ec9fa4..16b6f63 100644 --- a/include/topography/receivers/receiver.h +++ b/include/topography/receivers/receiver.h @@ -6,6 +6,7 @@ typedef source_t recv_t; recv_t receiver_init(const char *filename, const enum grid_types grid_type, + const enum source_type st, const input_t *input, const grids_t *grids, const int ngrids, diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index b196940..0f485e2 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -58,9 +58,9 @@ typedef struct { } source_t; -// Source type determines how to partition either a moment tensor source, force, or receiver, across -// a mpi subdomain. -enum source_type {MOMENT_TENSOR, FORCE, RECEIVER}; +// Source type determines how to partition velocity and stress input/output types across +// an MPI subdomain. +enum source_type {MOMENT_TENSOR, FORCE, RECEIVER, SGT}; source_t source_init(const char *file_end, const enum grid_types grid_type, diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index 637c95e..6e855c6 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -1772,7 +1772,7 @@ int main(int argc, char **argv) for (p = 0; p < ngrids; p++) { receivers_write(d_u1[p], d_v1[p], d_w1[p], 0, nt, p); - sgt_write(d_xx[p], d_yy[p], d_zz[p], d_xy[0], d_xz[p], d_yz[p], 0, nt, p); + sgt_write(d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], 0, nt, p); } sources_read(0); forces_read(0); @@ -2484,7 +2484,7 @@ int main(int argc, char **argv) for (p = 0; p < ngrids; p++) { receivers_write(d_u1[p], d_v1[p], d_w1[p], cur_step, nt, p); - sgt_write(d_xx[p], d_yy[p], d_zz[p], d_xy[0], d_xz[p], d_yz[p], + sgt_write(d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], cur_step, nt, p); } diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index bb146ee..ff5f470 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -320,6 +320,20 @@ int grid_in_bounds_receiver(const _prec *x, const _prec q, const grid1_t grid) } +int grid_in_bounds_sgt(const _prec *x, const _prec q, const grid1_t grid) +{ + _prec h = grid.gridspacing; + if ( q - (x[0] - h / 2 + h * ngsl / 2) < 0 ) { + return ERR_OUT_OF_BOUNDS_LOWER; + } + if ( q - (x[grid.size - 1] + h / 2 - h * ngsl / 2) >= 0) { + return ERR_OUT_OF_BOUNDS_UPPER; + } + + return SUCCESS; + +} + int grid_in_bounds_force(const _prec *x, const _prec q, const grid1_t grid) { _prec h = grid.gridspacing; diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index 6164f5d..916dde3 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -45,6 +45,10 @@ __inline__ int dist_indices_in_bounds(const prec qx, const prec qy, inbounds_x = grid_in_bounds_receiver(x, qx, grid_x); inbounds_y = grid_in_bounds_receiver(y, qy, grid_y); break; + case SGT: + inbounds_x = grid_in_bounds_sgt(x, qx, grid_x); + inbounds_y = grid_in_bounds_sgt(y, qy, grid_y); + break; } if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) return 1; diff --git a/src/topography/receivers/receiver.c b/src/topography/receivers/receiver.c index a30bb22..91890a1 100644 --- a/src/topography/receivers/receiver.c +++ b/src/topography/receivers/receiver.c @@ -16,6 +16,7 @@ void receiver_init_indexed(recv_t *recv, const input_t *input, recv_t receiver_init(const char *filename, const enum grid_types grid_type, + const enum source_type st, const input_t *input, const grids_t *grids, const int ngrids, @@ -28,7 +29,7 @@ recv_t receiver_init(const char *filename, strcpy(recv.filename, filename); source_init_common(&recv, filename, grid_type, input, grids, ngrids, f, - rank, comm, RECEIVER); + rank, comm, st); if (!recv.use) { return recv; diff --git a/src/topography/receivers/receivers.c b/src/topography/receivers/receivers.c index d35ec6f..ea903e7 100644 --- a/src/topography/receivers/receivers.c +++ b/src/topography/receivers/receivers.c @@ -35,9 +35,9 @@ void receivers_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - rx = receiver_init("x", X, &input, grids, ngrids, f, rank, comm); - ry = receiver_init("y", Y, &input, grids, ngrids, f, rank, comm); - rz = receiver_init("z", Z, &input, grids, ngrids, f, rank, comm); + rx = receiver_init("x", X, RECEIVER, &input, grids, ngrids, f, rank, comm); + ry = receiver_init("y", Y, RECEIVER, &input, grids, ngrids, f, rank, comm); + rz = receiver_init("z", Z, RECEIVER, &input, grids, ngrids, f, rank, comm); } void receivers_finalize(void) diff --git a/src/topography/receivers/sgt.c b/src/topography/receivers/sgt.c index 2267121..41fe0f7 100644 --- a/src/topography/receivers/sgt.c +++ b/src/topography/receivers/sgt.c @@ -40,12 +40,12 @@ void sgt_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - Gxx = receiver_init("Gxx", XX, &input, grids, ngrids, f, rank, comm); - Gyy = receiver_init("Gyy", YY, &input, grids, ngrids, f, rank, comm); - Gzz = receiver_init("Gzz", ZZ, &input, grids, ngrids, f, rank, comm); - Gxy = receiver_init("Gxy", XY, &input, grids, ngrids, f, rank, comm); - Gxz = receiver_init("Gxz", XZ, &input, grids, ngrids, f, rank, comm); - Gyz = receiver_init("Gyz", YZ, &input, grids, ngrids, f, rank, comm); + Gxx = receiver_init("Gxx", XX, SGT, &input, grids, ngrids, f, rank, comm); + Gyy = receiver_init("Gyy", YY, SGT, &input, grids, ngrids, f, rank, comm); + Gzz = receiver_init("Gzz", ZZ, SGT, &input, grids, ngrids, f, rank, comm); + Gxy = receiver_init("Gxy", XY, SGT, &input, grids, ngrids, f, rank, comm); + Gxz = receiver_init("Gxz", XZ, SGT, &input, grids, ngrids, f, rank, comm); + Gyz = receiver_init("Gyz", YZ, SGT, &input, grids, ngrids, f, rank, comm); // Configure material input file so that it outputs without buffering input_t material_input = input; @@ -53,7 +53,7 @@ void sgt_init(const char *filename, const grids_t *grids, int ngrids, material_input.cpu_buffer_size = 1; material_input.steps = 1; material_input.num_writes = 1; - mat = receiver_init("", NODE, &material_input, grids, ngrids, f, rank, + mat = receiver_init("", NODE, RECEIVER, &material_input, grids, ngrids, f, rank, comm); } From 92dda2c4049c4d3e402813e77ab6650aaaf7b941 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 4 Feb 2021 22:03:12 -0800 Subject: [PATCH 32/56] add optimized stress kernel to interior region. --- src/topography/stress_attenuation.cu | 225 ++++----------------------- 1 file changed, 33 insertions(+), 192 deletions(-) diff --git a/src/topography/stress_attenuation.cu b/src/topography/stress_attenuation.cu index 9063519..c710fa9 100644 --- a/src/topography/stress_attenuation.cu +++ b/src/topography/stress_attenuation.cu @@ -7,6 +7,33 @@ #include #include + +// Threads in x, y, z +#ifndef STRIU_TX +#define STRIU_TX 32 +#endif + +#ifndef STRIU_TY +#define STRIU_TY 1 +#endif + +#ifndef STRIU_TZ +#define STRIU_TZ 4 +#endif + +// Unroll factor in CUDA x +#ifndef STRIU_RX +#define STRIU_RX 1 +#endif + +// Unroll factor in CUDA y +#ifndef STRIU_RY +#define STRIU_RY 2 +#endif + +#include "kernels/stress_attenuation.cu" +#include "kernels/stress_index_unroll.cuh" + inline dim3 set_grid(const dim3 block, const int3_t size, const dim3 loop) { dim3 out; @@ -33,15 +60,16 @@ void topo_stress_interior_H(topo_t *T) int shift = ngsl + 2; { - dim3 block(DTOPO_STR_111_X, DTOPO_STR_111_Y, - DTOPO_STR_111_Z); int3_t size = {T->stress_bounds_right[0] - T->stress_bounds_left[0], T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_112_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_111<<stream_i>>> + dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); + dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, + (size.y - 1) / (STRIU_RY * threads.y) + 1, + (size.x - 1) / (threads.z) + 1); + + dtopo_str_111_index_unroll<<stream_i>>> ( T->xx, T->yy, T->zz, T->xy, T->xz, T->yz, @@ -129,193 +157,6 @@ void topo_stress_interior_H(topo_t *T) } } -void topo_velocity_interior_H(topo_t *T) -{ - - if (!T->use) return; - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->velocity_grid_interior.x+TBX-1)/TBX, - (T->velocity_grid_interior.y+TBY-1)/TBY, - (T->velocity_grid_interior.z+TBZ-1)/TBZ); - // Compute velocities in the front send buffer region. - dtopo_vel_111<<stream_1>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[0], - T->velocity_bounds_right[1], - T->velocity_bounds_front[1]); - CUCHK(cudaGetLastError()); - - // Compute interior part excluding send buffer regions - dtopo_vel_111<<stream_i>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[1], - T->velocity_bounds_right[1], - T->velocity_bounds_back[0]); - CUCHK(cudaGetLastError()); - - // Compute back send buffer region - dtopo_vel_111<<stream_2>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_back[0], - T->velocity_bounds_right[1], - T->velocity_bounds_back[1]); - CUCHK(cudaGetLastError()); - - // Adjust grid size for boundary computation - grid.z = (TOP_BOUNDARY_SIZE+TBZ-1)/TBZ; - // Boundary stencils near free surface - - dtopo_vel_112<<stream_1>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[0], - T->velocity_bounds_right[1], - T->velocity_bounds_front[1]); - CUCHK(cudaGetLastError()); - - dtopo_vel_112<<stream_i>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[1], - T->velocity_bounds_right[1], - T->velocity_bounds_back[0]); - CUCHK(cudaGetLastError()); - - dtopo_vel_112<<stream_2>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_back[0], - T->velocity_bounds_right[1], - T->velocity_bounds_back[1]); - CUCHK(cudaGetLastError()); -} - void topo_stress_left_H(topo_t *T) { From 418f714c3ff8c111224cd9021382bee031e441c1 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 4 Feb 2021 22:06:54 -0800 Subject: [PATCH 33/56] add optimized kernel to left boundary. --- src/topography/stress_attenuation.cu | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/topography/stress_attenuation.cu b/src/topography/stress_attenuation.cu index c710fa9..999e948 100644 --- a/src/topography/stress_attenuation.cu +++ b/src/topography/stress_attenuation.cu @@ -177,7 +177,13 @@ void topo_stress_left_H(topo_t *T) dim3 grid = set_grid(block, size, loop); int shift = ngsl + 2; - dtopo_str_111<<stream_1>>> + + dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); + dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, + (size.y - 1) / (STRIU_RY * threads.y) + 1, + (size.x - 1) / (threads.z) + 1); + + dtopo_str_111_index_unroll<<stream_1>>> ( T->xx, T->yy, T->zz, T->xy, T->xz, T->yz, From e8ecccee318b61e98ed64c36dbed8699e00d5595 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 4 Feb 2021 22:11:26 -0800 Subject: [PATCH 34/56] add optimized stress kernel to right boundary. --- src/topography/stress_attenuation.cu | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/topography/stress_attenuation.cu b/src/topography/stress_attenuation.cu index 999e948..84c7e52 100644 --- a/src/topography/stress_attenuation.cu +++ b/src/topography/stress_attenuation.cu @@ -168,13 +168,9 @@ void topo_stress_left_H(topo_t *T) if (TOPO_DBG) { printf("launching %s(%d)\n", __func__, T->rank); } - dim3 block(DTOPO_STR_111_X, DTOPO_STR_111_Y, - DTOPO_STR_111_Z); int3_t size = {(int)T->stress_bounds_left[1] - T->stress_bounds_left[0], (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_111_LOOP_Z); - dim3 grid = set_grid(block, size, loop); int shift = ngsl + 2; @@ -283,14 +279,16 @@ void topo_stress_right_H(topo_t *T) int shift = ngsl + 2; { - dim3 block(DTOPO_STR_111_X, DTOPO_STR_111_Y, - DTOPO_STR_111_Z); int3_t size = {(int)T->stress_bounds_right[1] - T->stress_bounds_left[0], (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_111_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_111<<stream_2>>> + + dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); + dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, + (size.y - 1) / (STRIU_RY * threads.y) + 1, + (size.x - 1) / (threads.z) + 1); + + dtopo_str_111_index_unroll<<stream_2>>> ( T->xx, T->yy, T->zz, T->xy, T->xz, T->yz, From 87d57c2787d4f32f2cb8f2229c88e6b4c4372340 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 4 Feb 2021 22:12:11 -0800 Subject: [PATCH 35/56] forgot to add kernel :) --- src/topography/kernels/stress_index_unroll.cu | 745 ++++++++++++++++++ 1 file changed, 745 insertions(+) create mode 100644 src/topography/kernels/stress_index_unroll.cu diff --git a/src/topography/kernels/stress_index_unroll.cu b/src/topography/kernels/stress_index_unroll.cu new file mode 100644 index 0000000..4ffd5cd --- /dev/null +++ b/src/topography/kernels/stress_index_unroll.cu @@ -0,0 +1,745 @@ +#define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f_1(i, j) f_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f_2(i, j) f_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f2_c(i, j) f2_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f1_1(i, j) f1_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f2_1(i, j) f2_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f2_2(i, j) f2_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f_c(i, j) f_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f1_c(i, j) f1_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f1_2(i, j) f1_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _g3_c(k) g3_c[(k)] +#define _g_c(k) g_c[(k)] +#define _g(k) g[(k)] +#define _g3(k) g3[(k)] + +#define LDG(x) x + +template +__launch_bounds__ (tx*ty*tz) +__global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, _prec* RSTRCT zz, + _prec* RSTRCT xy, _prec* RSTRCT xz, _prec* RSTRCT yz, + _prec* RSTRCT r1, _prec* RSTRCT r2, _prec* RSTRCT r3, + _prec* RSTRCT r4, _prec* RSTRCT r5, _prec* RSTRCT r6, + _prec* RSTRCT u1, + _prec* RSTRCT v1, + _prec* RSTRCT w1, + const float *RSTRCT f, + const float *RSTRCT f1_1, const float *RSTRCT f1_2, + const float *RSTRCT f1_c, const float *RSTRCT f2_1, + const float *RSTRCT f2_2, const float *RSTRCT f2_c, + const float *RSTRCT f_1, const float *RSTRCT f_2, + const float *RSTRCT f_c, const float *RSTRCT g, + const float *RSTRCT g3, const float *RSTRCT g3_c, + const float *RSTRCT g_c, + const _prec *RSTRCT lam, + const _prec *RSTRCT mu, + const _prec *RSTRCT qp, + const _prec *RSTRCT coeff, + const _prec *RSTRCT qs, + const _prec *RSTRCT dcrjx, + const _prec *RSTRCT dcrjy, + const _prec *RSTRCT dcrjz, + const _prec *RSTRCT d_vx1, + const _prec *RSTRCT d_vx2, + const int *RSTRCT d_ww, + const _prec *RSTRCT d_wwo, + int NX, int ny, int nz, int rankx, int ranky, + int nzt, int s_i, int e_i, int s_j, int e_j) +{ + register int i, j, k; + register int j0, k0; + register int pos, pos_ip1, pos_im2, pos_im1; + register int pos_km2, pos_km1, pos_kp1, pos_kp2; + register int pos_jm2, pos_jm1, pos_jp1, pos_jp2; + register int pos_ik1, pos_jk1, pos_ijk, pos_ijk1,f_ww; + register _prec vs1, vs2, vs3, a1, tmp, vx1,f_wwo; + register _prec xl, xm, xmu1, xmu2, xmu3; + register _prec qpa, h, h1, h2, h3; + register _prec qpaw,hw,h1w,h2w,h3w; + register _prec f_vx1, f_vx2, f_dcrj, f_r, f_dcrjy, f_dcrjz; + register _prec f_rtmp; + register _prec f_u1, u1_ip1, u1_ip2, u1_im1; + register _prec f_v1, v1_im1, v1_ip1, v1_im2; + register _prec f_w1, w1_im1, w1_im2, w1_ip1; + _prec f_xx, f_yy, f_zz, f_xy, f_xz, f_yz; + + const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, + -0.6796875000000000, -0.0000000000000000, + 0.6796875000000000, -0.0937500000000000, + 0.0026041666666667}; + const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, + -0.6796875000000000, -0.0000000000000000, + 0.6796875000000000, -0.0937500000000000, + 0.0026041666666667}; + + + int dm_offset = 3; + k0 = na * (blockIdx.x * blockDim.x + threadIdx.x) + align; + j0 = nb * (blockIdx.y * blockDim.y + threadIdx.y) + s_j; + i = blockIdx.z * blockDim.z + threadIdx.z + s_i; + + float rxx[nb][na], ryy[nb][na], rzz[nb][na]; + float rxy[nb][na], rxz[nb][na], ryz[nb][na]; + float rr1[nb][na], rr2[nb][na], rr3[nb][na]; + float rr4[nb][na], rr5[nb][na], rr6[nb][na]; + + if (i >= e_i) + return; + if (j0 >= e_j) + return; + //if (k0 < dm_offset + align) + // return; + //if (k0 >= nz - 6 + align) + // return; + + +#pragma unroll + for (int b = 0; b < nb; ++b) { + j = j0 + b; +#pragma unroll + for (int a = 0; a < na; ++a) { + k = k0 + a; + + pos = i*d_slice_1+j*d_yline_1+k; + + + + u1_ip1 = u1[pos+d_slice_2]; + f_u1 = u1[pos+d_slice_1]; + u1_im1 = u1[pos]; + f_v1 = v1[pos+d_slice_1]; + v1_im1 = v1[pos]; + v1_im2 = v1[pos-d_slice_1]; + f_w1 = w1[pos+d_slice_1]; + w1_im1 = w1[pos]; + w1_im2 = w1[pos-d_slice_1]; + f_dcrjz = dcrjz[k]; + f_dcrjy = dcrjy[j]; + + // i - 1, j, k - 3: k + 3 + int m2p0m3 = pos - d_slice_2 - 3; + int m2p0m2 = pos - d_slice_2 - 2; + int m2p0m1 = pos - d_slice_2 - 1; + int m2p0p0 = pos - d_slice_2 + 0; + int m2p0p1 = pos - d_slice_2 + 1; + int m2p0p2 = pos - d_slice_2 + 2; + int m2p0p3 = pos - d_slice_2 + 3; + + + // i - 1, j, k - 3: k + 3 + int m1p0m3 = pos - d_slice_1 - 3; + int m1p0m2 = pos - d_slice_1 - 2; + int m1p0m1 = pos - d_slice_1 - 1; + int m1p0p0 = pos - d_slice_1 + 0; + int m1p0p1 = pos - d_slice_1 + 1; + int m1p0p2 = pos - d_slice_1 + 2; + int m1p0p3 = pos - d_slice_1 + 3; + + // i, j, k - 3: k + 3 + int p0p0m3 = pos - 3; + int p0p0m2 = pos - 2; + int p0p0m1 = pos - 1; + int p0p0p0 = pos + 0; + int p0p0p1 = pos + 1; + int p0p0p2 = pos + 2; + int p0p0p3 = pos + 3; + + // i + 1, j, k - 3: k + 3 + int p1p0m3 = pos + d_slice_1 - 3; + int p1p0m2 = pos + d_slice_1 - 2; + int p1p0m1 = pos + d_slice_1 - 1; + int p1p0p0 = pos + d_slice_1 + 0; + int p1p0p1 = pos + d_slice_1 + 1; + int p1p0p2 = pos + d_slice_1 + 2; + int p1p0p3 = pos + d_slice_1 + 3; + + // i + 2, j, k - 3: k + 3 + int p2p0m3 = pos + d_slice_2 - 3; + int p2p0m2 = pos + d_slice_2 - 2; + int p2p0m1 = pos + d_slice_2 - 1; + int p2p0p0 = pos + d_slice_2 + 0; + int p2p0p1 = pos + d_slice_2 + 1; + int p2p0p2 = pos + d_slice_2 + 2; + int p2p0p3 = pos + d_slice_2 + 3; + + // i, j - 2, k - 3: k + 3 + int p0m2m3 = pos - d_yline_2 - 3; + int p0m2m2 = pos - d_yline_2 - 2; + int p0m2m1 = pos - d_yline_2 - 1; + int p0m2p0 = pos - d_yline_2 + 0; + int p0m2p1 = pos - d_yline_2 + 1; + int p0m2p2 = pos - d_yline_2 + 2; + int p0m2p3 = pos - d_yline_2 + 3; + + // i, j - 1, k - 3: k + 3 + int p0m1m3 = pos - d_yline_1 - 3; + int p0m1m2 = pos - d_yline_1 - 2; + int p0m1m1 = pos - d_yline_1 - 1; + int p0m1p0 = pos - d_yline_1 + 0; + int p0m1p1 = pos - d_yline_1 + 1; + int p0m1p2 = pos - d_yline_1 + 2; + int p0m1p3 = pos - d_yline_1 + 3; + + // i, j + 1, k - 3: k + 3 + int p0p1m3 = pos + d_yline_1 - 3; + int p0p1m2 = pos + d_yline_1 - 2; + int p0p1m1 = pos + d_yline_1 - 1; + int p0p1p0 = pos + d_yline_1 + 0; + int p0p1p1 = pos + d_yline_1 + 1; + int p0p1p2 = pos + d_yline_1 + 2; + int p0p1p3 = pos + d_yline_1 + 3; + + // i, j + 2, k - 3: k + 3 + int p0p2m3 = pos + d_yline_2 - 3; + int p0p2m2 = pos + d_yline_2 - 2; + int p0p2m1 = pos + d_yline_2 - 1; + int p0p2p0 = pos + d_yline_2 + 0; + int p0p2p1 = pos + d_yline_2 + 1; + int p0p2p2 = pos + d_yline_2 + 2; + int p0p2p3 = pos + d_yline_2 + 3; + + + // i - 2 : i + 1, j + //int m2p0 = fpos - d_fline_2; + //int m1p0 = fpos - d_fline_1; + //int p0p0 = fpos; + //int p1p0 = fpos + d_fline_1; + //int p2p0 = fpos + d_fline_2; + + + f_vx1 = d_vx1[pos]; + f_vx2 = d_vx2[pos]; + f_ww = d_ww[pos]; + f_wwo = d_wwo[pos]; + + f_dcrj = dcrjx[i]*f_dcrjy*f_dcrjz; + + + pos_km2 = pos-2; + pos_km1 = pos-1; + pos_kp1 = pos+1; + pos_kp2 = pos+2; + pos_jm2 = pos-d_yline_2; + pos_jm1 = pos-d_yline_1; + pos_jp1 = pos+d_yline_1; + pos_jp2 = pos+d_yline_2; + pos_im2 = pos-d_slice_2; + pos_im1 = pos-d_slice_1; + pos_ip1 = pos+d_slice_1; + pos_jk1 = pos-d_yline_1-1; + pos_ik1 = pos+d_slice_1-1; + pos_ijk = pos+d_slice_1-d_yline_1; + pos_ijk1 = pos+d_slice_1-d_yline_1-1; + + xl = 8.0f/( LDG(lam[pos]) + LDG(lam[pos_ip1]) + LDG(lam[pos_jm1]) + LDG(lam[pos_ijk]) + + LDG(lam[pos_km1]) + LDG(lam[pos_ik1]) + LDG(lam[pos_jk1]) + LDG(lam[pos_ijk1]) ); + xm = 16.0f/( LDG(mu[pos]) + LDG(mu[pos_ip1]) + LDG(mu[pos_jm1]) + LDG(mu[pos_ijk]) + + LDG(mu[pos_km1]) + LDG(mu[pos_ik1]) + LDG(mu[pos_jk1]) + LDG(mu[pos_ijk1]) ); + xmu1 = 2.0f/( LDG(mu[pos]) + LDG(mu[pos_km1]) ); + xmu2 = 2.0/( LDG(mu[pos]) + LDG(mu[pos_jm1]) ); + xmu3 = 2.0/( LDG(mu[pos]) + LDG(mu[pos_ip1]) ); + xl = xl + xm; + qpa = 0.0625f*( LDG(qp[pos]) + LDG(qp[pos_ip1]) + LDG(qp[pos_jm1]) + LDG(qp[pos_ijk]) + + LDG(qp[pos_km1]) + LDG(qp[pos_ik1]) + LDG(qp[pos_jk1]) + LDG(qp[pos_ijk1]) ); + + if(1.0f/(qpa*2.0f)<=200.0f) + { + qpaw=coeff[f_ww*2-2]*(2.*qpa)*(2.*qpa)+coeff[f_ww*2-1]*(2.*qpa); + } + else { + //suggested by Kyle + qpaw = 2.0f*f_wwo*qpa; + // qpaw = f_wwo*qpa; + } + qpaw=qpaw/f_wwo; + + + h = 0.0625f*( LDG(qs[pos]) + LDG(qs[pos_ip1]) + LDG(qs[pos_jm1]) + LDG(qs[pos_ijk]) + + LDG(qs[pos_km1]) + LDG(qs[pos_ik1]) + LDG(qs[pos_jk1]) + LDG(qs[pos_ijk1]) ); + + if(1.0f/(h*2.0f)<=200.0f) + { + hw=coeff[f_ww*2-2]*(2.0f*h)*(2.0f*h)+coeff[f_ww*2-1]*(2.0f*h); + } + else { + //suggested by Kyle + hw = 2.0f*f_wwo*h; + // hw = f_wwo*h; + } + hw=hw/f_wwo; + + + h1 = 0.250f*( qs[pos] + qs[pos_km1] ); + + if(1.0f/(h1*2.0f)<=200.0f) + { + h1w=coeff[f_ww*2-2]*(2.0f*h1)*(2.0f*h1)+coeff[f_ww*2-1]*(2.0f*h1); + } + else { + //suggested by Kyle + h1w = 2.0f*f_wwo*h1; + // h1w = f_wwo*h1; + } + h1w=h1w/f_wwo; + + h2 = 0.250f*( qs[pos] + qs[pos_jm1] ); + if(1.0f/(h2*2.0f)<=200.0f) + { + h2w=coeff[f_ww*2-2]*(2.0f*h2)*(2.0f*h2)+coeff[f_ww*2-1]*(2.0f*h2); + } + else { + //suggested by Kyle + //h2w = f_wwo*h2; + h2w = 2.0f*f_wwo*h2; + } + h2w=h2w/f_wwo; + + + h3 = 0.250f*( qs[pos] + qs[pos_ip1] ); + if(1.0f/(h3*2.0f)<=200.0f) + { + h3w=coeff[f_ww*2-2]*(2.0f*h3)*(2.0f*h3)+coeff[f_ww*2-1]*(2.0f*h3); + } + else { + //suggested by Kyle + h3w = 2.0f*f_wwo*h3; + //h3w = f_wwo*h3; + } + h3w=h3w/f_wwo; + + h = -xm*hw*d_dh1; + h1 = -xmu1*h1w*d_dh1; + h2 = -xmu2*h2w*d_dh1; + h3 = -xmu3*h3w*d_dh1; + + + qpa = -qpaw*xl*d_dh1; + + xm = xm*d_dth; + xmu1 = xmu1*d_dth; + xmu2 = xmu2*d_dth; + xmu3 = xmu3*d_dth; + xl = xl*d_dth; + h = h*f_vx1; + h1 = h1*f_vx1; + h2 = h2*f_vx1; + h3 = h3*f_vx1; + qpa = qpa*f_vx1; + + xm = xm+d_DT*h; + xmu1 = xmu1+d_DT*h1; + xmu2 = xmu2+d_DT*h2; + xmu3 = xmu3+d_DT*h3; + vx1 = d_DT*(1+f_vx2*f_vx1); + + u1_ip2 = u1_ip1; + u1_ip1 = f_u1; + f_u1 = u1_im1; + u1_im1 = u1[pos_im1]; + v1_ip1 = f_v1; + f_v1 = v1_im1; + v1_im1 = v1_im2; + v1_im2 = v1[pos_im2]; + w1_ip1 = f_w1; + f_w1 = w1_im1; + w1_im1 = w1_im2; + w1_im2 = w1[pos_im2]; + + + + // xx, yy, zz + + float Jii = _f_c(i, j) * _g3_c(k); + Jii = 1.0 * 1.0 / Jii; + + vs1 = + dx4[1] * u1[p0p0p0] + dx4[0] * u1[m1p0p0] + + dx4[2] * u1[p1p0p0] + dx4[3] * u1[p2p0p0] - + Jii * _g_c(k) * + ( + px4[0] * _f1_1(i - 1, j) * + ( + phdz4[0] * u1[m1p0m3] + + phdz4[1] * u1[m1p0m2] + + phdz4[2] * u1[m1p0m1] + + phdz4[3] * u1[m1p0p0] + + phdz4[4] * u1[m1p0p1] + + phdz4[5] * u1[m1p0p2] + + phdz4[6] * u1[m1p0p3] + ) + + + px4[1] * _f1_1(i, j) * + ( + phdz4[0] * u1[p0p0m3] + + phdz4[1] * u1[p0p0m2] + + phdz4[2] * u1[p0p0m1] + + phdz4[3] * u1[p0p0p0] + + phdz4[4] * u1[p0p0p1] + + phdz4[5] * u1[p0p0p2] + + phdz4[6] * u1[p0p0p3] + ) + + px4[2] * _f1_1(i + 1, j) * + ( + phdz4[0] * u1[p1p0m3] + + phdz4[1] * u1[p1p0m2] + + phdz4[2] * u1[p1p0m1] + + phdz4[3] * u1[p1p0p0] + + phdz4[4] * u1[p1p0p1] + + phdz4[5] * u1[p1p0p2] + + phdz4[6] * u1[p1p0p3] + ) + + px4[3] * _f1_1(i + 2, j) * + ( + phdz4[0] * u1[p2p0m3] + + phdz4[1] * u1[p2p0m2] + + phdz4[2] * u1[p2p0m1] + + phdz4[3] * u1[p2p0p0] + + phdz4[4] * u1[p2p0p1] + + phdz4[5] * u1[p2p0p2] + + phdz4[6] * u1[p2p0p3] + ) + ); + vs2 = + dhy4[2] * v1[p0p0p0] + dhy4[0] * v1[p0m2p0] + + dhy4[1] * v1[p0m1p0] + dhy4[3] * v1[p0p1p0] - + Jii * _g_c(k) * + (phy4[0] * _f2_2(i, j - 2) * + ( + phdz4[0] * v1[p0m2m3] + + phdz4[1] * v1[p0m2m2] + + phdz4[2] * v1[p0m2m1] + + phdz4[3] * v1[p0m2p0] + + phdz4[4] * v1[p0m2p1] + + phdz4[5] * v1[p0m2p2] + + phdz4[6] * v1[p0m2p3] + ) + + phy4[1] * _f2_2(i, j - 1) * + ( + phdz4[0] * v1[p0m1m3] + + phdz4[1] * v1[p0m1m2] + + phdz4[2] * v1[p0m1m1] + + phdz4[3] * v1[p0m1p0] + + phdz4[4] * v1[p0m1p1] + + phdz4[5] * v1[p0m1p2] + + phdz4[6] * v1[p0m1p3] + ) + + phy4[2] * _f2_2(i, j) * + ( + phdz4[0] * v1[p0p0m3] + + phdz4[1] * v1[p0p0m2] + + phdz4[2] * v1[p0p0m1] + + phdz4[3] * v1[p0p0p0] + + phdz4[4] * v1[p0p0p1] + + phdz4[5] * v1[p0p0p2] + + phdz4[6] * v1[p0p0p3] + ) + + phy4[3] * _f2_2(i, j + 1) * + ( + phdz4[0] * v1[p0p1m3] + + phdz4[1] * v1[p0p1m2] + + phdz4[2] * v1[p0p1m1] + + phdz4[3] * v1[p0p1p0] + + phdz4[4] * v1[p0p1p1] + + phdz4[5] * v1[p0p1p2] + + phdz4[6] * v1[p0p1p3] + ) + ); + vs3 = + Jii * (dhz4[2] * w1[p0p0p0] + dhz4[0] * w1[p0p0m2] + + dhz4[1] * w1[p0p0m1] + dhz4[3] * w1[p0p0p1]); + + tmp = xl*(vs1+vs2+vs3); + + a1 = qpa*(vs1+vs2+vs3); + tmp = tmp+d_DT*a1; + + f_r = r1[pos]; + f_rtmp = -h*(vs2+vs3) + a1; + f_xx = xx[pos] + tmp - xm*(vs2+vs3) + vx1*f_r; + rr1[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + rxx[b][a] = (f_xx + d_DT*f_rtmp)*f_dcrj; + + f_r = r2[pos]; + f_rtmp = -h*(vs1+vs3) + a1; + f_yy = (yy[pos] + tmp - xm*(vs1+vs3) + vx1*f_r)*f_dcrj; + rr2[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + ryy[b][a] = (f_yy + d_DT*f_rtmp)*f_dcrj; + + f_r = r3[pos]; + f_rtmp = -h*(vs1+vs2) + a1; + f_zz = (zz[pos] + tmp - xm*(vs1+vs2) + vx1*f_r)*f_dcrj; + rr3[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); + rzz[b][a] = (f_zz + d_DT*f_rtmp)*f_dcrj; + + // xy + float J12i = _f(i, j) * _g3_c(k); + J12i = 1.0 / J12i; + + vs1 = + dy4[1] * u1[p0p0p0] + dy4[0] * u1[p0m1p0] + + dy4[2] * u1[p0p1p0] + dy4[3] * u1[p0p2p0] - + J12i * _g_c(k) * + ( + py4[0] * _f2_1(i, j - 1) * + ( + phdz4[0] * u1[p0m1m3] + + phdz4[1] * u1[p0m1m2] + + phdz4[2] * u1[p0m1m1] + + phdz4[3] * u1[p0m1p0] + + phdz4[4] * u1[p0m1p1] + + phdz4[5] * u1[p0m1p2] + + phdz4[6] * u1[p0m1p3]) + + py4[1] * _f2_1(i, j) * + ( + phdz4[0] * u1[p0p0m3] + + phdz4[1] * u1[p0p0m2] + + phdz4[2] * u1[p0p0m1] + + phdz4[3] * u1[p0p0p0] + + phdz4[4] * u1[p0p0p1] + + phdz4[5] * u1[p0p0p2] + + phdz4[6] * u1[p0p0p3]) + + py4[2] * _f2_1(i, j + 1) * + ( + phdz4[0] * u1[p0p1m3] + + phdz4[1] * u1[p0p1m2] + + phdz4[2] * u1[p0p1m1] + + phdz4[3] * u1[p0p1p0] + + phdz4[4] * u1[p0p1p1] + + phdz4[5] * u1[p0p1p2] + + phdz4[6] * u1[p0p1p3]) + + py4[3] * _f2_1(i, j + 2) * + ( + phdz4[0] * u1[p0p2m3] + + phdz4[1] * u1[p0p2m2] + + phdz4[2] * u1[p0p2m1] + + phdz4[3] * u1[p0p2p0] + + phdz4[4] * u1[p0p2p1] + + phdz4[5] * u1[p0p2p2] + + phdz4[6] * u1[p0p2p3]) + ); + vs2 = + dhx4[2] * v1[p0p0p0] + dhx4[0] * v1[m2p0p0] + + dhx4[1] * v1[m1p0p0] + dhx4[3] * v1[p1p0p0] - + J12i * _g_c(k) * + ( + phx4[0] * _f1_2(i - 2, j) * + ( + phdz4[0] * v1[m2p0m3] + + phdz4[1] * v1[m2p0m2] + + phdz4[2] * v1[m2p0m1] + + phdz4[3] * v1[m2p0p0] + + phdz4[4] * v1[m2p0p1] + + phdz4[5] * v1[m2p0p2] + + phdz4[6] * v1[m2p0p3] + ) + + phx4[1] * _f1_2(i - 1, j) * + ( + phdz4[0] * v1[m1p0m3] + + phdz4[1] * v1[m1p0m2] + + phdz4[2] * v1[m1p0m1] + + phdz4[3] * v1[m1p0p0] + + phdz4[4] * v1[m1p0p1] + + phdz4[5] * v1[m1p0p2] + + phdz4[6] * v1[m1p0p3] + ) + + phx4[2] * _f1_2(i, j) * + ( + phdz4[0] * v1[p0p0m3] + + phdz4[1] * v1[p0p0m2] + + phdz4[2] * v1[p0p0m1] + + phdz4[3] * v1[p0p0p0] + + phdz4[4] * v1[p0p0p1] + + phdz4[5] * v1[p0p0p2] + + phdz4[6] * v1[p0p0p3] + ) + + phx4[3] * _f1_2(i + 1, j) * + ( + phdz4[0] * v1[p1p0m3] + + phdz4[1] * v1[p1p0m2] + + phdz4[2] * v1[p1p0m1] + + phdz4[3] * v1[p1p0p0] + + phdz4[4] * v1[p1p0p1] + + phdz4[5] * v1[p1p0p2] + + phdz4[6] * v1[p1p0p3] + )); + + f_r = r4[pos]; + f_rtmp = h1*(vs1+vs2); + f_xy = xy[pos] + xmu1*(vs1+vs2) + vx1*f_r; + rr4[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + rxy[b][a] = (f_xy + d_DT*f_rtmp)*f_dcrj; + + // xz + + float J13i = _f_1(i, j) * _g3(k); + J13i = 1.0 * 1.0 / J13i; + + vs1 = J13i * (dz4[1] * u1[p0p0p0] + dz4[0] * u1[p0p0m1] + + dz4[2] * u1[p0p0p1] + dz4[3] * u1[p0p0p2]); + vs2 = + dhx4[2] * w1[p0p0p0] + dhx4[0] * w1[m2p0p0] + + dhx4[1] * w1[m1p0p0] + dhx4[3] * w1[p1p0p0] - + J13i * _g(k) * + ( + phx4[0] * _f1_c(i - 2, j) * + ( + pdhz4[0] * w1[m2p0m3] + + pdhz4[1] * w1[m2p0m2] + + pdhz4[2] * w1[m2p0m1] + + pdhz4[3] * w1[m2p0p0] + + pdhz4[4] * w1[m2p0p1] + + pdhz4[5] * w1[m2p0p2] + + pdhz4[6] * w1[m2p0p3] + ) + + phx4[1] * _f1_c(i - 1, j) * + ( + pdhz4[0] * w1[m1p0m3] + + pdhz4[1] * w1[m1p0m2] + + pdhz4[2] * w1[m1p0m1] + + pdhz4[3] * w1[m1p0p0] + + pdhz4[4] * w1[m1p0p1] + + pdhz4[5] * w1[m1p0p2] + + pdhz4[6] * w1[m1p0p3]) + + phx4[2] * _f1_c(i, j) * + (pdhz4[0] * w1[p0p0m3] + + pdhz4[1] * w1[p0p0m2] + + pdhz4[2] * w1[p0p0m1] + + pdhz4[3] * w1[p0p0p0] + + pdhz4[4] * w1[p0p0p1] + + pdhz4[5] * w1[p0p0p2] + + pdhz4[6] * w1[p0p0p3]) + + phx4[3] * _f1_c(i + 1, j) * + (pdhz4[0] * w1[p1p0m3] + + pdhz4[1] * w1[p1p0m2] + + pdhz4[2] * w1[p1p0m1] + + pdhz4[3] * w1[p1p0p0] + + pdhz4[4] * w1[p1p0p1] + + pdhz4[5] * w1[p1p0p2] + + pdhz4[6] * w1[p1p0p3] + )); + f_r = r5[pos]; + f_rtmp = h2*(vs1+vs2); + f_xz = xz[pos] + xmu2*(vs1+vs2) + vx1*f_r; + rr5[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); + rxz[b][a] = (f_xz + d_DT*f_rtmp)*f_dcrj; + + // yz + + float J23i = _f_2(i, j) * _g3(k); + J23i = 1.0 * 1.0 / J23i; + vs1 = J23i * (dz4[1] * v1[p0p0p0] + dz4[0] * v1[p0p0m1] + + dz4[2] * v1[p0p0p1] + dz4[3] * v1[p0p0p2]); + vs2 = + dy4[1] * w1[p0p0p0] + dy4[0] * w1[p0m1p0] + + dy4[2] * w1[p0p1p0] + dy4[3] * w1[p0p2p0] - + J23i * _g(k) * + ( + py4[0] * _f2_c(i, j - 1) * + ( + pdhz4[0] * w1[p0m1m3] + + pdhz4[1] * w1[p0m1m2] + + pdhz4[2] * w1[p0m1m1] + + pdhz4[3] * w1[p0m1p0] + + pdhz4[4] * w1[p0m1p1] + + pdhz4[5] * w1[p0m1p2] + + pdhz4[6] * w1[p0m1p3] + ) + + py4[1] * _f2_c(i, j) * + ( + pdhz4[0] * w1[p0p0m3] + + pdhz4[1] * w1[p0p0m2] + + pdhz4[2] * w1[p0p0m1] + + pdhz4[3] * w1[p0p0p0] + + pdhz4[4] * w1[p0p0p1] + + pdhz4[5] * w1[p0p0p2] + + pdhz4[6] * w1[p0p0p3] + ) + + py4[2] * _f2_c(i, j + 1) * + ( + pdhz4[0] * w1[p0p1m3] + + pdhz4[1] * w1[p0p1m2] + + pdhz4[2] * w1[p0p1m1] + + pdhz4[3] * w1[p0p1p0] + + pdhz4[4] * w1[p0p1p1] + + pdhz4[5] * w1[p0p1p2] + + pdhz4[6] * w1[p0p1p3] + ) + + py4[3] * _f2_c(i, j + 2) * + ( + pdhz4[0] * w1[p0p2m3] + + pdhz4[1] * w1[p0p2m2] + + pdhz4[2] * w1[p0p2m1] + + pdhz4[3] * w1[p0p2p0] + + pdhz4[4] * w1[p0p2p1] + + pdhz4[5] * w1[p0p2p2] + + pdhz4[6] * w1[p0p2p3] + )); + + f_r = r6[pos]; + f_rtmp = h3*(vs1+vs2); + f_yz = yz[pos] + xmu3*(vs1+vs2) + vx1*f_r; + rr6[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); + ryz[b][a] = (f_yz + d_DT*f_rtmp)*f_dcrj; + } + } + +#pragma unroll + for (int b = 0; b < nb; ++b) { + j = j0 + b; + if (j >= e_j) + continue; +#pragma unroll + for (int a = 0; a < na; ++a) { + k = k0 + a; + pos = i*d_slice_1+j*d_yline_1+k; + if (k < dm_offset + align) + continue; + if (k >= nz - 6 + align) + continue; + + xx[pos] = rxx[b][a]; + yy[pos] = ryy[b][a]; + zz[pos] = rzz[b][a]; + xy[pos] = rxy[b][a]; + xz[pos] = rxz[b][a]; + yz[pos] = ryz[b][a]; + + r1[pos] = rr1[b][a]; + r2[pos] = rr2[b][a]; + r3[pos] = rr3[b][a]; + r4[pos] = rr4[b][a]; + r5[pos] = rr5[b][a]; + r6[pos] = rr6[b][a]; + + } + } + + +} From 3c69c308fc0348f8ae672059b9f56a952c5a7a4b Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 4 Feb 2021 22:17:43 -0800 Subject: [PATCH 36/56] add missing kernel :) --- .../kernels/stress_index_unroll.cuh | 741 ++++++++++++++++++ 1 file changed, 741 insertions(+) create mode 100644 src/topography/kernels/stress_index_unroll.cuh diff --git a/src/topography/kernels/stress_index_unroll.cuh b/src/topography/kernels/stress_index_unroll.cuh new file mode 100644 index 0000000..7740146 --- /dev/null +++ b/src/topography/kernels/stress_index_unroll.cuh @@ -0,0 +1,741 @@ +#define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f_1(i, j) f_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f_2(i, j) f_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f2_c(i, j) f2_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f1_1(i, j) f1_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f2_1(i, j) f2_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f2_2(i, j) f2_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f_c(i, j) f_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f1_c(i, j) f1_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _f1_2(i, j) f1_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] +#define _g3_c(k) g3_c[(k)] +#define _g_c(k) g_c[(k)] +#define _g(k) g[(k)] +#define _g3(k) g3[(k)] + +#define RSTRCT __restrict__ +#define LDG(x) x + +template +__launch_bounds__ (tx*ty*tz) +__global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, _prec* RSTRCT zz, + _prec* RSTRCT xy, _prec* RSTRCT xz, _prec* RSTRCT yz, + _prec* RSTRCT r1, _prec* RSTRCT r2, _prec* RSTRCT r3, + _prec* RSTRCT r4, _prec* RSTRCT r5, _prec* RSTRCT r6, + _prec* RSTRCT u1, + _prec* RSTRCT v1, + _prec* RSTRCT w1, + const float *RSTRCT f, + const float *RSTRCT f1_1, const float *RSTRCT f1_2, + const float *RSTRCT f1_c, const float *RSTRCT f2_1, + const float *RSTRCT f2_2, const float *RSTRCT f2_c, + const float *RSTRCT f_1, const float *RSTRCT f_2, + const float *RSTRCT f_c, const float *RSTRCT g, + const float *RSTRCT g3, const float *RSTRCT g3_c, + const float *RSTRCT g_c, + const _prec *RSTRCT lam, + const _prec *RSTRCT mu, + const _prec *RSTRCT qp, + const _prec *RSTRCT coeff, + const _prec *RSTRCT qs, + const _prec *RSTRCT dcrjx, + const _prec *RSTRCT dcrjy, + const _prec *RSTRCT dcrjz, + const _prec *RSTRCT d_vx1, + const _prec *RSTRCT d_vx2, + const int *RSTRCT d_ww, + const _prec *RSTRCT d_wwo, + int NX, int ny, int nz, int rankx, int ranky, + int nzt, int s_i, int e_i, int s_j, int e_j) +{ + register int i, j, k; + register int j0, k0; + register int pos, pos_ip1, pos_im2, pos_im1; + register int pos_km2, pos_km1, pos_kp1, pos_kp2; + register int pos_jm2, pos_jm1, pos_jp1, pos_jp2; + register int pos_ik1, pos_jk1, pos_ijk, pos_ijk1,f_ww; + register _prec vs1, vs2, vs3, a1, tmp, vx1,f_wwo; + register _prec xl, xm, xmu1, xmu2, xmu3; + register _prec qpa, h, h1, h2, h3; + register _prec qpaw,hw,h1w,h2w,h3w; + register _prec f_vx1, f_vx2, f_dcrj, f_r, f_dcrjy, f_dcrjz; + register _prec f_rtmp; + register _prec f_u1, u1_ip1, u1_ip2, u1_im1; + register _prec f_v1, v1_im1, v1_ip1, v1_im2; + register _prec f_w1, w1_im1, w1_im2, w1_ip1; + _prec f_xx, f_yy, f_zz, f_xy, f_xz, f_yz; + + const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, + -0.6796875000000000, -0.0000000000000000, + 0.6796875000000000, -0.0937500000000000, + 0.0026041666666667}; + const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, + -0.6796875000000000, -0.0000000000000000, + 0.6796875000000000, -0.0937500000000000, + 0.0026041666666667}; + + + int dm_offset = 3; + k0 = na * (blockIdx.x * blockDim.x + threadIdx.x) + align; + j0 = nb * (blockIdx.y * blockDim.y + threadIdx.y) + s_j; + i = blockIdx.z * blockDim.z + threadIdx.z + s_i; + + float rxx[nb][na], ryy[nb][na], rzz[nb][na]; + float rxy[nb][na], rxz[nb][na], ryz[nb][na]; + float rr1[nb][na], rr2[nb][na], rr3[nb][na]; + float rr4[nb][na], rr5[nb][na], rr6[nb][na]; + + if (i >= e_i) + return; + if (j0 >= e_j) + return; + +#pragma unroll + for (int b = 0; b < nb; ++b) { + j = j0 + b; +#pragma unroll + for (int a = 0; a < na; ++a) { + k = k0 + a; + + pos = i*d_slice_1+j*d_yline_1+k; + + + + u1_ip1 = u1[pos+d_slice_2]; + f_u1 = u1[pos+d_slice_1]; + u1_im1 = u1[pos]; + f_v1 = v1[pos+d_slice_1]; + v1_im1 = v1[pos]; + v1_im2 = v1[pos-d_slice_1]; + f_w1 = w1[pos+d_slice_1]; + w1_im1 = w1[pos]; + w1_im2 = w1[pos-d_slice_1]; + f_dcrjz = dcrjz[k]; + f_dcrjy = dcrjy[j]; + + // i - 1, j, k - 3: k + 3 + int m2p0m3 = pos - d_slice_2 - 3; + int m2p0m2 = pos - d_slice_2 - 2; + int m2p0m1 = pos - d_slice_2 - 1; + int m2p0p0 = pos - d_slice_2 + 0; + int m2p0p1 = pos - d_slice_2 + 1; + int m2p0p2 = pos - d_slice_2 + 2; + int m2p0p3 = pos - d_slice_2 + 3; + + + // i - 1, j, k - 3: k + 3 + int m1p0m3 = pos - d_slice_1 - 3; + int m1p0m2 = pos - d_slice_1 - 2; + int m1p0m1 = pos - d_slice_1 - 1; + int m1p0p0 = pos - d_slice_1 + 0; + int m1p0p1 = pos - d_slice_1 + 1; + int m1p0p2 = pos - d_slice_1 + 2; + int m1p0p3 = pos - d_slice_1 + 3; + + // i, j, k - 3: k + 3 + int p0p0m3 = pos - 3; + int p0p0m2 = pos - 2; + int p0p0m1 = pos - 1; + int p0p0p0 = pos + 0; + int p0p0p1 = pos + 1; + int p0p0p2 = pos + 2; + int p0p0p3 = pos + 3; + + // i + 1, j, k - 3: k + 3 + int p1p0m3 = pos + d_slice_1 - 3; + int p1p0m2 = pos + d_slice_1 - 2; + int p1p0m1 = pos + d_slice_1 - 1; + int p1p0p0 = pos + d_slice_1 + 0; + int p1p0p1 = pos + d_slice_1 + 1; + int p1p0p2 = pos + d_slice_1 + 2; + int p1p0p3 = pos + d_slice_1 + 3; + + // i + 2, j, k - 3: k + 3 + int p2p0m3 = pos + d_slice_2 - 3; + int p2p0m2 = pos + d_slice_2 - 2; + int p2p0m1 = pos + d_slice_2 - 1; + int p2p0p0 = pos + d_slice_2 + 0; + int p2p0p1 = pos + d_slice_2 + 1; + int p2p0p2 = pos + d_slice_2 + 2; + int p2p0p3 = pos + d_slice_2 + 3; + + // i, j - 2, k - 3: k + 3 + int p0m2m3 = pos - d_yline_2 - 3; + int p0m2m2 = pos - d_yline_2 - 2; + int p0m2m1 = pos - d_yline_2 - 1; + int p0m2p0 = pos - d_yline_2 + 0; + int p0m2p1 = pos - d_yline_2 + 1; + int p0m2p2 = pos - d_yline_2 + 2; + int p0m2p3 = pos - d_yline_2 + 3; + + // i, j - 1, k - 3: k + 3 + int p0m1m3 = pos - d_yline_1 - 3; + int p0m1m2 = pos - d_yline_1 - 2; + int p0m1m1 = pos - d_yline_1 - 1; + int p0m1p0 = pos - d_yline_1 + 0; + int p0m1p1 = pos - d_yline_1 + 1; + int p0m1p2 = pos - d_yline_1 + 2; + int p0m1p3 = pos - d_yline_1 + 3; + + // i, j + 1, k - 3: k + 3 + int p0p1m3 = pos + d_yline_1 - 3; + int p0p1m2 = pos + d_yline_1 - 2; + int p0p1m1 = pos + d_yline_1 - 1; + int p0p1p0 = pos + d_yline_1 + 0; + int p0p1p1 = pos + d_yline_1 + 1; + int p0p1p2 = pos + d_yline_1 + 2; + int p0p1p3 = pos + d_yline_1 + 3; + + // i, j + 2, k - 3: k + 3 + int p0p2m3 = pos + d_yline_2 - 3; + int p0p2m2 = pos + d_yline_2 - 2; + int p0p2m1 = pos + d_yline_2 - 1; + int p0p2p0 = pos + d_yline_2 + 0; + int p0p2p1 = pos + d_yline_2 + 1; + int p0p2p2 = pos + d_yline_2 + 2; + int p0p2p3 = pos + d_yline_2 + 3; + + + // i - 2 : i + 1, j + //int m2p0 = fpos - d_fline_2; + //int m1p0 = fpos - d_fline_1; + //int p0p0 = fpos; + //int p1p0 = fpos + d_fline_1; + //int p2p0 = fpos + d_fline_2; + + + f_vx1 = d_vx1[pos]; + f_vx2 = d_vx2[pos]; + f_ww = d_ww[pos]; + f_wwo = d_wwo[pos]; + + f_dcrj = dcrjx[i]*f_dcrjy*f_dcrjz; + + + pos_km2 = pos-2; + pos_km1 = pos-1; + pos_kp1 = pos+1; + pos_kp2 = pos+2; + pos_jm2 = pos-d_yline_2; + pos_jm1 = pos-d_yline_1; + pos_jp1 = pos+d_yline_1; + pos_jp2 = pos+d_yline_2; + pos_im2 = pos-d_slice_2; + pos_im1 = pos-d_slice_1; + pos_ip1 = pos+d_slice_1; + pos_jk1 = pos-d_yline_1-1; + pos_ik1 = pos+d_slice_1-1; + pos_ijk = pos+d_slice_1-d_yline_1; + pos_ijk1 = pos+d_slice_1-d_yline_1-1; + + xl = 8.0f/( LDG(lam[pos]) + LDG(lam[pos_ip1]) + LDG(lam[pos_jm1]) + LDG(lam[pos_ijk]) + + LDG(lam[pos_km1]) + LDG(lam[pos_ik1]) + LDG(lam[pos_jk1]) + LDG(lam[pos_ijk1]) ); + xm = 16.0f/( LDG(mu[pos]) + LDG(mu[pos_ip1]) + LDG(mu[pos_jm1]) + LDG(mu[pos_ijk]) + + LDG(mu[pos_km1]) + LDG(mu[pos_ik1]) + LDG(mu[pos_jk1]) + LDG(mu[pos_ijk1]) ); + xmu1 = 2.0f/( LDG(mu[pos]) + LDG(mu[pos_km1]) ); + xmu2 = 2.0/( LDG(mu[pos]) + LDG(mu[pos_jm1]) ); + xmu3 = 2.0/( LDG(mu[pos]) + LDG(mu[pos_ip1]) ); + xl = xl + xm; + qpa = 0.0625f*( LDG(qp[pos]) + LDG(qp[pos_ip1]) + LDG(qp[pos_jm1]) + LDG(qp[pos_ijk]) + + LDG(qp[pos_km1]) + LDG(qp[pos_ik1]) + LDG(qp[pos_jk1]) + LDG(qp[pos_ijk1]) ); + + if(1.0f/(qpa*2.0f)<=200.0f) + { + qpaw=coeff[f_ww*2-2]*(2.*qpa)*(2.*qpa)+coeff[f_ww*2-1]*(2.*qpa); + } + else { + //suggested by Kyle + qpaw = 2.0f*f_wwo*qpa; + // qpaw = f_wwo*qpa; + } + qpaw=qpaw/f_wwo; + + + h = 0.0625f*( LDG(qs[pos]) + LDG(qs[pos_ip1]) + LDG(qs[pos_jm1]) + LDG(qs[pos_ijk]) + + LDG(qs[pos_km1]) + LDG(qs[pos_ik1]) + LDG(qs[pos_jk1]) + LDG(qs[pos_ijk1]) ); + + if(1.0f/(h*2.0f)<=200.0f) + { + hw=coeff[f_ww*2-2]*(2.0f*h)*(2.0f*h)+coeff[f_ww*2-1]*(2.0f*h); + } + else { + //suggested by Kyle + hw = 2.0f*f_wwo*h; + // hw = f_wwo*h; + } + hw=hw/f_wwo; + + + h1 = 0.250f*( qs[pos] + qs[pos_km1] ); + + if(1.0f/(h1*2.0f)<=200.0f) + { + h1w=coeff[f_ww*2-2]*(2.0f*h1)*(2.0f*h1)+coeff[f_ww*2-1]*(2.0f*h1); + } + else { + //suggested by Kyle + h1w = 2.0f*f_wwo*h1; + // h1w = f_wwo*h1; + } + h1w=h1w/f_wwo; + + h2 = 0.250f*( qs[pos] + qs[pos_jm1] ); + if(1.0f/(h2*2.0f)<=200.0f) + { + h2w=coeff[f_ww*2-2]*(2.0f*h2)*(2.0f*h2)+coeff[f_ww*2-1]*(2.0f*h2); + } + else { + //suggested by Kyle + //h2w = f_wwo*h2; + h2w = 2.0f*f_wwo*h2; + } + h2w=h2w/f_wwo; + + + h3 = 0.250f*( qs[pos] + qs[pos_ip1] ); + if(1.0f/(h3*2.0f)<=200.0f) + { + h3w=coeff[f_ww*2-2]*(2.0f*h3)*(2.0f*h3)+coeff[f_ww*2-1]*(2.0f*h3); + } + else { + //suggested by Kyle + h3w = 2.0f*f_wwo*h3; + //h3w = f_wwo*h3; + } + h3w=h3w/f_wwo; + + h = -xm*hw*d_dh1; + h1 = -xmu1*h1w*d_dh1; + h2 = -xmu2*h2w*d_dh1; + h3 = -xmu3*h3w*d_dh1; + + + qpa = -qpaw*xl*d_dh1; + + xm = xm*d_dth; + xmu1 = xmu1*d_dth; + xmu2 = xmu2*d_dth; + xmu3 = xmu3*d_dth; + xl = xl*d_dth; + h = h*f_vx1; + h1 = h1*f_vx1; + h2 = h2*f_vx1; + h3 = h3*f_vx1; + qpa = qpa*f_vx1; + + xm = xm+d_DT*h; + xmu1 = xmu1+d_DT*h1; + xmu2 = xmu2+d_DT*h2; + xmu3 = xmu3+d_DT*h3; + vx1 = d_DT*(1+f_vx2*f_vx1); + + u1_ip2 = u1_ip1; + u1_ip1 = f_u1; + f_u1 = u1_im1; + u1_im1 = u1[pos_im1]; + v1_ip1 = f_v1; + f_v1 = v1_im1; + v1_im1 = v1_im2; + v1_im2 = v1[pos_im2]; + w1_ip1 = f_w1; + f_w1 = w1_im1; + w1_im1 = w1_im2; + w1_im2 = w1[pos_im2]; + + + + // xx, yy, zz + + float Jii = _f_c(i, j) * _g3_c(k); + Jii = 1.0 * 1.0 / Jii; + + vs1 = + dx4[1] * u1[p0p0p0] + dx4[0] * u1[m1p0p0] + + dx4[2] * u1[p1p0p0] + dx4[3] * u1[p2p0p0] - + Jii * _g_c(k) * + ( + px4[0] * _f1_1(i - 1, j) * + ( + phdz4[0] * u1[m1p0m3] + + phdz4[1] * u1[m1p0m2] + + phdz4[2] * u1[m1p0m1] + + phdz4[3] * u1[m1p0p0] + + phdz4[4] * u1[m1p0p1] + + phdz4[5] * u1[m1p0p2] + + phdz4[6] * u1[m1p0p3] + ) + + + px4[1] * _f1_1(i, j) * + ( + phdz4[0] * u1[p0p0m3] + + phdz4[1] * u1[p0p0m2] + + phdz4[2] * u1[p0p0m1] + + phdz4[3] * u1[p0p0p0] + + phdz4[4] * u1[p0p0p1] + + phdz4[5] * u1[p0p0p2] + + phdz4[6] * u1[p0p0p3] + ) + + px4[2] * _f1_1(i + 1, j) * + ( + phdz4[0] * u1[p1p0m3] + + phdz4[1] * u1[p1p0m2] + + phdz4[2] * u1[p1p0m1] + + phdz4[3] * u1[p1p0p0] + + phdz4[4] * u1[p1p0p1] + + phdz4[5] * u1[p1p0p2] + + phdz4[6] * u1[p1p0p3] + ) + + px4[3] * _f1_1(i + 2, j) * + ( + phdz4[0] * u1[p2p0m3] + + phdz4[1] * u1[p2p0m2] + + phdz4[2] * u1[p2p0m1] + + phdz4[3] * u1[p2p0p0] + + phdz4[4] * u1[p2p0p1] + + phdz4[5] * u1[p2p0p2] + + phdz4[6] * u1[p2p0p3] + ) + ); + vs2 = + dhy4[2] * v1[p0p0p0] + dhy4[0] * v1[p0m2p0] + + dhy4[1] * v1[p0m1p0] + dhy4[3] * v1[p0p1p0] - + Jii * _g_c(k) * + (phy4[0] * _f2_2(i, j - 2) * + ( + phdz4[0] * v1[p0m2m3] + + phdz4[1] * v1[p0m2m2] + + phdz4[2] * v1[p0m2m1] + + phdz4[3] * v1[p0m2p0] + + phdz4[4] * v1[p0m2p1] + + phdz4[5] * v1[p0m2p2] + + phdz4[6] * v1[p0m2p3] + ) + + phy4[1] * _f2_2(i, j - 1) * + ( + phdz4[0] * v1[p0m1m3] + + phdz4[1] * v1[p0m1m2] + + phdz4[2] * v1[p0m1m1] + + phdz4[3] * v1[p0m1p0] + + phdz4[4] * v1[p0m1p1] + + phdz4[5] * v1[p0m1p2] + + phdz4[6] * v1[p0m1p3] + ) + + phy4[2] * _f2_2(i, j) * + ( + phdz4[0] * v1[p0p0m3] + + phdz4[1] * v1[p0p0m2] + + phdz4[2] * v1[p0p0m1] + + phdz4[3] * v1[p0p0p0] + + phdz4[4] * v1[p0p0p1] + + phdz4[5] * v1[p0p0p2] + + phdz4[6] * v1[p0p0p3] + ) + + phy4[3] * _f2_2(i, j + 1) * + ( + phdz4[0] * v1[p0p1m3] + + phdz4[1] * v1[p0p1m2] + + phdz4[2] * v1[p0p1m1] + + phdz4[3] * v1[p0p1p0] + + phdz4[4] * v1[p0p1p1] + + phdz4[5] * v1[p0p1p2] + + phdz4[6] * v1[p0p1p3] + ) + ); + vs3 = + Jii * (dhz4[2] * w1[p0p0p0] + dhz4[0] * w1[p0p0m2] + + dhz4[1] * w1[p0p0m1] + dhz4[3] * w1[p0p0p1]); + + tmp = xl*(vs1+vs2+vs3); + + a1 = qpa*(vs1+vs2+vs3); + tmp = tmp+d_DT*a1; + + f_r = r1[pos]; + f_rtmp = -h*(vs2+vs3) + a1; + f_xx = xx[pos] + tmp - xm*(vs2+vs3) + vx1*f_r; + rr1[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + rxx[b][a] = (f_xx + d_DT*f_rtmp)*f_dcrj; + + f_r = r2[pos]; + f_rtmp = -h*(vs1+vs3) + a1; + f_yy = (yy[pos] + tmp - xm*(vs1+vs3) + vx1*f_r)*f_dcrj; + rr2[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + ryy[b][a] = (f_yy + d_DT*f_rtmp)*f_dcrj; + + f_r = r3[pos]; + f_rtmp = -h*(vs1+vs2) + a1; + f_zz = (zz[pos] + tmp - xm*(vs1+vs2) + vx1*f_r)*f_dcrj; + rr3[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); + rzz[b][a] = (f_zz + d_DT*f_rtmp)*f_dcrj; + + // xy + float J12i = _f(i, j) * _g3_c(k); + J12i = 1.0 / J12i; + + vs1 = + dy4[1] * u1[p0p0p0] + dy4[0] * u1[p0m1p0] + + dy4[2] * u1[p0p1p0] + dy4[3] * u1[p0p2p0] - + J12i * _g_c(k) * + ( + py4[0] * _f2_1(i, j - 1) * + ( + phdz4[0] * u1[p0m1m3] + + phdz4[1] * u1[p0m1m2] + + phdz4[2] * u1[p0m1m1] + + phdz4[3] * u1[p0m1p0] + + phdz4[4] * u1[p0m1p1] + + phdz4[5] * u1[p0m1p2] + + phdz4[6] * u1[p0m1p3]) + + py4[1] * _f2_1(i, j) * + ( + phdz4[0] * u1[p0p0m3] + + phdz4[1] * u1[p0p0m2] + + phdz4[2] * u1[p0p0m1] + + phdz4[3] * u1[p0p0p0] + + phdz4[4] * u1[p0p0p1] + + phdz4[5] * u1[p0p0p2] + + phdz4[6] * u1[p0p0p3]) + + py4[2] * _f2_1(i, j + 1) * + ( + phdz4[0] * u1[p0p1m3] + + phdz4[1] * u1[p0p1m2] + + phdz4[2] * u1[p0p1m1] + + phdz4[3] * u1[p0p1p0] + + phdz4[4] * u1[p0p1p1] + + phdz4[5] * u1[p0p1p2] + + phdz4[6] * u1[p0p1p3]) + + py4[3] * _f2_1(i, j + 2) * + ( + phdz4[0] * u1[p0p2m3] + + phdz4[1] * u1[p0p2m2] + + phdz4[2] * u1[p0p2m1] + + phdz4[3] * u1[p0p2p0] + + phdz4[4] * u1[p0p2p1] + + phdz4[5] * u1[p0p2p2] + + phdz4[6] * u1[p0p2p3]) + ); + vs2 = + dhx4[2] * v1[p0p0p0] + dhx4[0] * v1[m2p0p0] + + dhx4[1] * v1[m1p0p0] + dhx4[3] * v1[p1p0p0] - + J12i * _g_c(k) * + ( + phx4[0] * _f1_2(i - 2, j) * + ( + phdz4[0] * v1[m2p0m3] + + phdz4[1] * v1[m2p0m2] + + phdz4[2] * v1[m2p0m1] + + phdz4[3] * v1[m2p0p0] + + phdz4[4] * v1[m2p0p1] + + phdz4[5] * v1[m2p0p2] + + phdz4[6] * v1[m2p0p3] + ) + + phx4[1] * _f1_2(i - 1, j) * + ( + phdz4[0] * v1[m1p0m3] + + phdz4[1] * v1[m1p0m2] + + phdz4[2] * v1[m1p0m1] + + phdz4[3] * v1[m1p0p0] + + phdz4[4] * v1[m1p0p1] + + phdz4[5] * v1[m1p0p2] + + phdz4[6] * v1[m1p0p3] + ) + + phx4[2] * _f1_2(i, j) * + ( + phdz4[0] * v1[p0p0m3] + + phdz4[1] * v1[p0p0m2] + + phdz4[2] * v1[p0p0m1] + + phdz4[3] * v1[p0p0p0] + + phdz4[4] * v1[p0p0p1] + + phdz4[5] * v1[p0p0p2] + + phdz4[6] * v1[p0p0p3] + ) + + phx4[3] * _f1_2(i + 1, j) * + ( + phdz4[0] * v1[p1p0m3] + + phdz4[1] * v1[p1p0m2] + + phdz4[2] * v1[p1p0m1] + + phdz4[3] * v1[p1p0p0] + + phdz4[4] * v1[p1p0p1] + + phdz4[5] * v1[p1p0p2] + + phdz4[6] * v1[p1p0p3] + )); + + f_r = r4[pos]; + f_rtmp = h1*(vs1+vs2); + f_xy = xy[pos] + xmu1*(vs1+vs2) + vx1*f_r; + rr4[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); + rxy[b][a] = (f_xy + d_DT*f_rtmp)*f_dcrj; + + // xz + + float J13i = _f_1(i, j) * _g3(k); + J13i = 1.0 * 1.0 / J13i; + + vs1 = J13i * (dz4[1] * u1[p0p0p0] + dz4[0] * u1[p0p0m1] + + dz4[2] * u1[p0p0p1] + dz4[3] * u1[p0p0p2]); + vs2 = + dhx4[2] * w1[p0p0p0] + dhx4[0] * w1[m2p0p0] + + dhx4[1] * w1[m1p0p0] + dhx4[3] * w1[p1p0p0] - + J13i * _g(k) * + ( + phx4[0] * _f1_c(i - 2, j) * + ( + pdhz4[0] * w1[m2p0m3] + + pdhz4[1] * w1[m2p0m2] + + pdhz4[2] * w1[m2p0m1] + + pdhz4[3] * w1[m2p0p0] + + pdhz4[4] * w1[m2p0p1] + + pdhz4[5] * w1[m2p0p2] + + pdhz4[6] * w1[m2p0p3] + ) + + phx4[1] * _f1_c(i - 1, j) * + ( + pdhz4[0] * w1[m1p0m3] + + pdhz4[1] * w1[m1p0m2] + + pdhz4[2] * w1[m1p0m1] + + pdhz4[3] * w1[m1p0p0] + + pdhz4[4] * w1[m1p0p1] + + pdhz4[5] * w1[m1p0p2] + + pdhz4[6] * w1[m1p0p3]) + + phx4[2] * _f1_c(i, j) * + (pdhz4[0] * w1[p0p0m3] + + pdhz4[1] * w1[p0p0m2] + + pdhz4[2] * w1[p0p0m1] + + pdhz4[3] * w1[p0p0p0] + + pdhz4[4] * w1[p0p0p1] + + pdhz4[5] * w1[p0p0p2] + + pdhz4[6] * w1[p0p0p3]) + + phx4[3] * _f1_c(i + 1, j) * + (pdhz4[0] * w1[p1p0m3] + + pdhz4[1] * w1[p1p0m2] + + pdhz4[2] * w1[p1p0m1] + + pdhz4[3] * w1[p1p0p0] + + pdhz4[4] * w1[p1p0p1] + + pdhz4[5] * w1[p1p0p2] + + pdhz4[6] * w1[p1p0p3] + )); + f_r = r5[pos]; + f_rtmp = h2*(vs1+vs2); + f_xz = xz[pos] + xmu2*(vs1+vs2) + vx1*f_r; + rr5[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); + rxz[b][a] = (f_xz + d_DT*f_rtmp)*f_dcrj; + + // yz + + float J23i = _f_2(i, j) * _g3(k); + J23i = 1.0 * 1.0 / J23i; + vs1 = J23i * (dz4[1] * v1[p0p0p0] + dz4[0] * v1[p0p0m1] + + dz4[2] * v1[p0p0p1] + dz4[3] * v1[p0p0p2]); + vs2 = + dy4[1] * w1[p0p0p0] + dy4[0] * w1[p0m1p0] + + dy4[2] * w1[p0p1p0] + dy4[3] * w1[p0p2p0] - + J23i * _g(k) * + ( + py4[0] * _f2_c(i, j - 1) * + ( + pdhz4[0] * w1[p0m1m3] + + pdhz4[1] * w1[p0m1m2] + + pdhz4[2] * w1[p0m1m1] + + pdhz4[3] * w1[p0m1p0] + + pdhz4[4] * w1[p0m1p1] + + pdhz4[5] * w1[p0m1p2] + + pdhz4[6] * w1[p0m1p3] + ) + + py4[1] * _f2_c(i, j) * + ( + pdhz4[0] * w1[p0p0m3] + + pdhz4[1] * w1[p0p0m2] + + pdhz4[2] * w1[p0p0m1] + + pdhz4[3] * w1[p0p0p0] + + pdhz4[4] * w1[p0p0p1] + + pdhz4[5] * w1[p0p0p2] + + pdhz4[6] * w1[p0p0p3] + ) + + py4[2] * _f2_c(i, j + 1) * + ( + pdhz4[0] * w1[p0p1m3] + + pdhz4[1] * w1[p0p1m2] + + pdhz4[2] * w1[p0p1m1] + + pdhz4[3] * w1[p0p1p0] + + pdhz4[4] * w1[p0p1p1] + + pdhz4[5] * w1[p0p1p2] + + pdhz4[6] * w1[p0p1p3] + ) + + py4[3] * _f2_c(i, j + 2) * + ( + pdhz4[0] * w1[p0p2m3] + + pdhz4[1] * w1[p0p2m2] + + pdhz4[2] * w1[p0p2m1] + + pdhz4[3] * w1[p0p2p0] + + pdhz4[4] * w1[p0p2p1] + + pdhz4[5] * w1[p0p2p2] + + pdhz4[6] * w1[p0p2p3] + )); + + f_r = r6[pos]; + f_rtmp = h3*(vs1+vs2); + f_yz = yz[pos] + xmu3*(vs1+vs2) + vx1*f_r; + rr6[b][a] = f_vx2*f_r + f_wwo*f_rtmp; + f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); + ryz[b][a] = (f_yz + d_DT*f_rtmp)*f_dcrj; + } + } + +#pragma unroll + for (int b = 0; b < nb; ++b) { + j = j0 + b; + if (j >= e_j) + continue; +#pragma unroll + for (int a = 0; a < na; ++a) { + k = k0 + a; + pos = i*d_slice_1+j*d_yline_1+k; + if (k < dm_offset + align) + continue; + if (k >= nz - 6 + align) + continue; + + xx[pos] = rxx[b][a]; + yy[pos] = ryy[b][a]; + zz[pos] = rzz[b][a]; + xy[pos] = rxy[b][a]; + xz[pos] = rxz[b][a]; + yz[pos] = ryz[b][a]; + + r1[pos] = rr1[b][a]; + r2[pos] = rr2[b][a]; + r3[pos] = rr3[b][a]; + r4[pos] = rr4[b][a]; + r5[pos] = rr5[b][a]; + r6[pos] = rr6[b][a]; + + } + } + + +} From 3245f731b922913cc35af4cc6aaf78f16b6bb761 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Fri, 25 Jun 2021 16:13:39 -0700 Subject: [PATCH 37/56] Fix source placement (#16) DM compatible source and receiver placement and test. Convergence test and fixes to some broken tests. Point force implementation for the original AWP boundary condition. * fix incorrect placement of density and incorrect interpolation of density in force computation. * begin mms module. * add mms files. * fix density interpolation. * comment out work in progress code. * override material properties. * initialize mms solution. * add forcing functions. * Use plane wave solutions. * remove unused libraries, duplicate error header file, and receiver input file to mms module. * delete unused kernels. * remove block size from definitions.h and remove this dependency from some of the files. * update mms so that uses both P and S plane waves. * Fix kernel generator so that it runs with updated sympy version, and fix off by one errors in density interpolation. * Fix off by 0.5h error for source/receiver placement of components that are located at the cell-centered grid points in the z-direction. This fix only applies to the DM. * start adding point force suppport for the traditional bc. * fix placement of receivers on the free surface for regular AWP. * add surface force to original AWP. doesn't pass the reciprocity test. * Implement point forces in original AWP using stress perturbations. Passes the reciprocity test. * apply symmetry-based boundary conditions, and add body force. * start reintroducing convergence and energy tests. * interior convergence for the velocity field is working. * Cartesian velocity convergence tests shows second order convergence. Added option to enable/disable application of bc. * get interior stress convergence working. * convergence test might be working for a cartesian geometry. It is hard to tell in single precision. * add option to have double-precision topography files. * remove double-precision support because it doesn't work. * put the truncation error test as part of the unit test. Document the test. * add force extrapolation. * update grid printing. * remove broken test. * restore original AWP FS implementation. * add accuracy test data. * set c++ standard. * apply most recent mms changes. * add new grid implementation that maps the global z coordinate to the local block coordinate. * add arg to grid_fill1 that corrects for AWP's (-,+,+) choice. Currently, the correction is not applied. * remove shift in x-direction. Causes several tests to fail. * fix convergence test. * fix broken interpolation test. * fix broken grid_3d test. * fix broken metrics tests. * update dm source/receiver test so that it checks all components. * remove module grid_new. * change grid number identification process. * change to default AWP force implementation. * restore find_grid_number * remove old arch flags. Co-authored-by: Ossian O'Reilly --- CMakeLists.txt | 17 +- include/awp/definitions.h | 4 - include/awp/error.h | 2 - include/awp/pmcl3d.h | 2 +- include/grid/grid_3d.h | 12 +- include/interpolation/interpolation.h | 2 +- include/readers/error.h | 33 - include/topography/grids.h | 2 + .../kernels/optimized_launch_config.cuh | 192 -- .../topography/kernels/optimized_stress.cuh | 58 - .../topography/kernels/optimized_velocity.cuh | 111 - .../topography/kernels/stress_attenuation.cuh | 70 - include/topography/kernels/unoptimized.cuh | 17 - include/topography/mapping.cuh | 43 + include/topography/metrics/metrics.h | 5 + include/topography/mms.cuh | 50 + include/topography/receivers/receivers.h | 3 + include/topography/sources/forces.h | 8 +- include/topography/sources/source.cuh | 22 +- include/topography/sources/source.h | 8 +- include/topography/sources/sources.h | 2 +- include/topography/stress.cuh | 13 +- include/topography/stress_attenuation.cuh | 16 - include/topography/topography.cuh | 2 +- include/topography/velocity.cuh | 3 - src/CMakeLists.txt | 3 +- src/awp/CMakeLists.txt | 3 +- src/awp/command.c | 15 +- src/awp/pmcl3d.c | 104 +- src/buffers/CMakeLists.txt | 1 - src/grid/grid_3d.c | 63 +- src/grid/shift.c | 40 +- src/interpolation/interpolation.cu | 2 +- src/mpi/distribute.c | 4 +- src/topography/CMakeLists.txt | 67 +- src/{ => topography}/functions/CMakeLists.txt | 0 src/{ => topography}/functions/functions.c | 3 +- src/{ => topography}/functions/norm.c | 0 src/{ => topography}/functions/random.c | 2 +- src/topography/geometry.c | 46 +- src/topography/geometry/geometry.c | 2 +- src/topography/grids.c | 40 +- src/topography/host.c | 2 +- src/topography/kernels/CMakeLists.txt | 43 - src/topography/kernels/optimized.cu | 116 - src/topography/kernels/optimized_stress.cu | 2433 ----------------- .../{stress_attenuation.cu => stress.cu} | 339 ++- src/topography/kernels/stress_index_unroll.cu | 62 +- .../kernels/stress_index_unroll.cuh | 741 ----- .../{optimized_velocity.cu => velocity.cu} | 526 ++-- src/topography/kernels/velocity_unroll.cu | 78 +- src/topography/metrics/metrics.c | 62 +- src/topography/mms.cu | 558 ++++ src/topography/mms.py | 96 + src/topography/opt_topography.cu | 17 - src/topography/receivers/receivers.c | 49 +- src/topography/receivers/sgt.c | 2 +- src/topography/sources/forces.c | 84 +- src/topography/sources/source.c | 98 +- src/topography/sources/source.cu | 110 +- src/topography/sources/sources.c | 50 +- src/topography/stress.cu | 405 +-- src/topography/stress_attenuation.cu | 376 --- src/topography/topography.c | 4 +- src/topography/topography.cu | 780 ------ src/topography/velocity.cu | 131 +- src/vtk/vtk.c | 2 +- test111/Makefile | 4 +- test111/stress.cu | 3 +- test111/test111.cu | 13 +- tests/CMakeLists.txt | 27 +- tests/fixtures/source_dm.txt | 6 +- tests/fixtures/source_x.txt | 14 + tests/fixtures/source_xx.txt | 18 + tests/fixtures/source_xy.txt | 18 + tests/fixtures/source_xz.txt | 14 + tests/fixtures/source_y.txt | 14 + tests/fixtures/source_yz.txt | 14 + tests/fixtures/source_z.txt | 14 + tests/grid/CMakeLists.txt | 1 - tests/grid/test_grid_3d.c | 102 +- tests/interpolation/test_interpolation.c | 8 +- tests/mpi/test_distribute.c | 8 +- tests/readers/test_input.c | 2 +- tests/readers/test_version.c | 2 +- tests/test_attenuation.cu | 2 +- tests/topography/CMakeLists.txt | 1 + tests/topography/accuracy/CMakeLists.txt | 8 + tests/topography/accuracy/README.md | 23 + tests/topography/accuracy/build_topography.sh | 8 + tests/topography/accuracy/cupolynomial.cu | 102 + tests/topography/accuracy/cupolynomial.cuh | 39 + .../accuracy/cutopography_kernel.cu | 1430 +++++----- .../accuracy/cutopography_kernel.cuh | 99 + .../topography/accuracy/cutopography_test.cu | 595 ++++ .../topography/accuracy/cutopography_test.cuh | 93 + .../topography/accuracy/data/topography_0.bin | Bin 0 -> 4108 bytes .../topography/accuracy/data/topography_1.bin | Bin 0 -> 9228 bytes .../topography/accuracy/data/topography_2.bin | Bin 0 -> 25612 bytes .../topography/accuracy/data/topography_3.bin | Bin 0 -> 82956 bytes tests/topography/accuracy/functions.c | 261 ++ tests/topography/accuracy/functions.h | 71 + tests/topography/accuracy/grid_check.c | 161 ++ tests/topography/accuracy/grid_check.h | 91 + tests/topography/accuracy/mms.c | 109 + tests/topography/accuracy/mms.h | 27 + tests/topography/accuracy/test_accuracy.cu | 313 +++ tests/topography/accuracy/test_convergence.cu | 896 ++++++ .../accuracy/test_topography_kernels.c | 490 ++++ tests/topography/accuracy/topography.bin | Bin 0 -> 87628 bytes tests/topography/accuracy/topography.py | 43 + tests/topography/accuracy/topography_test.c | 1833 +++++++++++++ tests/topography/accuracy/topography_test.h | 333 +++ tests/topography/geometry/test_geometry.c | 6 +- tests/topography/readers/test_serial_reader.c | 6 +- tests/topography/sources/CMakeLists.txt | 3 + tests/topography/sources/test_sources.c | 2 +- tests/topography/sources/test_sources_dm.c | 151 +- tools/OpenFD/openfd/base/gridfunction.py | 4 +- tools/OpenFD/openfd/dev/variable.py | 4 +- tools/kernel_generation/Makefile | 2 +- tools/kernel_generation/mms.py | 33 +- tools/kernel_generation/scheme.py | 16 +- 123 files changed, 9031 insertions(+), 6762 deletions(-) delete mode 100644 include/readers/error.h delete mode 100644 include/topography/kernels/optimized_launch_config.cuh delete mode 100644 include/topography/kernels/optimized_stress.cuh delete mode 100644 include/topography/kernels/optimized_velocity.cuh delete mode 100644 include/topography/kernels/stress_attenuation.cuh delete mode 100644 include/topography/kernels/unoptimized.cuh create mode 100644 include/topography/mapping.cuh create mode 100644 include/topography/mms.cuh delete mode 100644 include/topography/stress_attenuation.cuh rename src/{ => topography}/functions/CMakeLists.txt (100%) rename src/{ => topography}/functions/functions.c (98%) rename src/{ => topography}/functions/norm.c (100%) rename src/{ => topography}/functions/random.c (86%) delete mode 100644 src/topography/kernels/optimized.cu delete mode 100644 src/topography/kernels/optimized_stress.cu rename src/topography/kernels/{stress_attenuation.cu => stress.cu} (95%) delete mode 100644 src/topography/kernels/stress_index_unroll.cuh rename src/topography/kernels/{optimized_velocity.cu => velocity.cu} (91%) create mode 100644 src/topography/mms.cu create mode 100644 src/topography/mms.py delete mode 100644 src/topography/opt_topography.cu delete mode 100644 src/topography/stress_attenuation.cu delete mode 100644 src/topography/topography.cu create mode 100644 tests/fixtures/source_x.txt create mode 100644 tests/fixtures/source_xx.txt create mode 100644 tests/fixtures/source_xy.txt create mode 100644 tests/fixtures/source_xz.txt create mode 100644 tests/fixtures/source_y.txt create mode 100644 tests/fixtures/source_yz.txt create mode 100644 tests/fixtures/source_z.txt create mode 100644 tests/topography/accuracy/CMakeLists.txt create mode 100644 tests/topography/accuracy/README.md create mode 100755 tests/topography/accuracy/build_topography.sh create mode 100644 tests/topography/accuracy/cupolynomial.cu create mode 100644 tests/topography/accuracy/cupolynomial.cuh rename src/topography/kernels/unoptimized.cu => tests/topography/accuracy/cutopography_kernel.cu (97%) create mode 100644 tests/topography/accuracy/cutopography_kernel.cuh create mode 100644 tests/topography/accuracy/cutopography_test.cu create mode 100644 tests/topography/accuracy/cutopography_test.cuh create mode 100644 tests/topography/accuracy/data/topography_0.bin create mode 100644 tests/topography/accuracy/data/topography_1.bin create mode 100644 tests/topography/accuracy/data/topography_2.bin create mode 100644 tests/topography/accuracy/data/topography_3.bin create mode 100644 tests/topography/accuracy/functions.c create mode 100644 tests/topography/accuracy/functions.h create mode 100644 tests/topography/accuracy/grid_check.c create mode 100644 tests/topography/accuracy/grid_check.h create mode 100644 tests/topography/accuracy/mms.c create mode 100644 tests/topography/accuracy/mms.h create mode 100644 tests/topography/accuracy/test_accuracy.cu create mode 100644 tests/topography/accuracy/test_convergence.cu create mode 100644 tests/topography/accuracy/test_topography_kernels.c create mode 100644 tests/topography/accuracy/topography.bin create mode 100644 tests/topography/accuracy/topography.py create mode 100644 tests/topography/accuracy/topography_test.c create mode 100644 tests/topography/accuracy/topography_test.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c3ed15..ae2cdf4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,20 +1,17 @@ cmake_minimum_required(VERSION 3.10) -cmake_policy(SET CMP0074 NEW) project(AWP_MINI VERSION 1.0 LANGUAGES C CUDA) +if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) + set(CMAKE_CUDA_ARCHITECTURES 70) +endif() include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) -set(GCC_COMPILE_FLAGS "-std=c99 -Wall -Werror\ +set(GCC_COMPILE_FLAGS "-std=c99 -Wall\ -Wextra -Wmissing-prototypes -Wstrict-prototypes \ -Wold-style-definition -Wno-unused-parameter") -if (DEFINED ENV{ARCH}) - set(ARCH $ENV{ARCH}) -else() - set(ARCH sm_70) -endif() -set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O4 -use_fast_math -arch=${ARCH} -Xptxas=-v -lineinfo") +set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O4 -Xcompiler -std=c++11 -use_fast_math -Xptxas=-v -lineinfo") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COMPILE_FLAGS} -D${ARCH}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu11 -D${ARCH}") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COMPILE_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") find_package(MPI REQUIRED) diff --git a/include/awp/definitions.h b/include/awp/definitions.h index feb477e..99774f6 100644 --- a/include/awp/definitions.h +++ b/include/awp/definitions.h @@ -1,10 +1,6 @@ #ifndef DEFINITIONS_H #define DEFINITIONS_H -#define BLOCK_SIZE_X 2 -#define BLOCK_SIZE_Y 2 -#define BLOCK_SIZE_Z 32 - #include #ifndef _prec diff --git a/include/awp/error.h b/include/awp/error.h index 6b6d8a6..b0632f0 100644 --- a/include/awp/error.h +++ b/include/awp/error.h @@ -1,8 +1,6 @@ #ifndef ERROR_H #define ERROR_H -int _last_error; - enum error_codes {SUCCESS, ERR_FILE_OPEN = 100, ERR_FILE_READ = 101, diff --git a/include/awp/pmcl3d.h b/include/awp/pmcl3d.h index 46f3c38..8340f1a 100644 --- a/include/awp/pmcl3d.h +++ b/include/awp/pmcl3d.h @@ -36,7 +36,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, int *USETOPO, char *SOURCEFILE, int *USESOURCEFILE, char *RECVFILE, int *USERECVFILE, char *FORCEFILE, int *USEFORCEFILE, - char *SGTFILE, int *USESGTFILE); + char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE); int read_src_ifault_2(int rank, int READ_STEP, char *INSRC, char *INSRC_I2, diff --git a/include/grid/grid_3d.h b/include/grid/grid_3d.h index 24067f6..34a1fce 100644 --- a/include/grid/grid_3d.h +++ b/include/grid/grid_3d.h @@ -189,11 +189,14 @@ grid1_t grid_grid1_z(const grid3_t grid); * out: Array to fill * n: Array size. Must be greater than the grid size. * grid: 1D grid data structure. + * isxdir: Specify to `1` if the grid should be filled in the x-direction. + * Adjusts for the particular internal coordinate system used by AWP, i.e., fields stored + * in the (-,+,+) octant * * Return value: * Number of elements written. */ -int grid_fill1(prec *out, const grid1_t grid); +int grid_fill1(prec *out, const grid1_t grid, const int isxdir); /* * Check if a query point is in bounds or not. The query point is in bounds if @@ -315,6 +318,13 @@ int grid_pow3(_prec *out, const _prec p, const grid3_t grid); */ double grid_reduce3(const _prec *in, const grid3_t grid); +_prec grid_overlap(const _prec h); +_prec grid_height(const int nz, const _prec h, const int istopo); + +void global_to_local(_prec *zloc, int *block_index, const _prec z, + const _prec h, const int *nz, const int num_grids, + const int istopo); + #ifdef __cplusplus } diff --git a/include/interpolation/interpolation.h b/include/interpolation/interpolation.h index c4b5ef9..0824216 100644 --- a/include/interpolation/interpolation.h +++ b/include/interpolation/interpolation.h @@ -4,7 +4,7 @@ extern "C" { #endif -#include +#include #include /* diff --git a/include/readers/error.h b/include/readers/error.h deleted file mode 100644 index 74c22d3..0000000 --- a/include/readers/error.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef READERS_ERROR_H -#define READERS_ERROR_H - -int _last_error; - -enum error_codes {SUCCESS, - ERR_FILE_OPEN = 100, - ERR_FILE_READ = 101, - ERR_FILE_WRITE = 102, - ERR_GET_VERSION = 200, - ERR_WRONG_VERSION = 201, - ERR_BROADCAST_VERSION = 202, - ERR_CONFIG_PARSE_SIZES = 300, - ERR_CONFIG_SIZE_OVERFLOW = 301, - ERR_CONFIG_DATA_FILENAME = 302, - ERR_CONFIG_DATA_WRITEABLE = 303, - ERR_CONFIG_DATA_MALLOC = 304, - ERR_CONFIG_DATA_READ_ELEMENT = 305, - ERR_CONFIG_BROADCAST = 306, - ERR_CONFIG_DATA_SIZE = 307, - ERR_CONFIG_PARSE_ARG = 308, - ERR_CONFIG_PARSE_UNKNOWN_ARG = 309, - ERR_CONFIG_PARSE_WRONG_DIMENSION = 310, - ERR_CONFIG_PARSE_NOT_DIVISIBLE = 311, -}; -// Display the error message associated with an error code. -const char* error_message(const int err); -void error_print(const int err); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/include/topography/grids.h b/include/topography/grids.h index 8655157..0056fe4 100644 --- a/include/topography/grids.h +++ b/include/topography/grids.h @@ -40,6 +40,8 @@ void grid_data_init(grid_data_t *grid_data, const grid3_t grid); void grid_data_free(grid_data_t *grid_data); grid3_t grids_select(const enum grid_types grid_type, const grids_t *grids); +const char *grid_typename(const enum grid_types gt); + #endif diff --git a/include/topography/kernels/optimized_launch_config.cuh b/include/topography/kernels/optimized_launch_config.cuh deleted file mode 100644 index b10ab18..0000000 --- a/include/topography/kernels/optimized_launch_config.cuh +++ /dev/null @@ -1,192 +0,0 @@ -#ifndef _OPT_TOPOGRAPHY_LAUNCH_CONFIG_H -#define _OPT_TOPOGRAPHY_LAUNCH_CONFIG_H - -// Number of threads per block to use for interior velocity kernel -#ifndef VEL_INT_X -#define VEL_INT_X 64 -#endif -#ifndef VEL_INT_Y -#define VEL_INT_Y 4 -#endif -#ifndef VEL_INT_Z -#define VEL_INT_Z 4 -#endif - -// Number of threads per block to use for boundary velocity kernel -#ifndef VEL_BND_X -#define VEL_BND_X 7 -#endif -#ifndef VEL_BND_Y -#define VEL_BND_Y 8 -#endif -#ifndef VEL_BND_Z -#define VEL_BND_Z 1 -#endif - -// Number of threads per block to use for interior stress kernel -#ifndef STR_INT_X -#define STR_INT_X 32 -#endif -#ifndef STR_INT_Y -#define STR_INT_Y 4 -#endif -#ifndef STR_INT_Z -#define STR_INT_Z 1 -#endif - -// Number of threads per block to use for boundary stress kernel -#ifndef STR_BND_X -#define STR_BND_X 7 -#endif -#ifndef STR_BND_Y -#define STR_BND_Y 8 -#endif -#ifndef STR_BND_Z -#define STR_BND_Z 1 -#endif - -// Kernel naming convention -// 110: Bottom boundary (only used in debug mode) -// 111: Interior -// 112: Top boundary - - -// Number of threads per block -// grid dimension (X, Y, Z) refers to CUDA grid indices -#ifndef DTOPO_VEL_110_X -#define DTOPO_VEL_110_X VEL_BND_X -#endif -#ifndef DTOPO_VEL_110_Y -#define DTOPO_VEL_110_Y VEL_BND_Y -#endif -#ifndef DTOPO_VEL_110_Z -#define DTOPO_VEL_110_Z VEL_BND_Z -#endif - -#ifndef DTOPO_VEL_111_X -#define DTOPO_VEL_111_X VEL_INT_X -#endif -#ifndef DTOPO_VEL_111_Y -#define DTOPO_VEL_111_Y VEL_INT_Y -#endif -#ifndef DTOPO_VEL_111_Z -#define DTOPO_VEL_111_Z VEL_INT_Z -#endif - -#ifndef DTOPO_VEL_112_X -#define DTOPO_VEL_112_X VEL_BND_X -#endif -#ifndef DTOPO_VEL_112_Y -#define DTOPO_VEL_112_Y VEL_BND_Y -#endif -#ifndef DTOPO_VEL_112_Z -#define DTOPO_VEL_112_Z VEL_BND_Z -#endif - -#ifndef DTOPO_BUF_VEL_111_X -#define DTOPO_BUF_VEL_111_X VEL_INT_X -#endif -#ifndef DTOPO_BUF_VEL_111_Y -#define DTOPO_BUF_VEL_111_Y VEL_INT_Y -#endif -#ifndef DTOPO_BUF_VEL_111_Z -#define DTOPO_BUF_VEL_111_Z VEL_INT_Z -#endif - -#ifndef DTOPO_BUF_VEL_112_X -#define DTOPO_BUF_VEL_112_X VEL_BND_X -#endif -#ifndef DTOPO_BUF_VEL_112_Y -#define DTOPO_BUF_VEL_112_Y VEL_BND_Y -#endif -#ifndef DTOPO_BUF_VEL_112_Z -#define DTOPO_BUF_VEL_112_Z VEL_BND_Z -#endif - -#ifndef DTOPO_BUF_VEL_110_X -#define DTOPO_BUF_VEL_110_X VEL_BND_X -#endif -#ifndef DTOPO_BUF_VEL_110_Y -#define DTOPO_BUF_VEL_110_Y VEL_BND_Y -#endif -#ifndef DTOPO_BUF_VEL_110_Z -#define DTOPO_BUF_VEL_110_Z VEL_BND_Z -#endif - -#ifndef DTOPO_STR_110_X -#define DTOPO_STR_110_X STR_INT_X -#endif - -#ifndef DTOPO_STR_110_Y -#define DTOPO_STR_110_Y STR_INT_Y -#endif - -#ifndef DTOPO_STR_110_Z -#define DTOPO_STR_110_Z STR_INT_Z -#endif - -#ifndef DTOPO_STR_111_X -#define DTOPO_STR_111_X STR_INT_X -#endif - -#ifndef DTOPO_STR_111_Y -#define DTOPO_STR_111_Y STR_INT_Y -#endif - -#ifndef DTOPO_STR_111_Z -#define DTOPO_STR_111_Z STR_INT_Z -#endif - -#ifndef DTOPO_STR_112_X -#define DTOPO_STR_112_X STR_INT_X -#endif - -#ifndef DTOPO_STR_112_Y -#define DTOPO_STR_112_Y STR_INT_Y -#endif - -#ifndef DTOPO_STR_112_Z -#define DTOPO_STR_112_Z STR_INT_Z -#endif - - -// Launch bounds - -#ifndef DTOPO_VEL_110_MAX_THREADS_PER_BLOCK -#define DTOPO_VEL_110_MAX_THREADS_PER_BLOCK 32 -#endif - -#ifndef DTOPO_VEL_111_MAX_THREADS_PER_BLOCK -#define DTOPO_VEL_111_MAX_THREADS_PER_BLOCK 1024 -#endif - -#ifndef DTOPO_VEL_112_MAX_THREADS_PER_BLOCK -#define DTOPO_VEL_112_MAX_THREADS_PER_BLOCK 64 -#endif - -#ifndef DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK -#define DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK 1024 -#endif - -#ifndef DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK -#define DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK 1024 -#endif - -#ifndef DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK -#define DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK 1024 -#endif - -// Apply loop in kernel -// This option must be compatible with the kernel. If there is no loop in the -// kernel, turn off this option, and vice versa. -#define DTOPO_VEL_110_LOOP_Z 1 -#define DTOPO_VEL_111_LOOP_Z 0 -#define DTOPO_VEL_112_LOOP_Z 0 -#define DTOPO_BUF_VEL_110_LOOP_Z 1 -#define DTOPO_BUF_VEL_111_LOOP_Z 0 -#define DTOPO_BUF_VEL_112_LOOP_Z 0 -#define DTOPO_STR_110_LOOP_Z 1 -#define DTOPO_STR_111_LOOP_Z 1 -#define DTOPO_STR_112_LOOP_Z 1 - -#endif diff --git a/include/topography/kernels/optimized_stress.cuh b/include/topography/kernels/optimized_stress.cuh deleted file mode 100644 index 9059a68..0000000 --- a/include/topography/kernels/optimized_stress.cuh +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef OPTIMIZED_STRESS_H -#define OPTIMIZED_STRESS_H -#include -#include - -__global__ void dtopo_str_110( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej); -__global__ void dtopo_str_111( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej); -__global__ void dtopo_str_112( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej); -__global__ void dtopo_init_material_111(float *__restrict__ lami, - float *__restrict__ mui, - float *__restrict__ rho, const int nx, - const int ny, const int nz); -#endif \ No newline at end of file diff --git a/include/topography/kernels/optimized_velocity.cuh b/include/topography/kernels/optimized_velocity.cuh deleted file mode 100644 index efe3a5e..0000000 --- a/include/topography/kernels/optimized_velocity.cuh +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef OPTIMIZED_VELOCITY_H -#define OPTIMIZED_VELOCITY_H -#include -#include - -__global__ void -dtopo_vel_110(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej); -__global__ void -dtopo_vel_111(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej); -__global__ void -dtopo_vel_112(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej); -__global__ void dtopo_buf_vel_110( - float *__restrict__ buf_u1, float *__restrict__ buf_u2, - float *__restrict__ buf_u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float *__restrict__ u1, - const float *__restrict__ u2, const float *__restrict__ u3, const float a, - const float nu, const int nx, const int ny, const int nz, const int bj, - const int ej, const int rj0); -__global__ void dtopo_buf_vel_111( - float *__restrict__ buf_u1, float *__restrict__ buf_u2, - float *__restrict__ buf_u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float *__restrict__ u1, - const float *__restrict__ u2, const float *__restrict__ u3, const float a, - const float nu, const int nx, const int ny, const int nz, const int bj, - const int ej, const int rj0); -__global__ void dtopo_buf_vel_112( - float *__restrict__ buf_u1, float *__restrict__ buf_u2, - float *__restrict__ buf_u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float *__restrict__ u1, - const float *__restrict__ u2, const float *__restrict__ u3, const float a, - const float nu, const int nx, const int ny, const int nz, const int bj, - const int ej, const int rj0); -#endif \ No newline at end of file diff --git a/include/topography/kernels/stress_attenuation.cuh b/include/topography/kernels/stress_attenuation.cuh deleted file mode 100644 index 174e5f2..0000000 --- a/include/topography/kernels/stress_attenuation.cuh +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef TOPO_STRESS_H -#define TOPO_STRESS_H -#include -#include - -void set_constants(const _prec dh, const _prec dt, const int nxt, const int - nyt, const int nzt); - -__global__ void dtopo_str_111(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict__ zz, - _prec* __restrict__ xy, _prec* __restrict__ xz, _prec* __restrict__ yz, - _prec* __restrict__ r1, _prec* __restrict__ r2, _prec* __restrict__ r3, - _prec* __restrict__ r4, _prec* __restrict__ r5, _prec* __restrict__ r6, - _prec* __restrict__ u1, - _prec* __restrict__ v1, - _prec* __restrict__ w1, - const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, - const _prec *__restrict__ lam, - const _prec *__restrict__ mu, - const _prec *__restrict__ qp, - const _prec *__restrict__ coeff, - const _prec *__restrict__ qs, - const _prec *__restrict__ dcrjx, - const _prec *__restrict__ dcrjy, - const _prec *__restrict__ dcrjz, - const _prec *__restrict__ d_vx1, - const _prec *__restrict__ d_vx2, - const int *__restrict__ d_ww, - const _prec *__restrict__ d_wwo, - int NX, int ny, int nz, int rankx, int ranky, - int nzt, int s_i, int e_i, int s_j, int e_j); - -__global__ void dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restrict__ zz, - _prec* __restrict__ xy, _prec* __restrict__ xz, _prec* __restrict__ yz, - _prec* __restrict__ r1, _prec* __restrict__ r2, _prec* __restrict__ r3, - _prec* __restrict__ r4, _prec* __restrict__ r5, _prec* __restrict__ r6, - _prec* __restrict__ u1, - _prec* __restrict__ v1, - _prec* __restrict__ w1, - const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, - const _prec *__restrict__ lam, - const _prec *__restrict__ mu, - const _prec *__restrict__ qp, - const _prec *__restrict__ coeff, - const _prec *__restrict__ qs, - const _prec *__restrict__ dcrjx, - const _prec *__restrict__ dcrjy, - const _prec *__restrict__ dcrjz, - const _prec *__restrict__ d_vx1, - const _prec *__restrict__ d_vx2, - const int *__restrict__ d_ww, - const _prec *__restrict__ d_wwo, - int NX, int ny, int nz, int rankx, int ranky, - int nzt, int s_i, int e_i, int s_j, int e_j); - - -#endif diff --git a/include/topography/kernels/unoptimized.cuh b/include/topography/kernels/unoptimized.cuh deleted file mode 100644 index 30545e5..0000000 --- a/include/topography/kernels/unoptimized.cuh +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef CUTOPOGRAPHY_KERNEL_H -#define CUTOPOGRAPHY_KERNEL_H -#include -#include - -__global__ void dtopo_vel_110(float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *rho, const float *s11, const float *s12, const float *s13, const float *s22, const float *s23, const float *s33, const float a, const float nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej); -__global__ void dtopo_vel_111(float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *rho, const float *s11, const float *s12, const float *s13, const float *s22, const float *s23, const float *s33, const float a, const float nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej); -__global__ void dtopo_vel_112(float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *rho, const float *s11, const float *s12, const float *s13, const float *s22, const float *s23, const float *s33, const float a, const float nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej); -__global__ void dtopo_buf_vel_110(float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *rho, const float *s11, const float *s12, const float *s13, const float *s22, const float *s23, const float *s33, const float *u1, const float *u2, const float *u3, const float a, const float nu, const int nx, const int ny, const int nz, const int bj, const int ej, const int rj0); -__global__ void dtopo_buf_vel_111(float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *rho, const float *s11, const float *s12, const float *s13, const float *s22, const float *s23, const float *s33, const float *u1, const float *u2, const float *u3, const float a, const float nu, const int nx, const int ny, const int nz, const int bj, const int ej, const int rj0); -__global__ void dtopo_buf_vel_112(float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *rho, const float *s11, const float *s12, const float *s13, const float *s22, const float *s23, const float *s33, const float *u1, const float *u2, const float *u3, const float a, const float nu, const int nx, const int ny, const int nz, const int bj, const int ej, const int rj0); -__global__ void dtopo_str_110(float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *lami, const float *mui, const float a, const float nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej); -__global__ void dtopo_str_111(float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *lami, const float *mui, const float a, const float nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej); -__global__ void dtopo_str_112(float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, const float *f_1, const float *f_2, const float *f_c, const float *g, const float *g3, const float *g3_c, const float *g_c, const float *lami, const float *mui, const float a, const float nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej); -__global__ void dtopo_init_material_111(float *lami, float *mui, float *rho, const int nx, const int ny, const int nz); -#endif - diff --git a/include/topography/mapping.cuh b/include/topography/mapping.cuh new file mode 100644 index 0000000..acc30b9 --- /dev/null +++ b/include/topography/mapping.cuh @@ -0,0 +1,43 @@ +#ifndef _TOPOGRAPHY_MAPPING_H +#define _TOPOGRAPHY_MAPPING_H + +#define TOL 1e-4 +#define MAPPING_START_POINT 7 + +__device__ __host__ __inline__ float topo_mapping0(const float f, const float r, + const float h, const int n) { + float l = (n - 2) * h; + float d1 = h * 6.0; + + //printf("f = %g \n", f); + if (r < h * MAPPING_START_POINT) return (r - h * MAPPING_START_POINT); + else + return f * (r - h * MAPPING_START_POINT); + //return (r*(-l + r) - r*(-d1 + r)*f)/(d1 - l); +} + +// Differentiate mapping with respect to r1, r2 +__device__ __host__ __inline__ float topo_mapping(const float f_1, const float r, + const float h, const int n) { + float l = (n - 2) * h; + float d1 = h * 6.0; + + //return 0.0; + return f_1 * (r - h * MAPPING_START_POINT); + //return r*(d1 - r)*f_1/(d1 - l); +} + +// Differentiate mapping with respect to r3 +__device__ __host__ __inline__ float topo_diff_mapping(const float f, + const float r, + const float h, + const int n) { + float l = (n - 2) * h; + float d1 = h * 6.0; + return f; + //return (- d1*f + l + 2*r*f - 2*r)/( l - d1); +} + +#endif + + diff --git a/include/topography/metrics/metrics.h b/include/topography/metrics/metrics.h index 4b63697..401ada4 100644 --- a/include/topography/metrics/metrics.h +++ b/include/topography/metrics/metrics.h @@ -151,6 +151,11 @@ int metrics_interpolate_f_point(const f_grid_t *f, prec *out, const prec *in, const grid3_t grid, const prec *qx, const prec *qy, const int m, const int deg); +int metrics_interpolate_jacobian(const f_grid_t *fgrid, float *out, const float *f, const float *g, + const float *x, const float *y, const float *z, + grid3_t grid, const float *qx, + const float *qy, const float *qz, const int m, const int deg); + g_grid_t metrics_init_g(const int *size, const _prec gridspacing); void metrics_build_g(g_grid_t *g); void metrics_free_g(g_grid_t *g); diff --git a/include/topography/mms.cuh b/include/topography/mms.cuh new file mode 100644 index 0000000..397ff74 --- /dev/null +++ b/include/topography/mms.cuh @@ -0,0 +1,50 @@ +#ifndef _TOPOGRAPHY_MMS_H +#define _TOPOGRAPHY_MMS_H + + +#include + +#ifdef __cplusplus +extern "C" { + +#include +#endif +void mms_init(const char *MMSFILE, const int *nxt, + const int *nyt, const int *nzt, const int ngrids, float **d_d1, + float **d_lam, float **d_mu, float **d_qp, float **d_qs, + float **d_vx, float **d_vy, float **d_vz, float **d_xx, + float **d_yy, float **d_zz, float **d_xy, float **d_xz, + float **d_yz, int px, int py, int rank, const MPI_Comm comm, const float *h, const float dt); + +void mms_exact_velocity( + float *d_vx, float *d_vy, float *d_vz, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const int bi, const int bj, const int bk, + const int ei, const int ej, const int ek, + const float h, const float t, const int apply_in_interior); + +void mms_exact_stress( + float *d_xx, float *d_yy, float *d_zz, + float *d_xy, float *d_xz, float *d_yz, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const int bi, const int bj, const int bk, + const int ei, const int ej, const int ek, + const float h, const float t, const int apply_in_interior); + + +void mms_force_velocity(float *d_vx, float *d_vy, float *d_vz, const int nx, + const int ny, const int nz, const float h, const int px, + const int py, const int pz, const float t, const float dt); + +void mms_force_stress(float *d_xx, float *d_yy, float *d_zz, float *d_xy, + float *d_xz, float *d_yz, const int nx, const int ny, const int nz, + const float h, const int px, const int py, const int pz, const float t, const float dt); +#ifdef __cplusplus +} +#endif + +#endif // MMS_CUH + + diff --git a/include/topography/receivers/receivers.h b/include/topography/receivers/receivers.h index 1ad49c2..8b84e3b 100644 --- a/include/topography/receivers/receivers.h +++ b/include/topography/receivers/receivers.h @@ -7,6 +7,7 @@ #include #include +#include void receivers_init(const char *filename, const grids_t *grids, int ngrids, const f_grid_t *f, const MPI_Comm comm, const int rank, @@ -16,7 +17,9 @@ void receivers_write(const prec *d_vx, const prec *d_vy, const prec *d_vz, const size_t step, const size_t num_steps, const int grid_num); size_t receivers_last_step(void); +recv_t receivers_get_receiver(enum grid_types grid_type); void receivers_step_format(char *out, size_t step, const char *base); + #endif diff --git a/include/topography/sources/forces.h b/include/topography/sources/forces.h index 0bef642..481ae54 100644 --- a/include/topography/sources/forces.h +++ b/include/topography/sources/forces.h @@ -10,13 +10,17 @@ #include void forces_init(const char *filename, const grids_t *grids, int ngrids, - const f_grid_t *f, const MPI_Comm comm, const int rank, - const int size); + const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, + const int size, const float *d_rho, const int istopo); int forces_boundary_check(const source_t *Fx); void forces_read(const size_t step); void forces_add(prec *d_u1, prec *d_v1, prec *d_w1, const prec *d_d1, const size_t step, const prec h, const prec dt, const f_grid_t *f, const g_grid_t *g, const int grid_num); +void forces_add_cartesian(prec *d_xz, prec *d_yz, prec *d_zz, const size_t step, + const int nx, const int ny, const int nz, const prec h, const prec dt, const int grid_num); +void forces_add_cartesian_velocity(prec *d_vx, prec *d_vy, prec *d_vz, const size_t step, + const int nx, const int ny, const int nz, const prec h, const prec dt, const int grid_num); void forces_finalize(void); #endif diff --git a/include/topography/sources/source.cuh b/include/topography/sources/source.cuh index 13a0649..c7d4e54 100644 --- a/include/topography/sources/source.cuh +++ b/include/topography/sources/source.cuh @@ -34,7 +34,7 @@ void cusource_add_force_H(const cu_interp_t *I, prec *out, const prec *in, const prec *d1, const prec h, const prec dt, const prec quad_weight, const prec *f, const int nx, const int ny, - const int nz, const prec *dg); + const int nz, const prec *dg, const int sourcetype, const int dir); __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, const prec *lx, const prec *ly, const prec *lz, const int num_basis, @@ -44,6 +44,26 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, const int num_query, const grid3_t grid, const prec *f, const int nx, const int ny, const int nz, const prec *dg); + +__global__ void cusource_add_force_stress(prec *out, const prec *in, const prec *d1, + const prec *lx, const prec *ly, + const prec *lz, const int num_basis, + const int *ix, const int *iy, const int *iz, + const int *lidx, const prec h, const prec dt, + const prec quad_weight, + const int num_query, const grid3_t grid, + const prec *f, const int nx, const int ny, + const int nz, const prec *dg, const int dir); + +__global__ void cusource_add_force_velocity(prec *out, const prec *in, const prec *d1, + const prec *lx, const prec *ly, + const prec *lz, const int num_basis, + const int *ix, const int *iy, const int *iz, + const int *lidx, const prec h, const prec dt, + const prec quad_weight, + const int num_query, const grid3_t grid, + const prec *f, const int nx, const int ny, + const int nz, const prec *dg, const int dir); #ifdef __cplusplus } #endif diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index 0f485e2..5192f34 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -19,12 +19,6 @@ #define SOURCE_DM_OFFSET_X 0 #define SOURCE_DM_OFFSET_Y -1 -// Shift due to inconsistency with the user coordinate (0, 0, 0) defined at a -// material grid point, but (0, 0, 0) defined at the shear stress xz in the -// internal coordinate system (see shift.c) -//#define SOURCE_OFFSET_X -0.5 -#define SOURCE_OFFSET_X -0.5 - typedef struct { int *indices; int *offsets; @@ -105,7 +99,7 @@ void source_add_force(prec *out, const prec *d1, source_t *src, const prec quad_weight, const prec *f, const int nx, const int ny, const int nz, const prec *dg, - const int grid_num); + const int grid_num, const int sourcetype, const int dir); #endif diff --git a/include/topography/sources/sources.h b/include/topography/sources/sources.h index 0fa1609..5adb4e5 100644 --- a/include/topography/sources/sources.h +++ b/include/topography/sources/sources.h @@ -10,7 +10,7 @@ #include void sources_init(const char *filename, const grids_t *grids, int ngrids, - const f_grid_t *f, const MPI_Comm comm, const int rank, + const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, const int size); void sources_read(const size_t step); void sources_add_cartesian(prec *d_xx, prec *d_yy, prec *d_zz, prec *d_xy, diff --git a/include/topography/stress.cuh b/include/topography/stress.cuh index 5e15934..f5758fe 100644 --- a/include/topography/stress.cuh +++ b/include/topography/stress.cuh @@ -1,24 +1,25 @@ #ifndef _TOPOGRAPHY_STRESS_H #define _TOPOGRAPHY_STRESS_H -#include -#include -#include #include #include #include -#include -#include -#include +#include #ifdef __cplusplus extern "C" { #endif +void topo_set_constants(topo_t *T); void topo_stress_interior_H(topo_t *T); void topo_stress_left_H(topo_t *T); void topo_stress_right_H(topo_t *T); #ifdef __cplusplus } +#else +void topo_set_constants(topo_t *T); +void topo_stress_interior_H(topo_t *T); +void topo_stress_left_H(topo_t *T); +void topo_stress_right_H(topo_t *T); #endif #endif diff --git a/include/topography/stress_attenuation.cuh b/include/topography/stress_attenuation.cuh deleted file mode 100644 index 1d9a719..0000000 --- a/include/topography/stress_attenuation.cuh +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _TOPOGRAPHY_STRESS_ATTENUATION_H -#define _TOPOGRAPHY_STRESS_ATTENUATION_H - -#include - -#ifdef __cplusplus -extern "C" { -void topo_set_constants(topo_t *T); -#endif -#ifdef __cplusplus -} -#else -void topo_set_constants(topo_t *T); -#endif - -#endif diff --git a/include/topography/topography.cuh b/include/topography/topography.cuh index 07913cc..d8b0457 100644 --- a/include/topography/topography.cuh +++ b/include/topography/topography.cuh @@ -152,7 +152,7 @@ void topo_stress_right_H(topo_t *T); } #endif -// Number of threads per block to use +// Min. block dimensions #ifndef TBX #define TBX 1 #endif diff --git a/include/topography/velocity.cuh b/include/topography/velocity.cuh index 02cdd93..a6de6c7 100644 --- a/include/topography/velocity.cuh +++ b/include/topography/velocity.cuh @@ -6,9 +6,6 @@ #include #include -#include -#include -#include #ifdef __cplusplus extern "C" { diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0b0e955..b07218a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,13 +1,12 @@ add_subdirectory(awp) -add_subdirectory(grid) add_subdirectory(topography) add_subdirectory(argparse) add_subdirectory(mpi) add_subdirectory(interpolation) -add_subdirectory(functions) add_subdirectory(buffers) add_subdirectory(readers) add_subdirectory(vtk) add_subdirectory(test) add_subdirectory(checksum) +add_subdirectory(grid) diff --git a/src/awp/CMakeLists.txt b/src/awp/CMakeLists.txt index cf493eb..b01dbe2 100644 --- a/src/awp/CMakeLists.txt +++ b/src/awp/CMakeLists.txt @@ -1,5 +1,4 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h ${AWP_MINI_SOURCE_DIR}/include/awp/pmcl3d_cons.h ) @@ -37,7 +36,7 @@ add_library(lpmcl3d utils.c ${HEADERS}) -target_link_libraries(lpmcl3d opt_topography_attenuation buffers mpi checksum) +target_link_libraries(lpmcl3d topography buffers mpi checksum) # target_include_directories(lpmcl3d PUBLIC diff --git a/src/awp/command.c b/src/awp/command.c index 05e1fe4..7e009de 100644 --- a/src/awp/command.c +++ b/src/awp/command.c @@ -55,6 +55,7 @@ * RECVFILE Receiver output file * FORCEFILE Boundary point force input file * SGTFILE Strain Green's tensor output file +* MMSFILE MMS input file **************************************************************************************************************** */ @@ -134,6 +135,7 @@ const char def_SOURCEFILE[IN_FILE_LEN] = ""; const char def_RECVFILE[IN_FILE_LEN] = ""; const char def_FORCEFILE[IN_FILE_LEN] = ""; const char def_SGTFILE[IN_FILE_LEN] = ""; +const char def_MMSFILE[IN_FILE_LEN] = ""; void parsemultiple(char *optarg, int *val); @@ -161,7 +163,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, int *USETOPO, char *SOURCEFILE, int *USESOURCEFILE, char *RECVFILE, int *USERECVFILE, char *FORCEFILE, int *USEFORCEFILE, - char *SGTFILE, int *USESGTFILE) + char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE) { int p; @@ -222,12 +224,13 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, strcpy(INTOPO, def_INTOPO); strcpy(SOURCEFILE, def_SOURCEFILE); strcpy(RECVFILE, def_RECVFILE); + strcpy(MMSFILE, def_MMSFILE); extern char *optarg; static const char *optstring = "-T:H:t:A:P:M:D:S:N:V:B:n:I:R:Q:X:Y:Z:x:y:G:z:i:l:h:30:p:s:r:W:1:2:" - "3:11:12:13:21:22:23:100:101:102:103:106:107:109:9:o:c:"; + "3:11:12:13:21:22:23:100:101:102:103:106:107:109:9:14:o:c:"; static struct option long_options[] = { {"TMAX", required_argument, NULL, 'T'}, {"DH", required_argument, NULL, 'H'}, @@ -278,6 +281,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, {"RECVFILE", required_argument, NULL, 109}, {"FORCEFILE", required_argument, NULL, 9}, {"SGTFILE", required_argument, NULL, 10}, + {"MMSFILE", required_argument, NULL, 14}, }; @@ -446,6 +450,10 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, strcpy(SGTFILE, optarg); *USESGTFILE = 1; break; + case 14: + strcpy(MMSFILE, optarg); + *USEMMSFILE = 1; + break; default: printf( "Usage: %s \nOptions:\n\t[(-T | --TMAX) " @@ -520,6 +528,9 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, printf( "\n\t[(-10 | --SGTFILE) ]\n\n"); + printf( + "\n\t[(-14 | --MMSFILE) ]\n\n"); exit(-1); } } diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index 6e855c6..32ed3c1 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -1,4 +1,4 @@ -/* + /* ******************************************************************************** * pmcl3d.c * * programming in C&CUDA language * @@ -24,12 +24,14 @@ #include #include #include -#include +#include #include #include #include #include #include +#include +#include #include #define VERBOSE 1 @@ -94,6 +96,9 @@ int main(int argc, char **argv) int usesgtfile = 0; char SGTFILE[IN_FILE_LEN]; + int usemms = 0; + char MMSFILE[IN_FILE_LEN]; + // GPU variables long int num_bytes; float **d_d1; @@ -306,7 +311,7 @@ int main(int argc, char **argv) &SoCalQ, INSRC, INVEL, OUT, INSRC_I2, CHKFILE, &ngrids, &FOLLOWBATHY, INTOPO, &usetopo, SOURCEFILE, &usesourcefile, RECVFILE, &userecvfile, FORCEFILE, &useforcefile, - SGTFILE, &usesgtfile); + SGTFILE, &usesgtfile, MMSFILE, &usemms); #ifndef SEISMIO #ifdef NOBGIO @@ -980,6 +985,7 @@ int main(int argc, char **argv) } } +if (!usemms) { #if VERBOSE if (rank == 0) printf("Before inimesh\n"); @@ -1119,6 +1125,9 @@ int main(int argc, char **argv) } fprintf(stdout, "done\n"); } + +// MMS ends +} MPI_Barrier(MCW); vx1 = (Grid3D *)calloc(ngrids, sizeof(Grid3D)); @@ -1685,6 +1694,14 @@ int main(int argc, char **argv) } f_grid_t *metrics_f = NULL; + g_grid_t *metrics_g = NULL; + +if (usemms) { + if (rank == 0) printf("METHOD OF MANUFACTURED SOLUTIONS ENABLED \n"); + mms_init(MMSFILE, nxt, nyt, nzt, ngrids, + d_d1, d_lam, d_mu, d_qp, d_qs, + d_u1, d_v1, d_w1, d_xx, d_yy, d_zz, d_xy, d_xz, d_yz, coord[0], coord[1], rank, MCW, DH, DT); +} #if TOPO @@ -1711,6 +1728,8 @@ int main(int argc, char **argv) topo_init_geometry(&T); topo_build(&T); topo_set_constants(&T); + + topo_write_geometry_vtk(&T, 1); } #endif @@ -1724,17 +1743,18 @@ int main(int argc, char **argv) if (T.use) { metrics_f = &T.metrics_f; + metrics_g = &T.metrics_g; } if (usesourcefile) - sources_init(SOURCEFILE, grids, ngrids, metrics_f, MCW, rank, + sources_init(SOURCEFILE, grids, ngrids, metrics_f, metrics_g, MCW, rank, size_tot); if (userecvfile) receivers_init(RECVFILE, grids, ngrids, metrics_f, MCW, rank, size_tot); if (useforcefile) - forces_init(FORCEFILE, grids, ngrids, metrics_f, MCW, rank, - size_tot); + forces_init(FORCEFILE, grids, ngrids, metrics_f, metrics_g, MCW, rank, + size_tot, (float*)d_d1[0], usetopo); if (usesgtfile) { sgt_init(SGTFILE, grids, ngrids, metrics_f, MCW, rank, @@ -2006,6 +2026,7 @@ int main(int argc, char **argv) dump_nonzeros(d_w1[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "w1", p, cur_step, 2, rank, size); } + CUCHK(cudaStreamSynchronize(stream_i)); for (p = 0; p < ngrids; p++) @@ -2032,6 +2053,33 @@ int main(int argc, char **argv) dump_nonzeros(d_yz[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "yz", p, cur_step, 2, rank, size); } + //if (!usetopo) + //forces_add_cartesian(d_xz[0], d_yz[0], d_zz[0], cur_step, nxt[0], nyt[0], nzt[0], DH[0], DT, 0); + if (!usetopo) + forces_add_cartesian_velocity(d_u1[0], d_v1[0], d_w1[0], cur_step, nxt[0], nyt[0], nzt[0], DH[0], DT, 0); + + if (usemms) { + float t = DT * (cur_step); + for (p = 0; p < ngrids; p++) { + mms_force_velocity(d_u1[p], d_v1[p], d_w1[p], nxt[p], + nyt[p], nzt[p], DH[p], coord[0], + coord[1], p, t + 0.5 * DT , DT); + } + + p = ngrids - 1; + //// Exact solution at bottom boundary + //mms_exact_velocity(d_u1[p], d_v1[p], d_w1[p], + //nxt[p], nyt[p], nzt[p], coord[0], coord[1], p, 0, 0, 0, + //4 + 2 * ngsl + nxt[p], 4 + 2 * ngsl + nyt[p], 8, DH[p], t); + + // Exact solution at top boundary + //mms_exact_velocity(d_u1[p], d_v1[p], d_w1[p], + // nxt[p], nyt[p], nzt[p], coord[0], coord[1], + // p, 50 , 50, 16, 4 + 2 * ngsl + nxt[p] - 50, + // 4 + 2 * ngsl + nyt[p] - 50, nzt[p] - 16, DH[p], t, 0); + } + + for (p = 0; p < ngrids; p++) { PostRecvMsg_X(RL_vel[p], RR_vel[p], MCW, request_x[p], &count_x[p], msg_v_size_x[p], x_rank_L, x_rank_R, p); @@ -2055,6 +2103,7 @@ int main(int argc, char **argv) #if TOPO topo_stress_interior_H(&T); #endif + } else { @@ -2132,6 +2181,7 @@ int main(int argc, char **argv) } CUCHK(cudaDeviceSynchronize()); + for (p = 0; p < ngrids; p++) { dump_nonzeros(d_xx[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "xx", p, cur_step, 8, rank, size); @@ -2197,9 +2247,9 @@ int main(int argc, char **argv) } sources_read(cur_step); + forces_read(cur_step); if (T.use) { - forces_read(cur_step); sources_add_curvilinear(d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], cur_step, DH[0], DT, &T.metrics_f, &T.metrics_g, 0); @@ -2479,6 +2529,42 @@ int main(int argc, char **argv) CUCHK(cudaDeviceSynchronize()); fstr_H(d_zz[0], d_xz[0], d_yz[0], stream_i, xls[0], xre[0], yls[0], yre[0]); + + + if (usemms) { + float t = DT * (cur_step - 1) + 0.5 * DT; + for (p = 0; p < ngrids; p++) { + mms_force_stress(d_xx[p], d_yy[p], d_zz[p], + d_xy[p], d_xz[p], d_yz[p], + nxt[p], nyt[p], nzt[p], DH[p], + coord[0], coord[1], p, + t + 0.5 * DT, DT); + } + + p = ngrids - 1; + + // Exact solution at bottom boundary + //mms_exact_stress( + // d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], + // d_yz[p], nxt[p], nyt[p], nzt[p], coord[0], coord[1], + // p, 2 + ngsl, 2 + ngsl, 8, 2 + ngsl + nxt[p], + // 2 + ngsl + nyt[p], nzt[p] - 8, DH[p], t, 0); + + //// Exact solution at top boundary + //mms_exact_stress( + // d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], + // d_yz[p], nxt[p], nyt[p], nzt[p], coord[0], coord[1], + // p, 0 , 0, nzt[p] - 8, 4 + 2 * ngsl + nxt[p], + // 4 + 2 * ngsl + nyt[p], nzt[p], DH[p], t); + + //mms_exact_stress( + // d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], + // d_yz[p], nxt[p], nyt[p], nzt[p], coord[0], coord[1], + // p, 50 , 50, 16, 4 + 2 * ngsl + nxt[p] - 50, + // 4 + 2 * ngsl + nyt[p] - 20, nzt[p] - 16, DH[p], t, 0); + + CUCHK(cudaDeviceSynchronize()); + } CUCHK(cudaDeviceSynchronize()); for (p = 0; p < ngrids; p++) @@ -2488,6 +2574,10 @@ int main(int argc, char **argv) cur_step, nt, p); } +#define TOPO_USE_VTK 1 + if (cur_step % 10 == 0) + topo_write_vtk(&T, cur_step, 1); + if (cur_step % NTISKP == 0) { #ifndef SEISMIO diff --git a/src/buffers/CMakeLists.txt b/src/buffers/CMakeLists.txt index 6b002a6..312c279 100644 --- a/src/buffers/CMakeLists.txt +++ b/src/buffers/CMakeLists.txt @@ -1,6 +1,5 @@ set(HEADERS ${AWP_MINI_SOURCE_DIR}/include/buffers/buffer.h - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h ${AWP_MINI_SOURCE_DIR}/include/test/test.h ) diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index ff5f470..1dbe1ba 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -264,11 +264,11 @@ grid1_t grid_grid1_z(const grid3_t grid) return grid1; } -int grid_fill1(prec *out, const grid1_t grid) +int grid_fill1(prec *out, const grid1_t grid, const int isxdir) { _prec h = grid.gridspacing; for (int i = 0; i < grid.size; ++i) { - out[i] = h * (i + grid.id * (grid.size - 2 * grid.padding) - 0.5 * grid.shift - grid.padding); + out[i] = h * (i + grid.id * (grid.size - 2 * grid.padding) - 0.5 * grid.shift + isxdir * grid.shift - grid.padding); } if (grid.shift && grid.boundary1) { @@ -361,19 +361,19 @@ int grid_in_bounds_moment_tensor(const _prec *x, const _prec q, const grid1_t gr int grid_fill_x(prec *out, const fcn_grid_t grid) { grid1_t grid1 = grid_grid1_x(grid); - return grid_fill1(out, grid1); + return grid_fill1(out, grid1, 1); } int grid_fill_y(prec *out, const fcn_grid_t grid) { grid1_t grid1 = grid_grid1_y(grid); - return grid_fill1(out, grid1); + return grid_fill1(out, grid1, 0); } int grid_fill_z(prec *out, const fcn_grid_t grid) { grid1_t grid1 = grid_grid1_z(grid); - return grid_fill1(out, grid1); + return grid_fill1(out, grid1, 0); } int grid_fill3_x(_prec *out, const _prec *x, const grid3_t grid) @@ -442,3 +442,56 @@ double grid_reduce3(const _prec *in, const grid3_t grid) return out; } +_prec grid_overlap(const _prec h) { + return 7.0 * h; +} +_prec grid_height(const int nz, const _prec h, const int istopo) { + return istopo == 1 ? (nz - 2) * h : (nz - 1) * h; +} +void global_to_local(_prec *zloc, int *block_index, const _prec z, + const _prec h, const int *nz, const int num_grids, + const int istopo) { + _prec z0 = z; + _prec bi = -1; + + _prec hloc = h; + _prec H = 0.0; + // Go from top grid to bottom grid + for (int i = 0; i < num_grids; ++i ) { + + if (i > 0) + z0 -= grid_overlap(hloc / 3); + + // Check minimum number of grid points per block + assert(nz[i] >= 7); + + _prec overlap = grid_overlap(hloc); + + H = i == 0 ? grid_height(nz[i], hloc, istopo) : grid_height(nz[i], hloc, 0); + + z0 += H; + hloc *= 3; + bi = i; + + //printf("z0 + H = %g i = %d \n", z0, i); + + // Check if the coordinate is in the overlap zone, if so, push it to the next grid + if (z0 > 0 && z0 < grid_overlap(hloc / 3) ) { + //printf("in overlap zone, z0 = %g i = %d overlap = %g \n", z0, i, overlap); + continue; + } + + if (z0 > 0) break; + + //printf("next, z0 = %g i = %d \n", z0, i); + + } + + // Check if the mapping succeeded or not + if (z0 < 0) { + printf("WARNING: Failed to map z=%g to a block.\n", z); + } + + *zloc = z0; + *block_index = bi; +} diff --git a/src/grid/shift.c b/src/grid/shift.c index 88c06bd..9f3cd80 100644 --- a/src/grid/shift.c +++ b/src/grid/shift.c @@ -3,14 +3,14 @@ void shift_node(int *shift) { - shift[0] = 1; + shift[0] = 0; shift[1] = 0; shift[2] = 0; } void shift_u1(int *shift) { - shift[0] = 1; + shift[0] = 0; shift[1] = 1; shift[2] = 1; } @@ -18,56 +18,56 @@ void shift_node(int *shift) void shift_u2(int *shift) { - shift[0] = 0; + shift[0] = 1; shift[1] = 0; shift[2] = 1; } void shift_u3(int *shift) { - shift[0] = 0; + shift[0] = 1; shift[1] = 1; shift[2] = 0; } void shift_xx(int *shift) { - shift[0] = 0; + shift[0] = 1; shift[1] = 1; shift[2] = 1; } void shift_yy(int *shift) { - shift[0] = 0; + shift[0] = 1; shift[1] = 1; shift[2] = 1; } void shift_zz(int *shift) { - shift[0] = 0; + shift[0] = 1; shift[1] = 1; shift[2] = 1; } void shift_xy(int *shift) { - shift[0] = 1; + shift[0] = 0; shift[1] = 0; shift[2] = 1; } void shift_xz(int *shift) { - shift[0] = 1; + shift[0] = 0; shift[1] = 1; shift[2] = 0; } void shift_yz(int *shift) { - shift[0] = 0; + shift[0] = 1; shift[1] = 0; shift[2] = 0; } @@ -75,25 +75,25 @@ void shift_node(int *shift) int3_t grid_node(void) { - int3_t out = {.x = 1, .y = 0, .z = 0}; + int3_t out = {.x = 0, .y = 0, .z = 0}; return out; } int3_t grid_u1(void) { - int3_t out = {.x = 1, .y = 1, .z = 1}; + int3_t out = {.x = 0, .y = 1, .z = 1}; return out; } int3_t grid_u2(void) { - int3_t out = {.x = 0, .y = 0, .z = 1}; + int3_t out = {.x = 1, .y = 0, .z = 1}; return out; } int3_t grid_u3(void) { - int3_t out = {.x = 0, .y = 1, .z = 0}; + int3_t out = {.x = 1, .y = 1, .z = 0}; return out; } @@ -115,37 +115,37 @@ void shift_node(int *shift) int3_t grid_xx(void) { - int3_t out = {.x = 0, .y = 1, .z = 1}; + int3_t out = {.x = 1, .y = 1, .z = 1}; return out; } int3_t grid_yy(void) { - int3_t out = {.x = 0, .y = 1, .z = 1}; + int3_t out = {.x = 1, .y = 1, .z = 1}; return out; } int3_t grid_zz(void) { - int3_t out = {.x = 0, .y = 1, .z = 1}; + int3_t out = {.x = 1, .y = 1, .z = 1}; return out; } int3_t grid_xy(void) { - int3_t out = {.x = 1, .y = 0, .z = 1}; + int3_t out = {.x = 0, .y = 0, .z = 1}; return out; } int3_t grid_xz(void) { - int3_t out = {.x = 1, .y = 1, .z = 0}; + int3_t out = {.x = 0, .y = 1, .z = 0}; return out; } int3_t grid_yz(void) { - int3_t out = {.x = 0, .y = 0, .z = 0}; + int3_t out = {.x = 1, .y = 0, .z = 0}; return out; } diff --git a/src/interpolation/interpolation.cu b/src/interpolation/interpolation.cu index 5d893f1..e6a63c6 100644 --- a/src/interpolation/interpolation.cu +++ b/src/interpolation/interpolation.cu @@ -4,7 +4,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index 916dde3..e052c10 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -68,8 +68,8 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, prec *x = malloc(sizeof(x) * grid_x.size); prec *y = malloc(sizeof(y) * grid_y.size); - grid_fill1(x, grid_x); - grid_fill1(y, grid_y); + grid_fill1(x, grid_x, 1); + grid_fill1(y, grid_y, 0); size_t j = *nidx; for (size_t i = 0; i < n; ++i) diff --git a/src/topography/CMakeLists.txt b/src/topography/CMakeLists.txt index 78a9150..a0eb827 100644 --- a/src/topography/CMakeLists.txt +++ b/src/topography/CMakeLists.txt @@ -5,6 +5,7 @@ add_subdirectory(readers) add_subdirectory(geometry) add_subdirectory(sources) add_subdirectory(receivers) +add_subdirectory(functions) set(HEADERS ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h @@ -13,6 +14,7 @@ set(HEADERS ${AWP_MINI_SOURCE_DIR}/include/grid/shift.h ${AWP_MINI_SOURCE_DIR}/include/topography/geometry.h ${AWP_MINI_SOURCE_DIR}/include/topography/geometry/geometry.h + ${AWP_MINI_SOURCE_DIR}/include/topography/mms.cuh ${AWP_MINI_SOURCE_DIR}/include/topography/readers/serial_reader.h ${AWP_MINI_SOURCE_DIR}/include/test/test.h ${AWP_MINI_SOURCE_DIR}/include/vtk/vtk.h @@ -20,18 +22,6 @@ set(HEADERS ${AWP_MINI_SOURCE_DIR}/include/topography/host.h ) -set(UNOPT_HEADERS - ${HEADERS} - ${AWP_MINI_SOURCE_DIR}/include/topography/topography.cuh - ${AWP_MINI_SOURCE_DIR}/include/topography/kernels/unoptimized.cuh - ) - -set(OPT_HEADERS - ${HEADERS} - ${AWP_MINI_SOURCE_DIR}/include/topography/kernels/optimized_velocity.cuh - ${AWP_MINI_SOURCE_DIR}/include/topography/kernels/optimized_stress.cuh - ) - set(LIBRARIES ${MPI_C_LIBRARIES} grid @@ -43,57 +33,28 @@ set(LIBRARIES topography_receivers readers error + nvToolsExt + nvToolsExt + functions ) -set(UNOPT_LIBRARIES ${LIBRARIES} unoptimized_kernels) -set(OPT_LIBRARIES ${LIBRARIES} optimized_kernels nvToolsExt) -set(OPT_ATTENUATION_LIBRARIES ${LIBRARIES} optimized_attenuation_kernels nvToolsExt) - -# Unoptimized version add_library(topography - topography.c topography.cu geometry.c host.c grids.c - ${UNOPT_HEADERS} - ) - -target_include_directories(topography - PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ - ) - -target_link_libraries(topography - ${UNOPT_LIBRARIES} + topography.c velocity.cu stress.cu + geometry.c host.c grids.c mms.cu ) -# Optimized version -add_library(opt_topography - topography.c opt_topography.cu velocity.cu stress.cu geometry.c host.c - grids.c - ${OPT_HEADERS} +add_library(topography_no_bc + topography.c velocity.cu stress.cu + geometry.c host.c grids.c mms.cu ) -target_include_directories(opt_topography - PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ - ) - -target_link_libraries(opt_topography - ${OPT_LIBRARIES} - ) +target_link_libraries(topography ${LIBRARIES}) +target_compile_definitions(topography_no_bc PUBLIC -DAPPLY_BC=0) +target_link_libraries(topography_no_bc ${LIBRARIES}) -# Work in progress that takes attenuation into account -add_library(opt_topography_attenuation - topography.c opt_topography.cu velocity.cu stress_attenuation.cu - geometry.c host.c grids.c - ${OPT_HEADERS} - ) - -target_include_directories(opt_topography_attenuation +target_include_directories(topography PUBLIC ${AWP_MINI_SOURCE_DIR}/include/ ) - -target_link_libraries(opt_topography_attenuation - ${OPT_ATTENUATION_LIBRARIES} - ) diff --git a/src/functions/CMakeLists.txt b/src/topography/functions/CMakeLists.txt similarity index 100% rename from src/functions/CMakeLists.txt rename to src/topography/functions/CMakeLists.txt diff --git a/src/functions/functions.c b/src/topography/functions/functions.c similarity index 98% rename from src/functions/functions.c rename to src/topography/functions/functions.c index 34b2db0..7b961c6 100644 --- a/src/functions/functions.c +++ b/src/topography/functions/functions.c @@ -201,11 +201,12 @@ void fcn_poly(_prec *out, const int ny = (int)args[10]; const int rx = (int)args[11]; const int ry = (int)args[12]; + const _prec xshift = s0 == 1 ? 1.0 : 0.0; for (int i = i0; i < in; ++i) { for (int j = j0; j < jn; ++j) { for (int k = k0; k < kn; ++k) { int pos = k + j*line + i*slice; - out[pos] = a0*pow(i + rx*nx - 0.5*s0, p0) + out[pos] = a0*pow(i + rx*nx - 0.5*s0 + xshift, p0) + a1*pow(j + ry*ny - 0.5*s1, p1) + a2*pow(k - 0.5*s2, p2); } diff --git a/src/functions/norm.c b/src/topography/functions/norm.c similarity index 100% rename from src/functions/norm.c rename to src/topography/functions/norm.c diff --git a/src/functions/random.c b/src/topography/functions/random.c similarity index 86% rename from src/functions/random.c rename to src/topography/functions/random.c index 37370be..804cc56 100644 --- a/src/functions/random.c +++ b/src/topography/functions/random.c @@ -1,6 +1,6 @@ #include -#include +#include #include _prec randomf(void){ diff --git a/src/topography/geometry.c b/src/topography/geometry.c index 957626a..01b030a 100644 --- a/src/topography/geometry.c +++ b/src/topography/geometry.c @@ -5,16 +5,40 @@ #include #include -#include #include #include #include #include +//#define TOPO_USE_VTK 1 +int copyfile(const char *output, const char *input); +int copyfile(const char *output, const char *input) +{ + FILE *fin = fopen(input, "r"); + FILE *fout = fopen(output, "w"); + int count = -1; + + if (fin == NULL) { + fprintf(stderr, "Cannot open file %s. \n", input); + return count; + } + + if (fout == NULL) { + fprintf(stderr, "Cannot write to file %s. \n", output); + return count; + } + + char ch; + while ((ch = fgetc(fin)) != EOF) + fputc(ch, fout); + fclose(fin); + fclose(fout); + return count; +} + void topo_init_grid(topo_t *T) { if (!T->use) return; - //FIXME: Handle proper grid initialization geom_cartesian_topography(&T->metrics_f); geom_no_grid_stretching(&T->metrics_g); @@ -26,9 +50,9 @@ void topo_init_grid(topo_t *T) T->y1 = malloc(sizeof(T->y1) * y1_grid.size); T->z1 = malloc(sizeof(T->z1) * z1_grid.size); - grid_fill1(T->x1, x1_grid); - grid_fill1(T->y1, y1_grid); - grid_fill1(T->z1, z1_grid); + grid_fill1(T->x1, x1_grid, 1); + grid_fill1(T->y1, y1_grid, 0); + grid_fill1(T->z1, z1_grid, 0); } void topo_init_gaussian_hill_and_canyon_xz(topo_t *T, const _prec3_t hill_width, @@ -83,7 +107,7 @@ void topo_write_geometry_vtk(topo_t *T, const int mode) char vtk_file[256]; mkdir("vtk", 0700); - sprintf(vtk_file, "vtk/geometry_%d%d.vtk", T->coord[0], T->coord[0]); + sprintf(vtk_file, "vtk/geometry_%d%d.vtk", T->coord[0], T->coord[1]); switch (mode) { case 0: vtk_write_grid(vtk_file, x, y, z, T->velocity_grid); @@ -109,10 +133,10 @@ void topo_write_vtk(topo_t *T, const int step, int mode) char vtk_vz[256]; char geom_file[256]; mkdir("vtk", 0700); - sprintf(vtk_vx, "vtk/vx_%d%d_%04d.vtk", T->coord[0], T->coord[0], step); - sprintf(vtk_vy, "vtk/vy_%d%d_%04d.vtk", T->coord[0], T->coord[0], step); - sprintf(vtk_vz, "vtk/vz_%d%d_%04d.vtk", T->coord[0], T->coord[0], step); - sprintf(geom_file, "vtk/geometry_%d%d.vtk", T->coord[0], T->coord[0]); + sprintf(vtk_vx, "vtk/vx_%d%d_%04d.vtk", T->coord[0], T->coord[1], step); + sprintf(vtk_vy, "vtk/vy_%d%d_%04d.vtk", T->coord[0], T->coord[1], step); + sprintf(vtk_vz, "vtk/vz_%d%d_%04d.vtk", T->coord[0], T->coord[1], step); + sprintf(geom_file, "vtk/geometry_%d%d.vtk", T->coord[0], T->coord[1]); copyfile(vtk_vx, geom_file); copyfile(vtk_vy, geom_file); copyfile(vtk_vz, geom_file); @@ -139,5 +163,7 @@ void topo_write_vtk(topo_t *T, const int step, int mode) free(vx); free(vy); free(vz); + + printf("Wrote: %s \n", vtk_vx); } diff --git a/src/topography/geometry/geometry.c b/src/topography/geometry/geometry.c index f51d08c..034b64e 100644 --- a/src/topography/geometry/geometry.c +++ b/src/topography/geometry/geometry.c @@ -37,7 +37,7 @@ void geom_no_grid_stretching(g_grid_t *metrics_g) grid1.shift = grid_node().z; grid1.boundary1 = 0; grid1.boundary2 = 1; - grid_fill1(&metrics_g->g[grid1.alignment], grid1); + grid_fill1(&metrics_g->g[grid1.alignment], grid1, 0); } diff --git a/src/topography/grids.c b/src/topography/grids.c index 97a3821..52a8231 100644 --- a/src/topography/grids.c +++ b/src/topography/grids.c @@ -1,7 +1,7 @@ #include #include -#include +#include #include #include #include @@ -54,9 +54,9 @@ void grid_data_init(grid_data_t *grid_data, const grid3_t grid) grid_data->x = malloc(sizeof grid_data->x * xgrid.size); grid_data->y = malloc(sizeof grid_data->y * ygrid.size); grid_data->z = malloc(sizeof grid_data->z * zgrid.size); - grid_fill1(grid_data->x, xgrid); - grid_fill1(grid_data->y, ygrid); - grid_fill1(grid_data->z, zgrid); + grid_fill1(grid_data->x, xgrid, 1); + grid_fill1(grid_data->y, ygrid, 0); + grid_fill1(grid_data->z, zgrid, 0); } void grid_data_free(grid_data_t *grid_data) @@ -116,3 +116,35 @@ grid3_t grids_select(const enum grid_types grid_type, const grids_t *grids) } +const char *grid_typename(const enum grid_types gt) { + switch(gt) { + case X: + return "X"; + case Y: + return "Y"; + case Z: + return "Z"; + case SX: + return "SX"; + case SY: + return "SY"; + case SZ: + return "SZ"; + case XX: + return "XX"; + case XY: + return "XY"; + case YY: + return "YY"; + case ZZ: + return "ZZ"; + case XZ: + return "XZ"; + case YZ: + return "YZ"; + case NODE: + return "NODE"; + } + return ""; +} + diff --git a/src/topography/host.c b/src/topography/host.c index c7839e1..6fea3ac 100644 --- a/src/topography/host.c +++ b/src/topography/host.c @@ -1,7 +1,7 @@ #include #include -#include +#include #include void topo_h_malloc(topo_t *host) diff --git a/src/topography/kernels/CMakeLists.txt b/src/topography/kernels/CMakeLists.txt index e2bb9f6..e69de29 100644 --- a/src/topography/kernels/CMakeLists.txt +++ b/src/topography/kernels/CMakeLists.txt @@ -1,43 +0,0 @@ -set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ) - -set(UNOPT_HEADERS - ${AWP_MINI_SOURCE_DIR}/include/topography/kernels/unoptimized.cuh - ) - -set(OPT_HEADERS - ${AWP_MINI_SOURCE_DIR}/include/topography/opt_topography.cuh - ${AWP_MINI_SOURCE_DIR}/include/topography/kernels/optimized_launch_config.cuh - ${AWP_MINI_SOURCE_DIR}/include/topography/kernels/optimized_velocity.cuh - ${AWP_MINI_SOURCE_DIR}/include/topography/kernels/optimized_stress.cuh - ) - -add_library(unoptimized_kernels - unoptimized.cu - ${HEADERS} ${UNOPT_HEADERS}) - -target_include_directories(unoptimized_kernels - PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ - ) - -add_library(optimized_kernels - optimized_velocity.cu - optimized_stress.cu - ${HEADERS} ${OPT_HEADERS}) - -target_include_directories(optimized_kernels - PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ - ) - -add_library(optimized_attenuation_kernels - optimized_velocity.cu - stress_attenuation.cu - ${HEADERS} ${OPT_HEADERS}) - -target_include_directories(optimized_attenuation_kernels - PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ - ) diff --git a/src/topography/kernels/optimized.cu b/src/topography/kernels/optimized.cu deleted file mode 100644 index 7038ed4..0000000 --- a/src/topography/kernels/optimized.cu +++ /dev/null @@ -1,116 +0,0 @@ -#include -#include - -__global__ void -dtopo_str_110(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej) { - const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; - if (j >= ngsl + ny) - return; - if (j >= ej) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= 6) - return; - for (int i = bi; i < ei; ++i) { - text - } -} - -__global__ void -dtopo_str_111(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej) { - const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; - if (j >= ngsl + ny) - return; - if (j >= ej) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= nz - 12) - return; - for (int i = bi; i < ei; ++i) { - text - } -} - -__global__ void -dtopo_str_112(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej) { - const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; - if (j >= ngsl + ny) - return; - if (j >= ej) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= 6) - return; - for (int i = bi; i < ei; ++i) { - text - } -} - -__global__ void dtopo_init_material_111(float *__restrict__ lami, - float *__restrict__ mui, - float *__restrict__ rho, const int nx, - const int ny, const int nz) { - const int i = threadIdx.z + blockIdx.z * blockDim.z; - if (i >= nx) - return; - const int j = threadIdx.y + blockIdx.y * blockDim.y; - if (j >= ny) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= nz) - return; -#define _lami(i, j, k) lami[(i)*ny * nz + (j)*nz + (k)] -#define _mui(i, j, k) mui[(i)*ny * nz + (j)*nz + (k)] -#define _rho(i, j, k) rho[(i)*ny * nz + (j)*nz + (k)] - _rho(i, j, k) = 1.0; - _lami(i, j, k) = 1.0; - _mui(i, j, k) = 1.0; -#undef _lami -#undef _mui -#undef _rho -} diff --git a/src/topography/kernels/optimized_stress.cu b/src/topography/kernels/optimized_stress.cu deleted file mode 100644 index 5ad1030..0000000 --- a/src/topography/kernels/optimized_stress.cu +++ /dev/null @@ -1,2433 +0,0 @@ -#include -#include -#include - -__global__ void dtopo_str_110( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej) { - const float phz4l[6][7] = { - {0.8338228784688313, 0.1775123316429260, 0.1435067013076542, - -0.1548419114194114, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {0.1813404047323969, 1.1246711188154426, -0.2933634518280757, - -0.0126480717197637, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {-0.1331142706282399, 0.7930714675884345, 0.3131998767078508, - 0.0268429263319546, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {0.0969078556633046, -0.1539344946680898, 0.4486491202844389, - 0.6768738207821733, -0.0684963020618270, 0.0000000000000000, - 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, -0.0625000000000000, - 0.5625000000000000, 0.5625000000000000, -0.0625000000000000, - 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - -0.0625000000000000, 0.5625000000000000, 0.5625000000000000, - -0.0625000000000000}}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dhz4l[6][7] = { - {-1.4511412472637157, 1.8534237417911470, -0.3534237417911469, - -0.0488587527362844, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {-0.8577143189081458, 0.5731429567244373, 0.4268570432755628, - -0.1422856810918542, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {-0.1674548505882877, -0.4976354482351368, 0.4976354482351368, - 0.1674548505882877, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {0.1027061113405124, -0.2624541326469860, -0.8288742701021167, - 1.0342864927831414, -0.0456642013745513, 0.0000000000000000, - 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0416666666666667, - -1.1250000000000000, 1.1250000000000000, -0.0416666666666667, - 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0416666666666667, -1.1250000000000000, 1.1250000000000000, - -0.0416666666666667}}; - const float phdz4l[6][9] = { - {-1.5373923010673116, 1.0330083346742178, 0.6211677623382129, - 0.0454110758451345, -0.1680934225988761, 0.0058985508086226, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {-0.8713921425924011, 0.1273679143938725, 0.9297550647681330, - -0.1912595577524762, 0.0050469052908678, 0.0004818158920039, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {-0.0563333965151294, -0.3996393739211770, -0.0536007135209481, - 0.5022638816465500, 0.0083321572725344, -0.0010225549618299, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {-0.0132930497153990, 0.0706942590708847, -0.5596445380498725, - -0.1434031863528334, 0.7456356868769503, -0.1028431844156395, - 0.0028540125859095, 0.0000000000000000, 0.0000000000000000}, - {-0.0025849423769932, 0.0492307522105194, -0.0524552477068130, - -0.5317248489238559, -0.0530169938441241, 0.6816971139746001, - -0.0937500000000000, 0.0026041666666667, 0.0000000000000000}, - {-0.0009619461344193, -0.0035553215968974, 0.0124936029037323, - 0.0773639466787397, -0.6736586580761996, -0.0002232904416222, - 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dz4l[6][8] = { - {-1.7779989465546748, 1.3337480247900155, 0.7775013168066564, - -0.3332503950419969, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {-0.4410217341392059, -0.1730842484889890, 0.4487228323259926, - 0.1653831503022022, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.1798793213882701, -0.2757257254150788, -0.9597948548284453, - 1.1171892610431817, -0.0615480021879277, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.0153911381507088, 0.0568851455503591, -0.1998976464597171, - -0.8628231468598346, 1.0285385292191949, -0.0380940196007109, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0416666666666667, -1.1250000000000000, 1.1250000000000000, - -0.0416666666666667, 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, 0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}}; - const float pdhz4l[6][9] = { - {-1.5886075042755416, 2.2801810182668110, -0.8088980291471827, - 0.1316830205960989, -0.0143585054401857, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {-0.4823226655921296, -0.0574614517751294, 0.5663203488781653, - -0.0309656800624243, 0.0044294485515179, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.0174954311279016, -0.4325508330649350, -0.3111668377093504, - 0.8538512002386446, -0.1314757107290064, 0.0038467501367455, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.1277481742492071, -0.2574468839590017, -0.4155794781917712, - 0.0115571196122084, 0.6170517361659126, -0.0857115441015996, - 0.0023808762250444, 0.0000000000000000, 0.0000000000000000}, - {-0.0064191319587820, 0.0164033832904366, 0.0752421418813823, - -0.6740179057989464, 0.0002498459192428, 0.6796875000000000, - -0.0937500000000000, 0.0026041666666667, 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, -0.0026041666666667, - 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, - 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}}; - const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; - if (j >= ngsl + ny) - return; - if (j >= ej) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= 6) - return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_1(i, j) \ - f_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_2(i, j) \ - f_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_c(i, j) \ - f_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] -#define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _lami(i, j, k) \ - lami[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _mui(i, j, k) \ - mui[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s11(i, j, k) \ - s11[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s12(i, j, k) \ - s12[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s22(i, j, k) \ - s22[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s33(i, j, k) \ - s33[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u3(i, j, k) \ - u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] - for (int i = bi; i < ei; ++i) { - float Jii = _f_c(i, j) * _g3_c(k); - Jii = 1.0 * 1.0 / Jii; - float J12i = _f(i, j) * _g3_c(k); - J12i = 1.0 * 1.0 / J12i; - float J13i = _f_1(i, j) * _g3(k); - J13i = 1.0 * 1.0 / J13i; - float J23i = _f_2(i, j) * _g3(k); - J23i = 1.0 * 1.0 / J23i; - float lam = - nu * 1.0 / - (phz4l[k][0] * - (phy4[2] * - (px4[1] * _lami(i, j, 0) + px4[0] * _lami(i - 1, j, 0) + - px4[2] * _lami(i + 1, j, 0) + px4[3] * _lami(i + 2, j, 0)) + - phy4[0] * (px4[1] * _lami(i, j - 2, 0) + - px4[0] * _lami(i - 1, j - 2, 0) + - px4[2] * _lami(i + 1, j - 2, 0) + - px4[3] * _lami(i + 2, j - 2, 0)) + - phy4[1] * (px4[1] * _lami(i, j - 1, 0) + - px4[0] * _lami(i - 1, j - 1, 0) + - px4[2] * _lami(i + 1, j - 1, 0) + - px4[3] * _lami(i + 2, j - 1, 0)) + - phy4[3] * (px4[1] * _lami(i, j + 1, 0) + - px4[0] * _lami(i - 1, j + 1, 0) + - px4[2] * _lami(i + 1, j + 1, 0) + - px4[3] * _lami(i + 2, j + 1, 0))) + - phz4l[k][1] * - (phy4[2] * - (px4[1] * _lami(i, j, 1) + px4[0] * _lami(i - 1, j, 1) + - px4[2] * _lami(i + 1, j, 1) + px4[3] * _lami(i + 2, j, 1)) + - phy4[0] * (px4[1] * _lami(i, j - 2, 1) + - px4[0] * _lami(i - 1, j - 2, 1) + - px4[2] * _lami(i + 1, j - 2, 1) + - px4[3] * _lami(i + 2, j - 2, 1)) + - phy4[1] * (px4[1] * _lami(i, j - 1, 1) + - px4[0] * _lami(i - 1, j - 1, 1) + - px4[2] * _lami(i + 1, j - 1, 1) + - px4[3] * _lami(i + 2, j - 1, 1)) + - phy4[3] * (px4[1] * _lami(i, j + 1, 1) + - px4[0] * _lami(i - 1, j + 1, 1) + - px4[2] * _lami(i + 1, j + 1, 1) + - px4[3] * _lami(i + 2, j + 1, 1))) + - phz4l[k][2] * - (phy4[2] * - (px4[1] * _lami(i, j, 2) + px4[0] * _lami(i - 1, j, 2) + - px4[2] * _lami(i + 1, j, 2) + px4[3] * _lami(i + 2, j, 2)) + - phy4[0] * (px4[1] * _lami(i, j - 2, 2) + - px4[0] * _lami(i - 1, j - 2, 2) + - px4[2] * _lami(i + 1, j - 2, 2) + - px4[3] * _lami(i + 2, j - 2, 2)) + - phy4[1] * (px4[1] * _lami(i, j - 1, 2) + - px4[0] * _lami(i - 1, j - 1, 2) + - px4[2] * _lami(i + 1, j - 1, 2) + - px4[3] * _lami(i + 2, j - 1, 2)) + - phy4[3] * (px4[1] * _lami(i, j + 1, 2) + - px4[0] * _lami(i - 1, j + 1, 2) + - px4[2] * _lami(i + 1, j + 1, 2) + - px4[3] * _lami(i + 2, j + 1, 2))) + - phz4l[k][3] * - (phy4[2] * - (px4[1] * _lami(i, j, 3) + px4[0] * _lami(i - 1, j, 3) + - px4[2] * _lami(i + 1, j, 3) + px4[3] * _lami(i + 2, j, 3)) + - phy4[0] * (px4[1] * _lami(i, j - 2, 3) + - px4[0] * _lami(i - 1, j - 2, 3) + - px4[2] * _lami(i + 1, j - 2, 3) + - px4[3] * _lami(i + 2, j - 2, 3)) + - phy4[1] * (px4[1] * _lami(i, j - 1, 3) + - px4[0] * _lami(i - 1, j - 1, 3) + - px4[2] * _lami(i + 1, j - 1, 3) + - px4[3] * _lami(i + 2, j - 1, 3)) + - phy4[3] * (px4[1] * _lami(i, j + 1, 3) + - px4[0] * _lami(i - 1, j + 1, 3) + - px4[2] * _lami(i + 1, j + 1, 3) + - px4[3] * _lami(i + 2, j + 1, 3))) + - phz4l[k][4] * - (phy4[2] * - (px4[1] * _lami(i, j, 4) + px4[0] * _lami(i - 1, j, 4) + - px4[2] * _lami(i + 1, j, 4) + px4[3] * _lami(i + 2, j, 4)) + - phy4[0] * (px4[1] * _lami(i, j - 2, 4) + - px4[0] * _lami(i - 1, j - 2, 4) + - px4[2] * _lami(i + 1, j - 2, 4) + - px4[3] * _lami(i + 2, j - 2, 4)) + - phy4[1] * (px4[1] * _lami(i, j - 1, 4) + - px4[0] * _lami(i - 1, j - 1, 4) + - px4[2] * _lami(i + 1, j - 1, 4) + - px4[3] * _lami(i + 2, j - 1, 4)) + - phy4[3] * (px4[1] * _lami(i, j + 1, 4) + - px4[0] * _lami(i - 1, j + 1, 4) + - px4[2] * _lami(i + 1, j + 1, 4) + - px4[3] * _lami(i + 2, j + 1, 4))) + - phz4l[k][5] * - (phy4[2] * - (px4[1] * _lami(i, j, 5) + px4[0] * _lami(i - 1, j, 5) + - px4[2] * _lami(i + 1, j, 5) + px4[3] * _lami(i + 2, j, 5)) + - phy4[0] * (px4[1] * _lami(i, j - 2, 5) + - px4[0] * _lami(i - 1, j - 2, 5) + - px4[2] * _lami(i + 1, j - 2, 5) + - px4[3] * _lami(i + 2, j - 2, 5)) + - phy4[1] * (px4[1] * _lami(i, j - 1, 5) + - px4[0] * _lami(i - 1, j - 1, 5) + - px4[2] * _lami(i + 1, j - 1, 5) + - px4[3] * _lami(i + 2, j - 1, 5)) + - phy4[3] * (px4[1] * _lami(i, j + 1, 5) + - px4[0] * _lami(i - 1, j + 1, 5) + - px4[2] * _lami(i + 1, j + 1, 5) + - px4[3] * _lami(i + 2, j + 1, 5))) + - phz4l[k][6] * - (phy4[2] * - (px4[1] * _lami(i, j, 6) + px4[0] * _lami(i - 1, j, 6) + - px4[2] * _lami(i + 1, j, 6) + px4[3] * _lami(i + 2, j, 6)) + - phy4[0] * (px4[1] * _lami(i, j - 2, 6) + - px4[0] * _lami(i - 1, j - 2, 6) + - px4[2] * _lami(i + 1, j - 2, 6) + - px4[3] * _lami(i + 2, j - 2, 6)) + - phy4[1] * (px4[1] * _lami(i, j - 1, 6) + - px4[0] * _lami(i - 1, j - 1, 6) + - px4[2] * _lami(i + 1, j - 1, 6) + - px4[3] * _lami(i + 2, j - 1, 6)) + - phy4[3] * (px4[1] * _lami(i, j + 1, 6) + - px4[0] * _lami(i - 1, j + 1, 6) + - px4[2] * _lami(i + 1, j + 1, 6) + - px4[3] * _lami(i + 2, j + 1, 6)))); - float twomu = - 2 * nu * 1.0 / - (phz4l[k][0] * - (phy4[2] * - (px4[1] * _mui(i, j, 0) + px4[0] * _mui(i - 1, j, 0) + - px4[2] * _mui(i + 1, j, 0) + px4[3] * _mui(i + 2, j, 0)) + - phy4[0] * - (px4[1] * _mui(i, j - 2, 0) + px4[0] * _mui(i - 1, j - 2, 0) + - px4[2] * _mui(i + 1, j - 2, 0) + - px4[3] * _mui(i + 2, j - 2, 0)) + - phy4[1] * - (px4[1] * _mui(i, j - 1, 0) + px4[0] * _mui(i - 1, j - 1, 0) + - px4[2] * _mui(i + 1, j - 1, 0) + - px4[3] * _mui(i + 2, j - 1, 0)) + - phy4[3] * - (px4[1] * _mui(i, j + 1, 0) + px4[0] * _mui(i - 1, j + 1, 0) + - px4[2] * _mui(i + 1, j + 1, 0) + - px4[3] * _mui(i + 2, j + 1, 0))) + - phz4l[k][1] * - (phy4[2] * - (px4[1] * _mui(i, j, 1) + px4[0] * _mui(i - 1, j, 1) + - px4[2] * _mui(i + 1, j, 1) + px4[3] * _mui(i + 2, j, 1)) + - phy4[0] * - (px4[1] * _mui(i, j - 2, 1) + px4[0] * _mui(i - 1, j - 2, 1) + - px4[2] * _mui(i + 1, j - 2, 1) + - px4[3] * _mui(i + 2, j - 2, 1)) + - phy4[1] * - (px4[1] * _mui(i, j - 1, 1) + px4[0] * _mui(i - 1, j - 1, 1) + - px4[2] * _mui(i + 1, j - 1, 1) + - px4[3] * _mui(i + 2, j - 1, 1)) + - phy4[3] * - (px4[1] * _mui(i, j + 1, 1) + px4[0] * _mui(i - 1, j + 1, 1) + - px4[2] * _mui(i + 1, j + 1, 1) + - px4[3] * _mui(i + 2, j + 1, 1))) + - phz4l[k][2] * - (phy4[2] * - (px4[1] * _mui(i, j, 2) + px4[0] * _mui(i - 1, j, 2) + - px4[2] * _mui(i + 1, j, 2) + px4[3] * _mui(i + 2, j, 2)) + - phy4[0] * - (px4[1] * _mui(i, j - 2, 2) + px4[0] * _mui(i - 1, j - 2, 2) + - px4[2] * _mui(i + 1, j - 2, 2) + - px4[3] * _mui(i + 2, j - 2, 2)) + - phy4[1] * - (px4[1] * _mui(i, j - 1, 2) + px4[0] * _mui(i - 1, j - 1, 2) + - px4[2] * _mui(i + 1, j - 1, 2) + - px4[3] * _mui(i + 2, j - 1, 2)) + - phy4[3] * - (px4[1] * _mui(i, j + 1, 2) + px4[0] * _mui(i - 1, j + 1, 2) + - px4[2] * _mui(i + 1, j + 1, 2) + - px4[3] * _mui(i + 2, j + 1, 2))) + - phz4l[k][3] * - (phy4[2] * - (px4[1] * _mui(i, j, 3) + px4[0] * _mui(i - 1, j, 3) + - px4[2] * _mui(i + 1, j, 3) + px4[3] * _mui(i + 2, j, 3)) + - phy4[0] * - (px4[1] * _mui(i, j - 2, 3) + px4[0] * _mui(i - 1, j - 2, 3) + - px4[2] * _mui(i + 1, j - 2, 3) + - px4[3] * _mui(i + 2, j - 2, 3)) + - phy4[1] * - (px4[1] * _mui(i, j - 1, 3) + px4[0] * _mui(i - 1, j - 1, 3) + - px4[2] * _mui(i + 1, j - 1, 3) + - px4[3] * _mui(i + 2, j - 1, 3)) + - phy4[3] * - (px4[1] * _mui(i, j + 1, 3) + px4[0] * _mui(i - 1, j + 1, 3) + - px4[2] * _mui(i + 1, j + 1, 3) + - px4[3] * _mui(i + 2, j + 1, 3))) + - phz4l[k][4] * - (phy4[2] * - (px4[1] * _mui(i, j, 4) + px4[0] * _mui(i - 1, j, 4) + - px4[2] * _mui(i + 1, j, 4) + px4[3] * _mui(i + 2, j, 4)) + - phy4[0] * - (px4[1] * _mui(i, j - 2, 4) + px4[0] * _mui(i - 1, j - 2, 4) + - px4[2] * _mui(i + 1, j - 2, 4) + - px4[3] * _mui(i + 2, j - 2, 4)) + - phy4[1] * - (px4[1] * _mui(i, j - 1, 4) + px4[0] * _mui(i - 1, j - 1, 4) + - px4[2] * _mui(i + 1, j - 1, 4) + - px4[3] * _mui(i + 2, j - 1, 4)) + - phy4[3] * - (px4[1] * _mui(i, j + 1, 4) + px4[0] * _mui(i - 1, j + 1, 4) + - px4[2] * _mui(i + 1, j + 1, 4) + - px4[3] * _mui(i + 2, j + 1, 4))) + - phz4l[k][5] * - (phy4[2] * - (px4[1] * _mui(i, j, 5) + px4[0] * _mui(i - 1, j, 5) + - px4[2] * _mui(i + 1, j, 5) + px4[3] * _mui(i + 2, j, 5)) + - phy4[0] * - (px4[1] * _mui(i, j - 2, 5) + px4[0] * _mui(i - 1, j - 2, 5) + - px4[2] * _mui(i + 1, j - 2, 5) + - px4[3] * _mui(i + 2, j - 2, 5)) + - phy4[1] * - (px4[1] * _mui(i, j - 1, 5) + px4[0] * _mui(i - 1, j - 1, 5) + - px4[2] * _mui(i + 1, j - 1, 5) + - px4[3] * _mui(i + 2, j - 1, 5)) + - phy4[3] * - (px4[1] * _mui(i, j + 1, 5) + px4[0] * _mui(i - 1, j + 1, 5) + - px4[2] * _mui(i + 1, j + 1, 5) + - px4[3] * _mui(i + 2, j + 1, 5))) + - phz4l[k][6] * - (phy4[2] * - (px4[1] * _mui(i, j, 6) + px4[0] * _mui(i - 1, j, 6) + - px4[2] * _mui(i + 1, j, 6) + px4[3] * _mui(i + 2, j, 6)) + - phy4[0] * - (px4[1] * _mui(i, j - 2, 6) + px4[0] * _mui(i - 1, j - 2, 6) + - px4[2] * _mui(i + 1, j - 2, 6) + - px4[3] * _mui(i + 2, j - 2, 6)) + - phy4[1] * - (px4[1] * _mui(i, j - 1, 6) + px4[0] * _mui(i - 1, j - 1, 6) + - px4[2] * _mui(i + 1, j - 1, 6) + - px4[3] * _mui(i + 2, j - 1, 6)) + - phy4[3] * - (px4[1] * _mui(i, j + 1, 6) + px4[0] * _mui(i - 1, j + 1, 6) + - px4[2] * _mui(i + 1, j + 1, 6) + - px4[3] * _mui(i + 2, j + 1, 6)))); - float mu12 = nu * 1.0 / - (phz4l[k][0] * _mui(i, j, 0) + phz4l[k][1] * _mui(i, j, 1) + - phz4l[k][2] * _mui(i, j, 2) + phz4l[k][3] * _mui(i, j, 3) + - phz4l[k][4] * _mui(i, j, 4) + phz4l[k][5] * _mui(i, j, 5) + - phz4l[k][6] * _mui(i, j, 6)); - float mu13 = nu * 1.0 / - (phy4[2] * _mui(i, j, k) + phy4[0] * _mui(i, j - 2, k) + - phy4[1] * _mui(i, j - 1, k) + phy4[3] * _mui(i, j + 1, k)); - float mu23 = nu * 1.0 / - (px4[1] * _mui(i, j, k) + px4[0] * _mui(i - 1, j, k) + - px4[2] * _mui(i + 1, j, k) + px4[3] * _mui(i + 2, j, k)); - float div = - dhy4[2] * _u2(i, j, k) + dhy4[0] * _u2(i, j - 2, k) + - dhy4[1] * _u2(i, j - 1, k) + dhy4[3] * _u2(i, j + 1, k) + - dx4[1] * _u1(i, j, k) + dx4[0] * _u1(i - 1, j, k) + - dx4[2] * _u1(i + 1, j, k) + dx4[3] * _u1(i + 2, j, k) + - Jii * (dhz4l[k][0] * _u3(i, j, 0) + dhz4l[k][1] * _u3(i, j, 1) + - dhz4l[k][2] * _u3(i, j, 2) + dhz4l[k][3] * _u3(i, j, 3) + - dhz4l[k][4] * _u3(i, j, 4) + dhz4l[k][5] * _u3(i, j, 5) + - dhz4l[k][6] * _u3(i, j, 6)) - - Jii * _g_c(k) * - (phy4[2] * _f2_2(i, j) * - (phdz4l[k][0] * _u2(i, j, 0) + phdz4l[k][1] * _u2(i, j, 1) + - phdz4l[k][2] * _u2(i, j, 2) + phdz4l[k][3] * _u2(i, j, 3) + - phdz4l[k][4] * _u2(i, j, 4) + phdz4l[k][5] * _u2(i, j, 5) + - phdz4l[k][6] * _u2(i, j, 6) + phdz4l[k][7] * _u2(i, j, 7) + - phdz4l[k][8] * _u2(i, j, 8)) + - phy4[0] * _f2_2(i, j - 2) * - (phdz4l[k][0] * _u2(i, j - 2, 0) + - phdz4l[k][1] * _u2(i, j - 2, 1) + - phdz4l[k][2] * _u2(i, j - 2, 2) + - phdz4l[k][3] * _u2(i, j - 2, 3) + - phdz4l[k][4] * _u2(i, j - 2, 4) + - phdz4l[k][5] * _u2(i, j - 2, 5) + - phdz4l[k][6] * _u2(i, j - 2, 6) + - phdz4l[k][7] * _u2(i, j - 2, 7) + - phdz4l[k][8] * _u2(i, j - 2, 8)) + - phy4[1] * _f2_2(i, j - 1) * - (phdz4l[k][0] * _u2(i, j - 1, 0) + - phdz4l[k][1] * _u2(i, j - 1, 1) + - phdz4l[k][2] * _u2(i, j - 1, 2) + - phdz4l[k][3] * _u2(i, j - 1, 3) + - phdz4l[k][4] * _u2(i, j - 1, 4) + - phdz4l[k][5] * _u2(i, j - 1, 5) + - phdz4l[k][6] * _u2(i, j - 1, 6) + - phdz4l[k][7] * _u2(i, j - 1, 7) + - phdz4l[k][8] * _u2(i, j - 1, 8)) + - phy4[3] * _f2_2(i, j + 1) * - (phdz4l[k][0] * _u2(i, j + 1, 0) + - phdz4l[k][1] * _u2(i, j + 1, 1) + - phdz4l[k][2] * _u2(i, j + 1, 2) + - phdz4l[k][3] * _u2(i, j + 1, 3) + - phdz4l[k][4] * _u2(i, j + 1, 4) + - phdz4l[k][5] * _u2(i, j + 1, 5) + - phdz4l[k][6] * _u2(i, j + 1, 6) + - phdz4l[k][7] * _u2(i, j + 1, 7) + - phdz4l[k][8] * _u2(i, j + 1, 8))) - - Jii * _g_c(k) * - (px4[1] * _f1_1(i, j) * - (phdz4l[k][0] * _u1(i, j, 0) + phdz4l[k][1] * _u1(i, j, 1) + - phdz4l[k][2] * _u1(i, j, 2) + phdz4l[k][3] * _u1(i, j, 3) + - phdz4l[k][4] * _u1(i, j, 4) + phdz4l[k][5] * _u1(i, j, 5) + - phdz4l[k][6] * _u1(i, j, 6) + phdz4l[k][7] * _u1(i, j, 7) + - phdz4l[k][8] * _u1(i, j, 8)) + - px4[0] * _f1_1(i - 1, j) * - (phdz4l[k][0] * _u1(i - 1, j, 0) + - phdz4l[k][1] * _u1(i - 1, j, 1) + - phdz4l[k][2] * _u1(i - 1, j, 2) + - phdz4l[k][3] * _u1(i - 1, j, 3) + - phdz4l[k][4] * _u1(i - 1, j, 4) + - phdz4l[k][5] * _u1(i - 1, j, 5) + - phdz4l[k][6] * _u1(i - 1, j, 6) + - phdz4l[k][7] * _u1(i - 1, j, 7) + - phdz4l[k][8] * _u1(i - 1, j, 8)) + - px4[2] * _f1_1(i + 1, j) * - (phdz4l[k][0] * _u1(i + 1, j, 0) + - phdz4l[k][1] * _u1(i + 1, j, 1) + - phdz4l[k][2] * _u1(i + 1, j, 2) + - phdz4l[k][3] * _u1(i + 1, j, 3) + - phdz4l[k][4] * _u1(i + 1, j, 4) + - phdz4l[k][5] * _u1(i + 1, j, 5) + - phdz4l[k][6] * _u1(i + 1, j, 6) + - phdz4l[k][7] * _u1(i + 1, j, 7) + - phdz4l[k][8] * _u1(i + 1, j, 8)) + - px4[3] * _f1_1(i + 2, j) * - (phdz4l[k][0] * _u1(i + 2, j, 0) + - phdz4l[k][1] * _u1(i + 2, j, 1) + - phdz4l[k][2] * _u1(i + 2, j, 2) + - phdz4l[k][3] * _u1(i + 2, j, 3) + - phdz4l[k][4] * _u1(i + 2, j, 4) + - phdz4l[k][5] * _u1(i + 2, j, 5) + - phdz4l[k][6] * _u1(i + 2, j, 6) + - phdz4l[k][7] * _u1(i + 2, j, 7) + - phdz4l[k][8] * _u1(i + 2, j, 8))); - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k); - _s11(i, j, k) = - (a * _s11(i, j, k) + lam * div + - twomu * (dx4[1] * _u1(i, j, k) + dx4[0] * _u1(i - 1, j, k) + - dx4[2] * _u1(i + 1, j, k) + dx4[3] * _u1(i + 2, j, k)) - - twomu * Jii * _g_c(k) * - (px4[1] * _f1_1(i, j) * - (phdz4l[k][0] * _u1(i, j, 0) + phdz4l[k][1] * _u1(i, j, 1) + - phdz4l[k][2] * _u1(i, j, 2) + phdz4l[k][3] * _u1(i, j, 3) + - phdz4l[k][4] * _u1(i, j, 4) + phdz4l[k][5] * _u1(i, j, 5) + - phdz4l[k][6] * _u1(i, j, 6) + phdz4l[k][7] * _u1(i, j, 7) + - phdz4l[k][8] * _u1(i, j, 8)) + - px4[0] * _f1_1(i - 1, j) * - (phdz4l[k][0] * _u1(i - 1, j, 0) + - phdz4l[k][1] * _u1(i - 1, j, 1) + - phdz4l[k][2] * _u1(i - 1, j, 2) + - phdz4l[k][3] * _u1(i - 1, j, 3) + - phdz4l[k][4] * _u1(i - 1, j, 4) + - phdz4l[k][5] * _u1(i - 1, j, 5) + - phdz4l[k][6] * _u1(i - 1, j, 6) + - phdz4l[k][7] * _u1(i - 1, j, 7) + - phdz4l[k][8] * _u1(i - 1, j, 8)) + - px4[2] * _f1_1(i + 1, j) * - (phdz4l[k][0] * _u1(i + 1, j, 0) + - phdz4l[k][1] * _u1(i + 1, j, 1) + - phdz4l[k][2] * _u1(i + 1, j, 2) + - phdz4l[k][3] * _u1(i + 1, j, 3) + - phdz4l[k][4] * _u1(i + 1, j, 4) + - phdz4l[k][5] * _u1(i + 1, j, 5) + - phdz4l[k][6] * _u1(i + 1, j, 6) + - phdz4l[k][7] * _u1(i + 1, j, 7) + - phdz4l[k][8] * _u1(i + 1, j, 8)) + - px4[3] * _f1_1(i + 2, j) * - (phdz4l[k][0] * _u1(i + 2, j, 0) + - phdz4l[k][1] * _u1(i + 2, j, 1) + - phdz4l[k][2] * _u1(i + 2, j, 2) + - phdz4l[k][3] * _u1(i + 2, j, 3) + - phdz4l[k][4] * _u1(i + 2, j, 4) + - phdz4l[k][5] * _u1(i + 2, j, 5) + - phdz4l[k][6] * _u1(i + 2, j, 6) + - phdz4l[k][7] * _u1(i + 2, j, 7) + - phdz4l[k][8] * _u1(i + 2, j, 8)))) * - f_dcrj; - _s22(i, j, k) = - (a * _s22(i, j, k) + lam * div + - twomu * (dhy4[2] * _u2(i, j, k) + dhy4[0] * _u2(i, j - 2, k) + - dhy4[1] * _u2(i, j - 1, k) + dhy4[3] * _u2(i, j + 1, k)) - - twomu * Jii * _g_c(k) * - (phy4[2] * _f2_2(i, j) * - (phdz4l[k][0] * _u2(i, j, 0) + phdz4l[k][1] * _u2(i, j, 1) + - phdz4l[k][2] * _u2(i, j, 2) + phdz4l[k][3] * _u2(i, j, 3) + - phdz4l[k][4] * _u2(i, j, 4) + phdz4l[k][5] * _u2(i, j, 5) + - phdz4l[k][6] * _u2(i, j, 6) + phdz4l[k][7] * _u2(i, j, 7) + - phdz4l[k][8] * _u2(i, j, 8)) + - phy4[0] * _f2_2(i, j - 2) * - (phdz4l[k][0] * _u2(i, j - 2, 0) + - phdz4l[k][1] * _u2(i, j - 2, 1) + - phdz4l[k][2] * _u2(i, j - 2, 2) + - phdz4l[k][3] * _u2(i, j - 2, 3) + - phdz4l[k][4] * _u2(i, j - 2, 4) + - phdz4l[k][5] * _u2(i, j - 2, 5) + - phdz4l[k][6] * _u2(i, j - 2, 6) + - phdz4l[k][7] * _u2(i, j - 2, 7) + - phdz4l[k][8] * _u2(i, j - 2, 8)) + - phy4[1] * _f2_2(i, j - 1) * - (phdz4l[k][0] * _u2(i, j - 1, 0) + - phdz4l[k][1] * _u2(i, j - 1, 1) + - phdz4l[k][2] * _u2(i, j - 1, 2) + - phdz4l[k][3] * _u2(i, j - 1, 3) + - phdz4l[k][4] * _u2(i, j - 1, 4) + - phdz4l[k][5] * _u2(i, j - 1, 5) + - phdz4l[k][6] * _u2(i, j - 1, 6) + - phdz4l[k][7] * _u2(i, j - 1, 7) + - phdz4l[k][8] * _u2(i, j - 1, 8)) + - phy4[3] * _f2_2(i, j + 1) * - (phdz4l[k][0] * _u2(i, j + 1, 0) + - phdz4l[k][1] * _u2(i, j + 1, 1) + - phdz4l[k][2] * _u2(i, j + 1, 2) + - phdz4l[k][3] * _u2(i, j + 1, 3) + - phdz4l[k][4] * _u2(i, j + 1, 4) + - phdz4l[k][5] * _u2(i, j + 1, 5) + - phdz4l[k][6] * _u2(i, j + 1, 6) + - phdz4l[k][7] * _u2(i, j + 1, 7) + - phdz4l[k][8] * _u2(i, j + 1, 8)))) * - f_dcrj; - _s33(i, j, k) = - (a * _s33(i, j, k) + lam * div + - twomu * Jii * - (dhz4l[k][0] * _u3(i, j, 0) + dhz4l[k][1] * _u3(i, j, 1) + - dhz4l[k][2] * _u3(i, j, 2) + dhz4l[k][3] * _u3(i, j, 3) + - dhz4l[k][4] * _u3(i, j, 4) + dhz4l[k][5] * _u3(i, j, 5) + - dhz4l[k][6] * _u3(i, j, 6))) * - f_dcrj; - _s12(i, j, k) = - (a * _s12(i, j, k) + - mu12 * (dhx4[2] * _u2(i, j, k) + dhx4[0] * _u2(i - 2, j, k) + - dhx4[1] * _u2(i - 1, j, k) + dhx4[3] * _u2(i + 1, j, k) + - dy4[1] * _u1(i, j, k) + dy4[0] * _u1(i, j - 1, k) + - dy4[2] * _u1(i, j + 1, k) + dy4[3] * _u1(i, j + 2, k) - - J12i * _g_c(k) * - (phx4[2] * _f1_2(i, j) * - (phdz4l[k][0] * _u2(i, j, 0) + - phdz4l[k][1] * _u2(i, j, 1) + - phdz4l[k][2] * _u2(i, j, 2) + - phdz4l[k][3] * _u2(i, j, 3) + - phdz4l[k][4] * _u2(i, j, 4) + - phdz4l[k][5] * _u2(i, j, 5) + - phdz4l[k][6] * _u2(i, j, 6) + - phdz4l[k][7] * _u2(i, j, 7) + - phdz4l[k][8] * _u2(i, j, 8)) + - phx4[0] * _f1_2(i - 2, j) * - (phdz4l[k][0] * _u2(i - 2, j, 0) + - phdz4l[k][1] * _u2(i - 2, j, 1) + - phdz4l[k][2] * _u2(i - 2, j, 2) + - phdz4l[k][3] * _u2(i - 2, j, 3) + - phdz4l[k][4] * _u2(i - 2, j, 4) + - phdz4l[k][5] * _u2(i - 2, j, 5) + - phdz4l[k][6] * _u2(i - 2, j, 6) + - phdz4l[k][7] * _u2(i - 2, j, 7) + - phdz4l[k][8] * _u2(i - 2, j, 8)) + - phx4[1] * _f1_2(i - 1, j) * - (phdz4l[k][0] * _u2(i - 1, j, 0) + - phdz4l[k][1] * _u2(i - 1, j, 1) + - phdz4l[k][2] * _u2(i - 1, j, 2) + - phdz4l[k][3] * _u2(i - 1, j, 3) + - phdz4l[k][4] * _u2(i - 1, j, 4) + - phdz4l[k][5] * _u2(i - 1, j, 5) + - phdz4l[k][6] * _u2(i - 1, j, 6) + - phdz4l[k][7] * _u2(i - 1, j, 7) + - phdz4l[k][8] * _u2(i - 1, j, 8)) + - phx4[3] * _f1_2(i + 1, j) * - (phdz4l[k][0] * _u2(i + 1, j, 0) + - phdz4l[k][1] * _u2(i + 1, j, 1) + - phdz4l[k][2] * _u2(i + 1, j, 2) + - phdz4l[k][3] * _u2(i + 1, j, 3) + - phdz4l[k][4] * _u2(i + 1, j, 4) + - phdz4l[k][5] * _u2(i + 1, j, 5) + - phdz4l[k][6] * _u2(i + 1, j, 6) + - phdz4l[k][7] * _u2(i + 1, j, 7) + - phdz4l[k][8] * _u2(i + 1, j, 8))) - - J12i * _g_c(k) * - (py4[1] * _f2_1(i, j) * - (phdz4l[k][0] * _u1(i, j, 0) + - phdz4l[k][1] * _u1(i, j, 1) + - phdz4l[k][2] * _u1(i, j, 2) + - phdz4l[k][3] * _u1(i, j, 3) + - phdz4l[k][4] * _u1(i, j, 4) + - phdz4l[k][5] * _u1(i, j, 5) + - phdz4l[k][6] * _u1(i, j, 6) + - phdz4l[k][7] * _u1(i, j, 7) + - phdz4l[k][8] * _u1(i, j, 8)) + - py4[0] * _f2_1(i, j - 1) * - (phdz4l[k][0] * _u1(i, j - 1, 0) + - phdz4l[k][1] * _u1(i, j - 1, 1) + - phdz4l[k][2] * _u1(i, j - 1, 2) + - phdz4l[k][3] * _u1(i, j - 1, 3) + - phdz4l[k][4] * _u1(i, j - 1, 4) + - phdz4l[k][5] * _u1(i, j - 1, 5) + - phdz4l[k][6] * _u1(i, j - 1, 6) + - phdz4l[k][7] * _u1(i, j - 1, 7) + - phdz4l[k][8] * _u1(i, j - 1, 8)) + - py4[2] * _f2_1(i, j + 1) * - (phdz4l[k][0] * _u1(i, j + 1, 0) + - phdz4l[k][1] * _u1(i, j + 1, 1) + - phdz4l[k][2] * _u1(i, j + 1, 2) + - phdz4l[k][3] * _u1(i, j + 1, 3) + - phdz4l[k][4] * _u1(i, j + 1, 4) + - phdz4l[k][5] * _u1(i, j + 1, 5) + - phdz4l[k][6] * _u1(i, j + 1, 6) + - phdz4l[k][7] * _u1(i, j + 1, 7) + - phdz4l[k][8] * _u1(i, j + 1, 8)) + - py4[3] * _f2_1(i, j + 2) * - (phdz4l[k][0] * _u1(i, j + 2, 0) + - phdz4l[k][1] * _u1(i, j + 2, 1) + - phdz4l[k][2] * _u1(i, j + 2, 2) + - phdz4l[k][3] * _u1(i, j + 2, 3) + - phdz4l[k][4] * _u1(i, j + 2, 4) + - phdz4l[k][5] * _u1(i, j + 2, 5) + - phdz4l[k][6] * _u1(i, j + 2, 6) + - phdz4l[k][7] * _u1(i, j + 2, 7) + - phdz4l[k][8] * _u1(i, j + 2, 8))))) * - f_dcrj; - _s13(i, j, k) = - (a * _s13(i, j, k) + - mu13 * - (dhx4[2] * _u3(i, j, k) + dhx4[0] * _u3(i - 2, j, k) + - dhx4[1] * _u3(i - 1, j, k) + dhx4[3] * _u3(i + 1, j, k) + - J13i * (dz4l[k][0] * _u1(i, j, 0) + dz4l[k][1] * _u1(i, j, 1) + - dz4l[k][2] * _u1(i, j, 2) + dz4l[k][3] * _u1(i, j, 3) + - dz4l[k][4] * _u1(i, j, 4) + dz4l[k][5] * _u1(i, j, 5) + - dz4l[k][6] * _u1(i, j, 6) + dz4l[k][7] * _u1(i, j, 7)) - - J13i * _g(k) * - (phx4[2] * _f1_c(i, j) * - (pdhz4l[k][0] * _u3(i, j, 0) + - pdhz4l[k][1] * _u3(i, j, 1) + - pdhz4l[k][2] * _u3(i, j, 2) + - pdhz4l[k][3] * _u3(i, j, 3) + - pdhz4l[k][4] * _u3(i, j, 4) + - pdhz4l[k][5] * _u3(i, j, 5) + - pdhz4l[k][6] * _u3(i, j, 6) + - pdhz4l[k][7] * _u3(i, j, 7) + - pdhz4l[k][8] * _u3(i, j, 8)) + - phx4[0] * _f1_c(i - 2, j) * - (pdhz4l[k][0] * _u3(i - 2, j, 0) + - pdhz4l[k][1] * _u3(i - 2, j, 1) + - pdhz4l[k][2] * _u3(i - 2, j, 2) + - pdhz4l[k][3] * _u3(i - 2, j, 3) + - pdhz4l[k][4] * _u3(i - 2, j, 4) + - pdhz4l[k][5] * _u3(i - 2, j, 5) + - pdhz4l[k][6] * _u3(i - 2, j, 6) + - pdhz4l[k][7] * _u3(i - 2, j, 7) + - pdhz4l[k][8] * _u3(i - 2, j, 8)) + - phx4[1] * _f1_c(i - 1, j) * - (pdhz4l[k][0] * _u3(i - 1, j, 0) + - pdhz4l[k][1] * _u3(i - 1, j, 1) + - pdhz4l[k][2] * _u3(i - 1, j, 2) + - pdhz4l[k][3] * _u3(i - 1, j, 3) + - pdhz4l[k][4] * _u3(i - 1, j, 4) + - pdhz4l[k][5] * _u3(i - 1, j, 5) + - pdhz4l[k][6] * _u3(i - 1, j, 6) + - pdhz4l[k][7] * _u3(i - 1, j, 7) + - pdhz4l[k][8] * _u3(i - 1, j, 8)) + - phx4[3] * _f1_c(i + 1, j) * - (pdhz4l[k][0] * _u3(i + 1, j, 0) + - pdhz4l[k][1] * _u3(i + 1, j, 1) + - pdhz4l[k][2] * _u3(i + 1, j, 2) + - pdhz4l[k][3] * _u3(i + 1, j, 3) + - pdhz4l[k][4] * _u3(i + 1, j, 4) + - pdhz4l[k][5] * _u3(i + 1, j, 5) + - pdhz4l[k][6] * _u3(i + 1, j, 6) + - pdhz4l[k][7] * _u3(i + 1, j, 7) + - pdhz4l[k][8] * _u3(i + 1, j, 8))))) * - f_dcrj; - _s23(i, j, k) = - (a * _s23(i, j, k) + - mu23 * - (dy4[1] * _u3(i, j, k) + dy4[0] * _u3(i, j - 1, k) + - dy4[2] * _u3(i, j + 1, k) + dy4[3] * _u3(i, j + 2, k) + - J23i * (dz4l[k][0] * _u2(i, j, 0) + dz4l[k][1] * _u2(i, j, 1) + - dz4l[k][2] * _u2(i, j, 2) + dz4l[k][3] * _u2(i, j, 3) + - dz4l[k][4] * _u2(i, j, 4) + dz4l[k][5] * _u2(i, j, 5) + - dz4l[k][6] * _u2(i, j, 6) + dz4l[k][7] * _u2(i, j, 7)) - - J23i * _g(k) * - (py4[1] * _f2_c(i, j) * - (pdhz4l[k][0] * _u3(i, j, 0) + - pdhz4l[k][1] * _u3(i, j, 1) + - pdhz4l[k][2] * _u3(i, j, 2) + - pdhz4l[k][3] * _u3(i, j, 3) + - pdhz4l[k][4] * _u3(i, j, 4) + - pdhz4l[k][5] * _u3(i, j, 5) + - pdhz4l[k][6] * _u3(i, j, 6) + - pdhz4l[k][7] * _u3(i, j, 7) + - pdhz4l[k][8] * _u3(i, j, 8)) + - py4[0] * _f2_c(i, j - 1) * - (pdhz4l[k][0] * _u3(i, j - 1, 0) + - pdhz4l[k][1] * _u3(i, j - 1, 1) + - pdhz4l[k][2] * _u3(i, j - 1, 2) + - pdhz4l[k][3] * _u3(i, j - 1, 3) + - pdhz4l[k][4] * _u3(i, j - 1, 4) + - pdhz4l[k][5] * _u3(i, j - 1, 5) + - pdhz4l[k][6] * _u3(i, j - 1, 6) + - pdhz4l[k][7] * _u3(i, j - 1, 7) + - pdhz4l[k][8] * _u3(i, j - 1, 8)) + - py4[2] * _f2_c(i, j + 1) * - (pdhz4l[k][0] * _u3(i, j + 1, 0) + - pdhz4l[k][1] * _u3(i, j + 1, 1) + - pdhz4l[k][2] * _u3(i, j + 1, 2) + - pdhz4l[k][3] * _u3(i, j + 1, 3) + - pdhz4l[k][4] * _u3(i, j + 1, 4) + - pdhz4l[k][5] * _u3(i, j + 1, 5) + - pdhz4l[k][6] * _u3(i, j + 1, 6) + - pdhz4l[k][7] * _u3(i, j + 1, 7) + - pdhz4l[k][8] * _u3(i, j + 1, 8)) + - py4[3] * _f2_c(i, j + 2) * - (pdhz4l[k][0] * _u3(i, j + 2, 0) + - pdhz4l[k][1] * _u3(i, j + 2, 1) + - pdhz4l[k][2] * _u3(i, j + 2, 2) + - pdhz4l[k][3] * _u3(i, j + 2, 3) + - pdhz4l[k][4] * _u3(i, j + 2, 4) + - pdhz4l[k][5] * _u3(i, j + 2, 5) + - pdhz4l[k][6] * _u3(i, j + 2, 6) + - pdhz4l[k][7] * _u3(i, j + 2, 7) + - pdhz4l[k][8] * _u3(i, j + 2, 8))))) * - f_dcrj; - } -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c -#undef _f_1 -#undef _f_2 -#undef _f_c -#undef _g -#undef _g3 -#undef _g3_c -#undef _g_c -#undef _lami -#undef _mui -#undef _s11 -#undef _s12 -#undef _s13 -#undef _s22 -#undef _s23 -#undef _s33 -#undef _u1 -#undef _u2 -#undef _u3 -} - -__global__ void dtopo_str_111( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej) { - const float phz4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, - -0.6796875000000000, -0.0000000000000000, - 0.6796875000000000, -0.0937500000000000, - 0.0026041666666667}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, - -0.6796875000000000, -0.0000000000000000, - 0.6796875000000000, -0.0937500000000000, - 0.0026041666666667}; - const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; - if (j >= ngsl + ny) - return; - if (j >= ej) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= nz - 12) - return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_1(i, j) \ - f_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_2(i, j) \ - f_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_c(i, j) \ - f_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] -#define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _lami(i, j, k) \ - lami[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _mui(i, j, k) \ - mui[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s11(i, j, k) \ - s11[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s12(i, j, k) \ - s12[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s22(i, j, k) \ - s22[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s33(i, j, k) \ - s33[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u3(i, j, k) \ - u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] - for (int i = bi; i < ei; ++i) { - float Jii = _f_c(i, j) * _g3_c(k + 6); - Jii = 1.0 * 1.0 / Jii; - float J12i = _f(i, j) * _g3_c(k + 6); - J12i = 1.0 * 1.0 / J12i; - float J13i = _f_1(i, j) * _g3(k + 6); - J13i = 1.0 * 1.0 / J13i; - float J23i = _f_2(i, j) * _g3(k + 6); - J23i = 1.0 * 1.0 / J23i; - float lam = nu * 1.0 / - (phz4[0] * (phy4[2] * (px4[1] * _lami(i, j, k + 4) + - px4[0] * _lami(i - 1, j, k + 4) + - px4[2] * _lami(i + 1, j, k + 4) + - px4[3] * _lami(i + 2, j, k + 4)) + - phy4[0] * (px4[1] * _lami(i, j - 2, k + 4) + - px4[0] * _lami(i - 1, j - 2, k + 4) + - px4[2] * _lami(i + 1, j - 2, k + 4) + - px4[3] * _lami(i + 2, j - 2, k + 4)) + - phy4[1] * (px4[1] * _lami(i, j - 1, k + 4) + - px4[0] * _lami(i - 1, j - 1, k + 4) + - px4[2] * _lami(i + 1, j - 1, k + 4) + - px4[3] * _lami(i + 2, j - 1, k + 4)) + - phy4[3] * (px4[1] * _lami(i, j + 1, k + 4) + - px4[0] * _lami(i - 1, j + 1, k + 4) + - px4[2] * _lami(i + 1, j + 1, k + 4) + - px4[3] * _lami(i + 2, j + 1, k + 4))) + - phz4[1] * (phy4[2] * (px4[1] * _lami(i, j, k + 5) + - px4[0] * _lami(i - 1, j, k + 5) + - px4[2] * _lami(i + 1, j, k + 5) + - px4[3] * _lami(i + 2, j, k + 5)) + - phy4[0] * (px4[1] * _lami(i, j - 2, k + 5) + - px4[0] * _lami(i - 1, j - 2, k + 5) + - px4[2] * _lami(i + 1, j - 2, k + 5) + - px4[3] * _lami(i + 2, j - 2, k + 5)) + - phy4[1] * (px4[1] * _lami(i, j - 1, k + 5) + - px4[0] * _lami(i - 1, j - 1, k + 5) + - px4[2] * _lami(i + 1, j - 1, k + 5) + - px4[3] * _lami(i + 2, j - 1, k + 5)) + - phy4[3] * (px4[1] * _lami(i, j + 1, k + 5) + - px4[0] * _lami(i - 1, j + 1, k + 5) + - px4[2] * _lami(i + 1, j + 1, k + 5) + - px4[3] * _lami(i + 2, j + 1, k + 5))) + - phz4[2] * (phy4[2] * (px4[1] * _lami(i, j, k + 6) + - px4[0] * _lami(i - 1, j, k + 6) + - px4[2] * _lami(i + 1, j, k + 6) + - px4[3] * _lami(i + 2, j, k + 6)) + - phy4[0] * (px4[1] * _lami(i, j - 2, k + 6) + - px4[0] * _lami(i - 1, j - 2, k + 6) + - px4[2] * _lami(i + 1, j - 2, k + 6) + - px4[3] * _lami(i + 2, j - 2, k + 6)) + - phy4[1] * (px4[1] * _lami(i, j - 1, k + 6) + - px4[0] * _lami(i - 1, j - 1, k + 6) + - px4[2] * _lami(i + 1, j - 1, k + 6) + - px4[3] * _lami(i + 2, j - 1, k + 6)) + - phy4[3] * (px4[1] * _lami(i, j + 1, k + 6) + - px4[0] * _lami(i - 1, j + 1, k + 6) + - px4[2] * _lami(i + 1, j + 1, k + 6) + - px4[3] * _lami(i + 2, j + 1, k + 6))) + - phz4[3] * (phy4[2] * (px4[1] * _lami(i, j, k + 7) + - px4[0] * _lami(i - 1, j, k + 7) + - px4[2] * _lami(i + 1, j, k + 7) + - px4[3] * _lami(i + 2, j, k + 7)) + - phy4[0] * (px4[1] * _lami(i, j - 2, k + 7) + - px4[0] * _lami(i - 1, j - 2, k + 7) + - px4[2] * _lami(i + 1, j - 2, k + 7) + - px4[3] * _lami(i + 2, j - 2, k + 7)) + - phy4[1] * (px4[1] * _lami(i, j - 1, k + 7) + - px4[0] * _lami(i - 1, j - 1, k + 7) + - px4[2] * _lami(i + 1, j - 1, k + 7) + - px4[3] * _lami(i + 2, j - 1, k + 7)) + - phy4[3] * (px4[1] * _lami(i, j + 1, k + 7) + - px4[0] * _lami(i - 1, j + 1, k + 7) + - px4[2] * _lami(i + 1, j + 1, k + 7) + - px4[3] * _lami(i + 2, j + 1, k + 7)))); - float twomu = 2 * nu * 1.0 / - (phz4[0] * (phy4[2] * (px4[1] * _mui(i, j, k + 4) + - px4[0] * _mui(i - 1, j, k + 4) + - px4[2] * _mui(i + 1, j, k + 4) + - px4[3] * _mui(i + 2, j, k + 4)) + - phy4[0] * (px4[1] * _mui(i, j - 2, k + 4) + - px4[0] * _mui(i - 1, j - 2, k + 4) + - px4[2] * _mui(i + 1, j - 2, k + 4) + - px4[3] * _mui(i + 2, j - 2, k + 4)) + - phy4[1] * (px4[1] * _mui(i, j - 1, k + 4) + - px4[0] * _mui(i - 1, j - 1, k + 4) + - px4[2] * _mui(i + 1, j - 1, k + 4) + - px4[3] * _mui(i + 2, j - 1, k + 4)) + - phy4[3] * (px4[1] * _mui(i, j + 1, k + 4) + - px4[0] * _mui(i - 1, j + 1, k + 4) + - px4[2] * _mui(i + 1, j + 1, k + 4) + - px4[3] * _mui(i + 2, j + 1, k + 4))) + - phz4[1] * (phy4[2] * (px4[1] * _mui(i, j, k + 5) + - px4[0] * _mui(i - 1, j, k + 5) + - px4[2] * _mui(i + 1, j, k + 5) + - px4[3] * _mui(i + 2, j, k + 5)) + - phy4[0] * (px4[1] * _mui(i, j - 2, k + 5) + - px4[0] * _mui(i - 1, j - 2, k + 5) + - px4[2] * _mui(i + 1, j - 2, k + 5) + - px4[3] * _mui(i + 2, j - 2, k + 5)) + - phy4[1] * (px4[1] * _mui(i, j - 1, k + 5) + - px4[0] * _mui(i - 1, j - 1, k + 5) + - px4[2] * _mui(i + 1, j - 1, k + 5) + - px4[3] * _mui(i + 2, j - 1, k + 5)) + - phy4[3] * (px4[1] * _mui(i, j + 1, k + 5) + - px4[0] * _mui(i - 1, j + 1, k + 5) + - px4[2] * _mui(i + 1, j + 1, k + 5) + - px4[3] * _mui(i + 2, j + 1, k + 5))) + - phz4[2] * (phy4[2] * (px4[1] * _mui(i, j, k + 6) + - px4[0] * _mui(i - 1, j, k + 6) + - px4[2] * _mui(i + 1, j, k + 6) + - px4[3] * _mui(i + 2, j, k + 6)) + - phy4[0] * (px4[1] * _mui(i, j - 2, k + 6) + - px4[0] * _mui(i - 1, j - 2, k + 6) + - px4[2] * _mui(i + 1, j - 2, k + 6) + - px4[3] * _mui(i + 2, j - 2, k + 6)) + - phy4[1] * (px4[1] * _mui(i, j - 1, k + 6) + - px4[0] * _mui(i - 1, j - 1, k + 6) + - px4[2] * _mui(i + 1, j - 1, k + 6) + - px4[3] * _mui(i + 2, j - 1, k + 6)) + - phy4[3] * (px4[1] * _mui(i, j + 1, k + 6) + - px4[0] * _mui(i - 1, j + 1, k + 6) + - px4[2] * _mui(i + 1, j + 1, k + 6) + - px4[3] * _mui(i + 2, j + 1, k + 6))) + - phz4[3] * (phy4[2] * (px4[1] * _mui(i, j, k + 7) + - px4[0] * _mui(i - 1, j, k + 7) + - px4[2] * _mui(i + 1, j, k + 7) + - px4[3] * _mui(i + 2, j, k + 7)) + - phy4[0] * (px4[1] * _mui(i, j - 2, k + 7) + - px4[0] * _mui(i - 1, j - 2, k + 7) + - px4[2] * _mui(i + 1, j - 2, k + 7) + - px4[3] * _mui(i + 2, j - 2, k + 7)) + - phy4[1] * (px4[1] * _mui(i, j - 1, k + 7) + - px4[0] * _mui(i - 1, j - 1, k + 7) + - px4[2] * _mui(i + 1, j - 1, k + 7) + - px4[3] * _mui(i + 2, j - 1, k + 7)) + - phy4[3] * (px4[1] * _mui(i, j + 1, k + 7) + - px4[0] * _mui(i - 1, j + 1, k + 7) + - px4[2] * _mui(i + 1, j + 1, k + 7) + - px4[3] * _mui(i + 2, j + 1, k + 7)))); - float mu12 = nu * 1.0 / - (phz4[0] * _mui(i, j, k + 4) + phz4[1] * _mui(i, j, k + 5) + - phz4[2] * _mui(i, j, k + 6) + phz4[3] * _mui(i, j, k + 7)); - float mu13 = - nu * 1.0 / - (phy4[2] * _mui(i, j, k + 6) + phy4[0] * _mui(i, j - 2, k + 6) + - phy4[1] * _mui(i, j - 1, k + 6) + phy4[3] * _mui(i, j + 1, k + 6)); - float mu23 = - nu * 1.0 / - (px4[1] * _mui(i, j, k + 6) + px4[0] * _mui(i - 1, j, k + 6) + - px4[2] * _mui(i + 1, j, k + 6) + px4[3] * _mui(i + 2, j, k + 6)); - float div = - dhy4[2] * _u2(i, j, k + 6) + dhy4[0] * _u2(i, j - 2, k + 6) + - dhy4[1] * _u2(i, j - 1, k + 6) + dhy4[3] * _u2(i, j + 1, k + 6) + - dx4[1] * _u1(i, j, k + 6) + dx4[0] * _u1(i - 1, j, k + 6) + - dx4[2] * _u1(i + 1, j, k + 6) + dx4[3] * _u1(i + 2, j, k + 6) + - Jii * (dhz4[0] * _u3(i, j, k + 4) + dhz4[1] * _u3(i, j, k + 5) + - dhz4[2] * _u3(i, j, k + 6) + dhz4[3] * _u3(i, j, k + 7)) - - Jii * _g_c(k + 6) * - (phy4[2] * _f2_2(i, j) * - (phdz4[0] * _u2(i, j, k + 3) + phdz4[1] * _u2(i, j, k + 4) + - phdz4[2] * _u2(i, j, k + 5) + phdz4[3] * _u2(i, j, k + 6) + - phdz4[4] * _u2(i, j, k + 7) + phdz4[5] * _u2(i, j, k + 8) + - phdz4[6] * _u2(i, j, k + 9)) + - phy4[0] * _f2_2(i, j - 2) * - (phdz4[0] * _u2(i, j - 2, k + 3) + - phdz4[1] * _u2(i, j - 2, k + 4) + - phdz4[2] * _u2(i, j - 2, k + 5) + - phdz4[3] * _u2(i, j - 2, k + 6) + - phdz4[4] * _u2(i, j - 2, k + 7) + - phdz4[5] * _u2(i, j - 2, k + 8) + - phdz4[6] * _u2(i, j - 2, k + 9)) + - phy4[1] * _f2_2(i, j - 1) * - (phdz4[0] * _u2(i, j - 1, k + 3) + - phdz4[1] * _u2(i, j - 1, k + 4) + - phdz4[2] * _u2(i, j - 1, k + 5) + - phdz4[3] * _u2(i, j - 1, k + 6) + - phdz4[4] * _u2(i, j - 1, k + 7) + - phdz4[5] * _u2(i, j - 1, k + 8) + - phdz4[6] * _u2(i, j - 1, k + 9)) + - phy4[3] * _f2_2(i, j + 1) * - (phdz4[0] * _u2(i, j + 1, k + 3) + - phdz4[1] * _u2(i, j + 1, k + 4) + - phdz4[2] * _u2(i, j + 1, k + 5) + - phdz4[3] * _u2(i, j + 1, k + 6) + - phdz4[4] * _u2(i, j + 1, k + 7) + - phdz4[5] * _u2(i, j + 1, k + 8) + - phdz4[6] * _u2(i, j + 1, k + 9))) - - Jii * _g_c(k + 6) * - (px4[1] * _f1_1(i, j) * - (phdz4[0] * _u1(i, j, k + 3) + phdz4[1] * _u1(i, j, k + 4) + - phdz4[2] * _u1(i, j, k + 5) + phdz4[3] * _u1(i, j, k + 6) + - phdz4[4] * _u1(i, j, k + 7) + phdz4[5] * _u1(i, j, k + 8) + - phdz4[6] * _u1(i, j, k + 9)) + - px4[0] * _f1_1(i - 1, j) * - (phdz4[0] * _u1(i - 1, j, k + 3) + - phdz4[1] * _u1(i - 1, j, k + 4) + - phdz4[2] * _u1(i - 1, j, k + 5) + - phdz4[3] * _u1(i - 1, j, k + 6) + - phdz4[4] * _u1(i - 1, j, k + 7) + - phdz4[5] * _u1(i - 1, j, k + 8) + - phdz4[6] * _u1(i - 1, j, k + 9)) + - px4[2] * _f1_1(i + 1, j) * - (phdz4[0] * _u1(i + 1, j, k + 3) + - phdz4[1] * _u1(i + 1, j, k + 4) + - phdz4[2] * _u1(i + 1, j, k + 5) + - phdz4[3] * _u1(i + 1, j, k + 6) + - phdz4[4] * _u1(i + 1, j, k + 7) + - phdz4[5] * _u1(i + 1, j, k + 8) + - phdz4[6] * _u1(i + 1, j, k + 9)) + - px4[3] * _f1_1(i + 2, j) * - (phdz4[0] * _u1(i + 2, j, k + 3) + - phdz4[1] * _u1(i + 2, j, k + 4) + - phdz4[2] * _u1(i + 2, j, k + 5) + - phdz4[3] * _u1(i + 2, j, k + 6) + - phdz4[4] * _u1(i + 2, j, k + 7) + - phdz4[5] * _u1(i + 2, j, k + 8) + - phdz4[6] * _u1(i + 2, j, k + 9))); - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k + 6); - _s11(i, j, k + 6) = - (a * _s11(i, j, k + 6) + lam * div + - twomu * - (dx4[1] * _u1(i, j, k + 6) + dx4[0] * _u1(i - 1, j, k + 6) + - dx4[2] * _u1(i + 1, j, k + 6) + dx4[3] * _u1(i + 2, j, k + 6)) - - twomu * Jii * _g_c(k + 6) * - (px4[1] * _f1_1(i, j) * - (phdz4[0] * _u1(i, j, k + 3) + phdz4[1] * _u1(i, j, k + 4) + - phdz4[2] * _u1(i, j, k + 5) + phdz4[3] * _u1(i, j, k + 6) + - phdz4[4] * _u1(i, j, k + 7) + phdz4[5] * _u1(i, j, k + 8) + - phdz4[6] * _u1(i, j, k + 9)) + - px4[0] * _f1_1(i - 1, j) * - (phdz4[0] * _u1(i - 1, j, k + 3) + - phdz4[1] * _u1(i - 1, j, k + 4) + - phdz4[2] * _u1(i - 1, j, k + 5) + - phdz4[3] * _u1(i - 1, j, k + 6) + - phdz4[4] * _u1(i - 1, j, k + 7) + - phdz4[5] * _u1(i - 1, j, k + 8) + - phdz4[6] * _u1(i - 1, j, k + 9)) + - px4[2] * _f1_1(i + 1, j) * - (phdz4[0] * _u1(i + 1, j, k + 3) + - phdz4[1] * _u1(i + 1, j, k + 4) + - phdz4[2] * _u1(i + 1, j, k + 5) + - phdz4[3] * _u1(i + 1, j, k + 6) + - phdz4[4] * _u1(i + 1, j, k + 7) + - phdz4[5] * _u1(i + 1, j, k + 8) + - phdz4[6] * _u1(i + 1, j, k + 9)) + - px4[3] * _f1_1(i + 2, j) * - (phdz4[0] * _u1(i + 2, j, k + 3) + - phdz4[1] * _u1(i + 2, j, k + 4) + - phdz4[2] * _u1(i + 2, j, k + 5) + - phdz4[3] * _u1(i + 2, j, k + 6) + - phdz4[4] * _u1(i + 2, j, k + 7) + - phdz4[5] * _u1(i + 2, j, k + 8) + - phdz4[6] * _u1(i + 2, j, k + 9)))) * - f_dcrj; - _s22(i, j, k + 6) = - (a * _s22(i, j, k + 6) + lam * div + - twomu * - (dhy4[2] * _u2(i, j, k + 6) + dhy4[0] * _u2(i, j - 2, k + 6) + - dhy4[1] * _u2(i, j - 1, k + 6) + dhy4[3] * _u2(i, j + 1, k + 6)) - - twomu * Jii * _g_c(k + 6) * - (phy4[2] * _f2_2(i, j) * - (phdz4[0] * _u2(i, j, k + 3) + phdz4[1] * _u2(i, j, k + 4) + - phdz4[2] * _u2(i, j, k + 5) + phdz4[3] * _u2(i, j, k + 6) + - phdz4[4] * _u2(i, j, k + 7) + phdz4[5] * _u2(i, j, k + 8) + - phdz4[6] * _u2(i, j, k + 9)) + - phy4[0] * _f2_2(i, j - 2) * - (phdz4[0] * _u2(i, j - 2, k + 3) + - phdz4[1] * _u2(i, j - 2, k + 4) + - phdz4[2] * _u2(i, j - 2, k + 5) + - phdz4[3] * _u2(i, j - 2, k + 6) + - phdz4[4] * _u2(i, j - 2, k + 7) + - phdz4[5] * _u2(i, j - 2, k + 8) + - phdz4[6] * _u2(i, j - 2, k + 9)) + - phy4[1] * _f2_2(i, j - 1) * - (phdz4[0] * _u2(i, j - 1, k + 3) + - phdz4[1] * _u2(i, j - 1, k + 4) + - phdz4[2] * _u2(i, j - 1, k + 5) + - phdz4[3] * _u2(i, j - 1, k + 6) + - phdz4[4] * _u2(i, j - 1, k + 7) + - phdz4[5] * _u2(i, j - 1, k + 8) + - phdz4[6] * _u2(i, j - 1, k + 9)) + - phy4[3] * _f2_2(i, j + 1) * - (phdz4[0] * _u2(i, j + 1, k + 3) + - phdz4[1] * _u2(i, j + 1, k + 4) + - phdz4[2] * _u2(i, j + 1, k + 5) + - phdz4[3] * _u2(i, j + 1, k + 6) + - phdz4[4] * _u2(i, j + 1, k + 7) + - phdz4[5] * _u2(i, j + 1, k + 8) + - phdz4[6] * _u2(i, j + 1, k + 9)))) * - f_dcrj; - _s33(i, j, k + 6) = - (a * _s33(i, j, k + 6) + lam * div + - twomu * Jii * - (dhz4[0] * _u3(i, j, k + 4) + dhz4[1] * _u3(i, j, k + 5) + - dhz4[2] * _u3(i, j, k + 6) + dhz4[3] * _u3(i, j, k + 7))) * - f_dcrj; - _s12(i, j, k + 6) = - (a * _s12(i, j, k + 6) + - mu12 * - (dhx4[2] * _u2(i, j, k + 6) + dhx4[0] * _u2(i - 2, j, k + 6) + - dhx4[1] * _u2(i - 1, j, k + 6) + dhx4[3] * _u2(i + 1, j, k + 6) + - dy4[1] * _u1(i, j, k + 6) + dy4[0] * _u1(i, j - 1, k + 6) + - dy4[2] * _u1(i, j + 1, k + 6) + dy4[3] * _u1(i, j + 2, k + 6) - - J12i * _g_c(k + 6) * - (phx4[2] * _f1_2(i, j) * - (phdz4[0] * _u2(i, j, k + 3) + - phdz4[1] * _u2(i, j, k + 4) + - phdz4[2] * _u2(i, j, k + 5) + - phdz4[3] * _u2(i, j, k + 6) + - phdz4[4] * _u2(i, j, k + 7) + - phdz4[5] * _u2(i, j, k + 8) + - phdz4[6] * _u2(i, j, k + 9)) + - phx4[0] * _f1_2(i - 2, j) * - (phdz4[0] * _u2(i - 2, j, k + 3) + - phdz4[1] * _u2(i - 2, j, k + 4) + - phdz4[2] * _u2(i - 2, j, k + 5) + - phdz4[3] * _u2(i - 2, j, k + 6) + - phdz4[4] * _u2(i - 2, j, k + 7) + - phdz4[5] * _u2(i - 2, j, k + 8) + - phdz4[6] * _u2(i - 2, j, k + 9)) + - phx4[1] * _f1_2(i - 1, j) * - (phdz4[0] * _u2(i - 1, j, k + 3) + - phdz4[1] * _u2(i - 1, j, k + 4) + - phdz4[2] * _u2(i - 1, j, k + 5) + - phdz4[3] * _u2(i - 1, j, k + 6) + - phdz4[4] * _u2(i - 1, j, k + 7) + - phdz4[5] * _u2(i - 1, j, k + 8) + - phdz4[6] * _u2(i - 1, j, k + 9)) + - phx4[3] * _f1_2(i + 1, j) * - (phdz4[0] * _u2(i + 1, j, k + 3) + - phdz4[1] * _u2(i + 1, j, k + 4) + - phdz4[2] * _u2(i + 1, j, k + 5) + - phdz4[3] * _u2(i + 1, j, k + 6) + - phdz4[4] * _u2(i + 1, j, k + 7) + - phdz4[5] * _u2(i + 1, j, k + 8) + - phdz4[6] * _u2(i + 1, j, k + 9))) - - J12i * _g_c(k + 6) * - (py4[1] * _f2_1(i, j) * - (phdz4[0] * _u1(i, j, k + 3) + - phdz4[1] * _u1(i, j, k + 4) + - phdz4[2] * _u1(i, j, k + 5) + - phdz4[3] * _u1(i, j, k + 6) + - phdz4[4] * _u1(i, j, k + 7) + - phdz4[5] * _u1(i, j, k + 8) + - phdz4[6] * _u1(i, j, k + 9)) + - py4[0] * _f2_1(i, j - 1) * - (phdz4[0] * _u1(i, j - 1, k + 3) + - phdz4[1] * _u1(i, j - 1, k + 4) + - phdz4[2] * _u1(i, j - 1, k + 5) + - phdz4[3] * _u1(i, j - 1, k + 6) + - phdz4[4] * _u1(i, j - 1, k + 7) + - phdz4[5] * _u1(i, j - 1, k + 8) + - phdz4[6] * _u1(i, j - 1, k + 9)) + - py4[2] * _f2_1(i, j + 1) * - (phdz4[0] * _u1(i, j + 1, k + 3) + - phdz4[1] * _u1(i, j + 1, k + 4) + - phdz4[2] * _u1(i, j + 1, k + 5) + - phdz4[3] * _u1(i, j + 1, k + 6) + - phdz4[4] * _u1(i, j + 1, k + 7) + - phdz4[5] * _u1(i, j + 1, k + 8) + - phdz4[6] * _u1(i, j + 1, k + 9)) + - py4[3] * _f2_1(i, j + 2) * - (phdz4[0] * _u1(i, j + 2, k + 3) + - phdz4[1] * _u1(i, j + 2, k + 4) + - phdz4[2] * _u1(i, j + 2, k + 5) + - phdz4[3] * _u1(i, j + 2, k + 6) + - phdz4[4] * _u1(i, j + 2, k + 7) + - phdz4[5] * _u1(i, j + 2, k + 8) + - phdz4[6] * _u1(i, j + 2, k + 9))))) * - f_dcrj; - _s13(i, j, k + 6) = - (a * _s13(i, j, k + 6) + - mu13 * - (dhx4[2] * _u3(i, j, k + 6) + dhx4[0] * _u3(i - 2, j, k + 6) + - dhx4[1] * _u3(i - 1, j, k + 6) + dhx4[3] * _u3(i + 1, j, k + 6) + - J13i * (dz4[0] * _u1(i, j, k + 5) + dz4[1] * _u1(i, j, k + 6) + - dz4[2] * _u1(i, j, k + 7) + dz4[3] * _u1(i, j, k + 8)) - - J13i * _g(k + 6) * - (phx4[2] * _f1_c(i, j) * - (pdhz4[0] * _u3(i, j, k + 3) + - pdhz4[1] * _u3(i, j, k + 4) + - pdhz4[2] * _u3(i, j, k + 5) + - pdhz4[3] * _u3(i, j, k + 6) + - pdhz4[4] * _u3(i, j, k + 7) + - pdhz4[5] * _u3(i, j, k + 8) + - pdhz4[6] * _u3(i, j, k + 9)) + - phx4[0] * _f1_c(i - 2, j) * - (pdhz4[0] * _u3(i - 2, j, k + 3) + - pdhz4[1] * _u3(i - 2, j, k + 4) + - pdhz4[2] * _u3(i - 2, j, k + 5) + - pdhz4[3] * _u3(i - 2, j, k + 6) + - pdhz4[4] * _u3(i - 2, j, k + 7) + - pdhz4[5] * _u3(i - 2, j, k + 8) + - pdhz4[6] * _u3(i - 2, j, k + 9)) + - phx4[1] * _f1_c(i - 1, j) * - (pdhz4[0] * _u3(i - 1, j, k + 3) + - pdhz4[1] * _u3(i - 1, j, k + 4) + - pdhz4[2] * _u3(i - 1, j, k + 5) + - pdhz4[3] * _u3(i - 1, j, k + 6) + - pdhz4[4] * _u3(i - 1, j, k + 7) + - pdhz4[5] * _u3(i - 1, j, k + 8) + - pdhz4[6] * _u3(i - 1, j, k + 9)) + - phx4[3] * _f1_c(i + 1, j) * - (pdhz4[0] * _u3(i + 1, j, k + 3) + - pdhz4[1] * _u3(i + 1, j, k + 4) + - pdhz4[2] * _u3(i + 1, j, k + 5) + - pdhz4[3] * _u3(i + 1, j, k + 6) + - pdhz4[4] * _u3(i + 1, j, k + 7) + - pdhz4[5] * _u3(i + 1, j, k + 8) + - pdhz4[6] * _u3(i + 1, j, k + 9))))) * - f_dcrj; - _s23(i, j, k + 6) = - (a * _s23(i, j, k + 6) + - mu23 * - (dy4[1] * _u3(i, j, k + 6) + dy4[0] * _u3(i, j - 1, k + 6) + - dy4[2] * _u3(i, j + 1, k + 6) + dy4[3] * _u3(i, j + 2, k + 6) + - J23i * (dz4[0] * _u2(i, j, k + 5) + dz4[1] * _u2(i, j, k + 6) + - dz4[2] * _u2(i, j, k + 7) + dz4[3] * _u2(i, j, k + 8)) - - J23i * _g(k + 6) * - (py4[1] * _f2_c(i, j) * - (pdhz4[0] * _u3(i, j, k + 3) + - pdhz4[1] * _u3(i, j, k + 4) + - pdhz4[2] * _u3(i, j, k + 5) + - pdhz4[3] * _u3(i, j, k + 6) + - pdhz4[4] * _u3(i, j, k + 7) + - pdhz4[5] * _u3(i, j, k + 8) + - pdhz4[6] * _u3(i, j, k + 9)) + - py4[0] * _f2_c(i, j - 1) * - (pdhz4[0] * _u3(i, j - 1, k + 3) + - pdhz4[1] * _u3(i, j - 1, k + 4) + - pdhz4[2] * _u3(i, j - 1, k + 5) + - pdhz4[3] * _u3(i, j - 1, k + 6) + - pdhz4[4] * _u3(i, j - 1, k + 7) + - pdhz4[5] * _u3(i, j - 1, k + 8) + - pdhz4[6] * _u3(i, j - 1, k + 9)) + - py4[2] * _f2_c(i, j + 1) * - (pdhz4[0] * _u3(i, j + 1, k + 3) + - pdhz4[1] * _u3(i, j + 1, k + 4) + - pdhz4[2] * _u3(i, j + 1, k + 5) + - pdhz4[3] * _u3(i, j + 1, k + 6) + - pdhz4[4] * _u3(i, j + 1, k + 7) + - pdhz4[5] * _u3(i, j + 1, k + 8) + - pdhz4[6] * _u3(i, j + 1, k + 9)) + - py4[3] * _f2_c(i, j + 2) * - (pdhz4[0] * _u3(i, j + 2, k + 3) + - pdhz4[1] * _u3(i, j + 2, k + 4) + - pdhz4[2] * _u3(i, j + 2, k + 5) + - pdhz4[3] * _u3(i, j + 2, k + 6) + - pdhz4[4] * _u3(i, j + 2, k + 7) + - pdhz4[5] * _u3(i, j + 2, k + 8) + - pdhz4[6] * _u3(i, j + 2, k + 9))))) * - f_dcrj; - } -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c -#undef _f_1 -#undef _f_2 -#undef _f_c -#undef _g -#undef _g3 -#undef _g3_c -#undef _g_c -#undef _lami -#undef _mui -#undef _s11 -#undef _s12 -#undef _s13 -#undef _s22 -#undef _s23 -#undef _s33 -#undef _u1 -#undef _u2 -#undef _u3 -} - -__global__ void dtopo_str_112( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej) { - const float phz4r[6][8] = { - {0.0000000000000000, 0.8338228784688313, 0.1775123316429260, - 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.1813404047323969, 1.1246711188154426, - -0.2933634518280757, -0.0126480717197637, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, -0.1331142706282399, 0.7930714675884345, - 0.3131998767078508, 0.0268429263319546, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.0969078556633046, -0.1539344946680898, - 0.4486491202844389, 0.6768738207821733, -0.0684963020618270, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - -0.0625000000000000, 0.5625000000000000, 0.5625000000000000, - -0.0625000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, -0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dhz4r[6][8] = { - {0.0000000000000000, 1.4511412472637157, -1.8534237417911470, - 0.3534237417911469, 0.0488587527362844, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.8577143189081458, -0.5731429567244373, - -0.4268570432755628, 0.1422856810918542, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.1674548505882877, 0.4976354482351368, - -0.4976354482351368, -0.1674548505882877, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, -0.1027061113405124, 0.2624541326469860, - 0.8288742701021167, -1.0342864927831414, 0.0456642013745513, - 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, - 0.0416666666666667, 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, - -1.1250000000000000, 0.0416666666666667}}; - const float phdz4r[6][9] = { - {1.5373923010673116, -1.0330083346742178, -0.6211677623382129, - -0.0454110758451345, 0.1680934225988761, -0.0058985508086226, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.8713921425924012, -0.1273679143938725, -0.9297550647681331, - 0.1912595577524762, -0.0050469052908678, -0.0004818158920039, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.0563333965151294, 0.3996393739211770, 0.0536007135209481, - -0.5022638816465500, -0.0083321572725344, 0.0010225549618299, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.0132930497153990, -0.0706942590708847, 0.5596445380498726, - 0.1434031863528334, -0.7456356868769503, 0.1028431844156395, - -0.0028540125859095, 0.0000000000000000, 0.0000000000000000}, - {0.0025849423769932, -0.0492307522105194, 0.0524552477068130, - 0.5317248489238559, 0.0530169938441240, -0.6816971139746001, - 0.0937500000000000, -0.0026041666666667, 0.0000000000000000}, - {0.0009619461344193, 0.0035553215968974, -0.0124936029037323, - -0.0773639466787397, 0.6736586580761996, 0.0002232904416222, - -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dz4r[6][7] = { - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {1.7779989465546748, -1.3337480247900155, -0.7775013168066564, - 0.3332503950419969, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {0.4410217341392059, 0.1730842484889890, -0.4487228323259926, - -0.1653831503022022, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000}, - {-0.1798793213882701, 0.2757257254150788, 0.9597948548284453, - -1.1171892610431817, 0.0615480021879277, 0.0000000000000000, - 0.0000000000000000}, - {-0.0153911381507088, -0.0568851455503591, 0.1998976464597171, - 0.8628231468598346, -1.0285385292191949, 0.0380940196007109, - 0.0000000000000000}, - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, - 0.0416666666666667}}; - const float pdhz4r[6][9] = { - {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 1.5886075042755419, -2.2801810182668114, - 0.8088980291471826, -0.1316830205960989, 0.0143585054401857, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, 0.4823226655921295, 0.0574614517751295, - -0.5663203488781653, 0.0309656800624243, -0.0044294485515179, - 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, -0.0174954311279016, 0.4325508330649349, - 0.3111668377093504, -0.8538512002386446, 0.1314757107290064, - -0.0038467501367455, 0.0000000000000000, 0.0000000000000000}, - {0.0000000000000000, -0.1277481742492071, 0.2574468839590017, - 0.4155794781917712, -0.0115571196122084, -0.6170517361659126, - 0.0857115441015996, -0.0023808762250444, 0.0000000000000000}, - {0.0000000000000000, 0.0064191319587820, -0.0164033832904366, - -0.0752421418813823, 0.6740179057989464, -0.0002498459192428, - -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; - if (j >= ngsl + ny) - return; - if (j >= ej) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= 6) - return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_1(i, j) \ - f_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_2(i, j) \ - f_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_c(i, j) \ - f_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] -#define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _lami(i, j, k) \ - lami[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _mui(i, j, k) \ - mui[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s11(i, j, k) \ - s11[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s12(i, j, k) \ - s12[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s22(i, j, k) \ - s22[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s33(i, j, k) \ - s33[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u3(i, j, k) \ - u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] - for (int i = bi; i < ei; ++i) { - float Jii = _f_c(i, j) * _g3_c(nz - 1 - k); - Jii = 1.0 * 1.0 / Jii; - float J12i = _f(i, j) * _g3_c(nz - 1 - k); - J12i = 1.0 * 1.0 / J12i; - float J13i = _f_1(i, j) * _g3(nz - 1 - k); - J13i = 1.0 * 1.0 / J13i; - float J23i = _f_2(i, j) * _g3(nz - 1 - k); - J23i = 1.0 * 1.0 / J23i; - float lam = - nu * 1.0 / - (phz4r[k][7] * (phy4[2] * (px4[1] * _lami(i, j, nz - 8) + - px4[0] * _lami(i - 1, j, nz - 8) + - px4[2] * _lami(i + 1, j, nz - 8) + - px4[3] * _lami(i + 2, j, nz - 8)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 8) + - px4[0] * _lami(i - 1, j - 2, nz - 8) + - px4[2] * _lami(i + 1, j - 2, nz - 8) + - px4[3] * _lami(i + 2, j - 2, nz - 8)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 8) + - px4[0] * _lami(i - 1, j - 1, nz - 8) + - px4[2] * _lami(i + 1, j - 1, nz - 8) + - px4[3] * _lami(i + 2, j - 1, nz - 8)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 8) + - px4[0] * _lami(i - 1, j + 1, nz - 8) + - px4[2] * _lami(i + 1, j + 1, nz - 8) + - px4[3] * _lami(i + 2, j + 1, nz - 8))) + - phz4r[k][6] * (phy4[2] * (px4[1] * _lami(i, j, nz - 7) + - px4[0] * _lami(i - 1, j, nz - 7) + - px4[2] * _lami(i + 1, j, nz - 7) + - px4[3] * _lami(i + 2, j, nz - 7)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 7) + - px4[0] * _lami(i - 1, j - 2, nz - 7) + - px4[2] * _lami(i + 1, j - 2, nz - 7) + - px4[3] * _lami(i + 2, j - 2, nz - 7)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 7) + - px4[0] * _lami(i - 1, j - 1, nz - 7) + - px4[2] * _lami(i + 1, j - 1, nz - 7) + - px4[3] * _lami(i + 2, j - 1, nz - 7)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 7) + - px4[0] * _lami(i - 1, j + 1, nz - 7) + - px4[2] * _lami(i + 1, j + 1, nz - 7) + - px4[3] * _lami(i + 2, j + 1, nz - 7))) + - phz4r[k][5] * (phy4[2] * (px4[1] * _lami(i, j, nz - 6) + - px4[0] * _lami(i - 1, j, nz - 6) + - px4[2] * _lami(i + 1, j, nz - 6) + - px4[3] * _lami(i + 2, j, nz - 6)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 6) + - px4[0] * _lami(i - 1, j - 2, nz - 6) + - px4[2] * _lami(i + 1, j - 2, nz - 6) + - px4[3] * _lami(i + 2, j - 2, nz - 6)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 6) + - px4[0] * _lami(i - 1, j - 1, nz - 6) + - px4[2] * _lami(i + 1, j - 1, nz - 6) + - px4[3] * _lami(i + 2, j - 1, nz - 6)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 6) + - px4[0] * _lami(i - 1, j + 1, nz - 6) + - px4[2] * _lami(i + 1, j + 1, nz - 6) + - px4[3] * _lami(i + 2, j + 1, nz - 6))) + - phz4r[k][4] * (phy4[2] * (px4[1] * _lami(i, j, nz - 5) + - px4[0] * _lami(i - 1, j, nz - 5) + - px4[2] * _lami(i + 1, j, nz - 5) + - px4[3] * _lami(i + 2, j, nz - 5)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 5) + - px4[0] * _lami(i - 1, j - 2, nz - 5) + - px4[2] * _lami(i + 1, j - 2, nz - 5) + - px4[3] * _lami(i + 2, j - 2, nz - 5)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 5) + - px4[0] * _lami(i - 1, j - 1, nz - 5) + - px4[2] * _lami(i + 1, j - 1, nz - 5) + - px4[3] * _lami(i + 2, j - 1, nz - 5)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 5) + - px4[0] * _lami(i - 1, j + 1, nz - 5) + - px4[2] * _lami(i + 1, j + 1, nz - 5) + - px4[3] * _lami(i + 2, j + 1, nz - 5))) + - phz4r[k][3] * (phy4[2] * (px4[1] * _lami(i, j, nz - 4) + - px4[0] * _lami(i - 1, j, nz - 4) + - px4[2] * _lami(i + 1, j, nz - 4) + - px4[3] * _lami(i + 2, j, nz - 4)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 4) + - px4[0] * _lami(i - 1, j - 2, nz - 4) + - px4[2] * _lami(i + 1, j - 2, nz - 4) + - px4[3] * _lami(i + 2, j - 2, nz - 4)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 4) + - px4[0] * _lami(i - 1, j - 1, nz - 4) + - px4[2] * _lami(i + 1, j - 1, nz - 4) + - px4[3] * _lami(i + 2, j - 1, nz - 4)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 4) + - px4[0] * _lami(i - 1, j + 1, nz - 4) + - px4[2] * _lami(i + 1, j + 1, nz - 4) + - px4[3] * _lami(i + 2, j + 1, nz - 4))) + - phz4r[k][2] * (phy4[2] * (px4[1] * _lami(i, j, nz - 3) + - px4[0] * _lami(i - 1, j, nz - 3) + - px4[2] * _lami(i + 1, j, nz - 3) + - px4[3] * _lami(i + 2, j, nz - 3)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 3) + - px4[0] * _lami(i - 1, j - 2, nz - 3) + - px4[2] * _lami(i + 1, j - 2, nz - 3) + - px4[3] * _lami(i + 2, j - 2, nz - 3)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 3) + - px4[0] * _lami(i - 1, j - 1, nz - 3) + - px4[2] * _lami(i + 1, j - 1, nz - 3) + - px4[3] * _lami(i + 2, j - 1, nz - 3)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 3) + - px4[0] * _lami(i - 1, j + 1, nz - 3) + - px4[2] * _lami(i + 1, j + 1, nz - 3) + - px4[3] * _lami(i + 2, j + 1, nz - 3))) + - phz4r[k][1] * (phy4[2] * (px4[1] * _lami(i, j, nz - 2) + - px4[0] * _lami(i - 1, j, nz - 2) + - px4[2] * _lami(i + 1, j, nz - 2) + - px4[3] * _lami(i + 2, j, nz - 2)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 2) + - px4[0] * _lami(i - 1, j - 2, nz - 2) + - px4[2] * _lami(i + 1, j - 2, nz - 2) + - px4[3] * _lami(i + 2, j - 2, nz - 2)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 2) + - px4[0] * _lami(i - 1, j - 1, nz - 2) + - px4[2] * _lami(i + 1, j - 1, nz - 2) + - px4[3] * _lami(i + 2, j - 1, nz - 2)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 2) + - px4[0] * _lami(i - 1, j + 1, nz - 2) + - px4[2] * _lami(i + 1, j + 1, nz - 2) + - px4[3] * _lami(i + 2, j + 1, nz - 2))) + - phz4r[k][0] * (phy4[2] * (px4[1] * _lami(i, j, nz - 1) + - px4[0] * _lami(i - 1, j, nz - 1) + - px4[2] * _lami(i + 1, j, nz - 1) + - px4[3] * _lami(i + 2, j, nz - 1)) + - phy4[0] * (px4[1] * _lami(i, j - 2, nz - 1) + - px4[0] * _lami(i - 1, j - 2, nz - 1) + - px4[2] * _lami(i + 1, j - 2, nz - 1) + - px4[3] * _lami(i + 2, j - 2, nz - 1)) + - phy4[1] * (px4[1] * _lami(i, j - 1, nz - 1) + - px4[0] * _lami(i - 1, j - 1, nz - 1) + - px4[2] * _lami(i + 1, j - 1, nz - 1) + - px4[3] * _lami(i + 2, j - 1, nz - 1)) + - phy4[3] * (px4[1] * _lami(i, j + 1, nz - 1) + - px4[0] * _lami(i - 1, j + 1, nz - 1) + - px4[2] * _lami(i + 1, j + 1, nz - 1) + - px4[3] * _lami(i + 2, j + 1, nz - 1)))); - float twomu = - 2 * nu * 1.0 / - (phz4r[k][7] * (phy4[2] * (px4[1] * _mui(i, j, nz - 8) + - px4[0] * _mui(i - 1, j, nz - 8) + - px4[2] * _mui(i + 1, j, nz - 8) + - px4[3] * _mui(i + 2, j, nz - 8)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 8) + - px4[0] * _mui(i - 1, j - 2, nz - 8) + - px4[2] * _mui(i + 1, j - 2, nz - 8) + - px4[3] * _mui(i + 2, j - 2, nz - 8)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 8) + - px4[0] * _mui(i - 1, j - 1, nz - 8) + - px4[2] * _mui(i + 1, j - 1, nz - 8) + - px4[3] * _mui(i + 2, j - 1, nz - 8)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 8) + - px4[0] * _mui(i - 1, j + 1, nz - 8) + - px4[2] * _mui(i + 1, j + 1, nz - 8) + - px4[3] * _mui(i + 2, j + 1, nz - 8))) + - phz4r[k][6] * (phy4[2] * (px4[1] * _mui(i, j, nz - 7) + - px4[0] * _mui(i - 1, j, nz - 7) + - px4[2] * _mui(i + 1, j, nz - 7) + - px4[3] * _mui(i + 2, j, nz - 7)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 7) + - px4[0] * _mui(i - 1, j - 2, nz - 7) + - px4[2] * _mui(i + 1, j - 2, nz - 7) + - px4[3] * _mui(i + 2, j - 2, nz - 7)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 7) + - px4[0] * _mui(i - 1, j - 1, nz - 7) + - px4[2] * _mui(i + 1, j - 1, nz - 7) + - px4[3] * _mui(i + 2, j - 1, nz - 7)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 7) + - px4[0] * _mui(i - 1, j + 1, nz - 7) + - px4[2] * _mui(i + 1, j + 1, nz - 7) + - px4[3] * _mui(i + 2, j + 1, nz - 7))) + - phz4r[k][5] * (phy4[2] * (px4[1] * _mui(i, j, nz - 6) + - px4[0] * _mui(i - 1, j, nz - 6) + - px4[2] * _mui(i + 1, j, nz - 6) + - px4[3] * _mui(i + 2, j, nz - 6)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 6) + - px4[0] * _mui(i - 1, j - 2, nz - 6) + - px4[2] * _mui(i + 1, j - 2, nz - 6) + - px4[3] * _mui(i + 2, j - 2, nz - 6)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 6) + - px4[0] * _mui(i - 1, j - 1, nz - 6) + - px4[2] * _mui(i + 1, j - 1, nz - 6) + - px4[3] * _mui(i + 2, j - 1, nz - 6)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 6) + - px4[0] * _mui(i - 1, j + 1, nz - 6) + - px4[2] * _mui(i + 1, j + 1, nz - 6) + - px4[3] * _mui(i + 2, j + 1, nz - 6))) + - phz4r[k][4] * (phy4[2] * (px4[1] * _mui(i, j, nz - 5) + - px4[0] * _mui(i - 1, j, nz - 5) + - px4[2] * _mui(i + 1, j, nz - 5) + - px4[3] * _mui(i + 2, j, nz - 5)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 5) + - px4[0] * _mui(i - 1, j - 2, nz - 5) + - px4[2] * _mui(i + 1, j - 2, nz - 5) + - px4[3] * _mui(i + 2, j - 2, nz - 5)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 5) + - px4[0] * _mui(i - 1, j - 1, nz - 5) + - px4[2] * _mui(i + 1, j - 1, nz - 5) + - px4[3] * _mui(i + 2, j - 1, nz - 5)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 5) + - px4[0] * _mui(i - 1, j + 1, nz - 5) + - px4[2] * _mui(i + 1, j + 1, nz - 5) + - px4[3] * _mui(i + 2, j + 1, nz - 5))) + - phz4r[k][3] * (phy4[2] * (px4[1] * _mui(i, j, nz - 4) + - px4[0] * _mui(i - 1, j, nz - 4) + - px4[2] * _mui(i + 1, j, nz - 4) + - px4[3] * _mui(i + 2, j, nz - 4)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 4) + - px4[0] * _mui(i - 1, j - 2, nz - 4) + - px4[2] * _mui(i + 1, j - 2, nz - 4) + - px4[3] * _mui(i + 2, j - 2, nz - 4)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 4) + - px4[0] * _mui(i - 1, j - 1, nz - 4) + - px4[2] * _mui(i + 1, j - 1, nz - 4) + - px4[3] * _mui(i + 2, j - 1, nz - 4)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 4) + - px4[0] * _mui(i - 1, j + 1, nz - 4) + - px4[2] * _mui(i + 1, j + 1, nz - 4) + - px4[3] * _mui(i + 2, j + 1, nz - 4))) + - phz4r[k][2] * (phy4[2] * (px4[1] * _mui(i, j, nz - 3) + - px4[0] * _mui(i - 1, j, nz - 3) + - px4[2] * _mui(i + 1, j, nz - 3) + - px4[3] * _mui(i + 2, j, nz - 3)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 3) + - px4[0] * _mui(i - 1, j - 2, nz - 3) + - px4[2] * _mui(i + 1, j - 2, nz - 3) + - px4[3] * _mui(i + 2, j - 2, nz - 3)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 3) + - px4[0] * _mui(i - 1, j - 1, nz - 3) + - px4[2] * _mui(i + 1, j - 1, nz - 3) + - px4[3] * _mui(i + 2, j - 1, nz - 3)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 3) + - px4[0] * _mui(i - 1, j + 1, nz - 3) + - px4[2] * _mui(i + 1, j + 1, nz - 3) + - px4[3] * _mui(i + 2, j + 1, nz - 3))) + - phz4r[k][1] * (phy4[2] * (px4[1] * _mui(i, j, nz - 2) + - px4[0] * _mui(i - 1, j, nz - 2) + - px4[2] * _mui(i + 1, j, nz - 2) + - px4[3] * _mui(i + 2, j, nz - 2)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 2) + - px4[0] * _mui(i - 1, j - 2, nz - 2) + - px4[2] * _mui(i + 1, j - 2, nz - 2) + - px4[3] * _mui(i + 2, j - 2, nz - 2)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 2) + - px4[0] * _mui(i - 1, j - 1, nz - 2) + - px4[2] * _mui(i + 1, j - 1, nz - 2) + - px4[3] * _mui(i + 2, j - 1, nz - 2)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 2) + - px4[0] * _mui(i - 1, j + 1, nz - 2) + - px4[2] * _mui(i + 1, j + 1, nz - 2) + - px4[3] * _mui(i + 2, j + 1, nz - 2))) + - phz4r[k][0] * (phy4[2] * (px4[1] * _mui(i, j, nz - 1) + - px4[0] * _mui(i - 1, j, nz - 1) + - px4[2] * _mui(i + 1, j, nz - 1) + - px4[3] * _mui(i + 2, j, nz - 1)) + - phy4[0] * (px4[1] * _mui(i, j - 2, nz - 1) + - px4[0] * _mui(i - 1, j - 2, nz - 1) + - px4[2] * _mui(i + 1, j - 2, nz - 1) + - px4[3] * _mui(i + 2, j - 2, nz - 1)) + - phy4[1] * (px4[1] * _mui(i, j - 1, nz - 1) + - px4[0] * _mui(i - 1, j - 1, nz - 1) + - px4[2] * _mui(i + 1, j - 1, nz - 1) + - px4[3] * _mui(i + 2, j - 1, nz - 1)) + - phy4[3] * (px4[1] * _mui(i, j + 1, nz - 1) + - px4[0] * _mui(i - 1, j + 1, nz - 1) + - px4[2] * _mui(i + 1, j + 1, nz - 1) + - px4[3] * _mui(i + 2, j + 1, nz - 1)))); - float mu12 = - nu * 1.0 / - (phz4r[k][7] * _mui(i, j, nz - 8) + phz4r[k][6] * _mui(i, j, nz - 7) + - phz4r[k][5] * _mui(i, j, nz - 6) + phz4r[k][4] * _mui(i, j, nz - 5) + - phz4r[k][3] * _mui(i, j, nz - 4) + phz4r[k][2] * _mui(i, j, nz - 3) + - phz4r[k][1] * _mui(i, j, nz - 2) + phz4r[k][0] * _mui(i, j, nz - 1)); - float mu13 = nu * 1.0 / - (phy4[2] * _mui(i, j, nz - 1 - k) + - phy4[0] * _mui(i, j - 2, nz - 1 - k) + - phy4[1] * _mui(i, j - 1, nz - 1 - k) + - phy4[3] * _mui(i, j + 1, nz - 1 - k)); - float mu23 = - nu * 1.0 / - (px4[1] * _mui(i, j, nz - 1 - k) + px4[0] * _mui(i - 1, j, nz - 1 - k) + - px4[2] * _mui(i + 1, j, nz - 1 - k) + - px4[3] * _mui(i + 2, j, nz - 1 - k)); - float div = - dhy4[2] * _u2(i, j, nz - 1 - k) + dhy4[0] * _u2(i, j - 2, nz - 1 - k) + - dhy4[1] * _u2(i, j - 1, nz - 1 - k) + - dhy4[3] * _u2(i, j + 1, nz - 1 - k) + dx4[1] * _u1(i, j, nz - 1 - k) + - dx4[0] * _u1(i - 1, j, nz - 1 - k) + - dx4[2] * _u1(i + 1, j, nz - 1 - k) + - dx4[3] * _u1(i + 2, j, nz - 1 - k) + - Jii * - (dhz4r[k][7] * _u3(i, j, nz - 8) + dhz4r[k][6] * _u3(i, j, nz - 7) + - dhz4r[k][5] * _u3(i, j, nz - 6) + dhz4r[k][4] * _u3(i, j, nz - 5) + - dhz4r[k][3] * _u3(i, j, nz - 4) + dhz4r[k][2] * _u3(i, j, nz - 3) + - dhz4r[k][1] * _u3(i, j, nz - 2) + - dhz4r[k][0] * _u3(i, j, nz - 1)) - - Jii * _g_c(nz - 1 - k) * - (phy4[2] * _f2_2(i, j) * - (phdz4r[k][8] * _u2(i, j, nz - 9) + - phdz4r[k][7] * _u2(i, j, nz - 8) + - phdz4r[k][6] * _u2(i, j, nz - 7) + - phdz4r[k][5] * _u2(i, j, nz - 6) + - phdz4r[k][4] * _u2(i, j, nz - 5) + - phdz4r[k][3] * _u2(i, j, nz - 4) + - phdz4r[k][2] * _u2(i, j, nz - 3) + - phdz4r[k][1] * _u2(i, j, nz - 2) + - phdz4r[k][0] * _u2(i, j, nz - 1)) + - phy4[0] * _f2_2(i, j - 2) * - (phdz4r[k][8] * _u2(i, j - 2, nz - 9) + - phdz4r[k][7] * _u2(i, j - 2, nz - 8) + - phdz4r[k][6] * _u2(i, j - 2, nz - 7) + - phdz4r[k][5] * _u2(i, j - 2, nz - 6) + - phdz4r[k][4] * _u2(i, j - 2, nz - 5) + - phdz4r[k][3] * _u2(i, j - 2, nz - 4) + - phdz4r[k][2] * _u2(i, j - 2, nz - 3) + - phdz4r[k][1] * _u2(i, j - 2, nz - 2) + - phdz4r[k][0] * _u2(i, j - 2, nz - 1)) + - phy4[1] * _f2_2(i, j - 1) * - (phdz4r[k][8] * _u2(i, j - 1, nz - 9) + - phdz4r[k][7] * _u2(i, j - 1, nz - 8) + - phdz4r[k][6] * _u2(i, j - 1, nz - 7) + - phdz4r[k][5] * _u2(i, j - 1, nz - 6) + - phdz4r[k][4] * _u2(i, j - 1, nz - 5) + - phdz4r[k][3] * _u2(i, j - 1, nz - 4) + - phdz4r[k][2] * _u2(i, j - 1, nz - 3) + - phdz4r[k][1] * _u2(i, j - 1, nz - 2) + - phdz4r[k][0] * _u2(i, j - 1, nz - 1)) + - phy4[3] * _f2_2(i, j + 1) * - (phdz4r[k][8] * _u2(i, j + 1, nz - 9) + - phdz4r[k][7] * _u2(i, j + 1, nz - 8) + - phdz4r[k][6] * _u2(i, j + 1, nz - 7) + - phdz4r[k][5] * _u2(i, j + 1, nz - 6) + - phdz4r[k][4] * _u2(i, j + 1, nz - 5) + - phdz4r[k][3] * _u2(i, j + 1, nz - 4) + - phdz4r[k][2] * _u2(i, j + 1, nz - 3) + - phdz4r[k][1] * _u2(i, j + 1, nz - 2) + - phdz4r[k][0] * _u2(i, j + 1, nz - 1))) - - Jii * _g_c(nz - 1 - k) * - (px4[1] * _f1_1(i, j) * - (phdz4r[k][8] * _u1(i, j, nz - 9) + - phdz4r[k][7] * _u1(i, j, nz - 8) + - phdz4r[k][6] * _u1(i, j, nz - 7) + - phdz4r[k][5] * _u1(i, j, nz - 6) + - phdz4r[k][4] * _u1(i, j, nz - 5) + - phdz4r[k][3] * _u1(i, j, nz - 4) + - phdz4r[k][2] * _u1(i, j, nz - 3) + - phdz4r[k][1] * _u1(i, j, nz - 2) + - phdz4r[k][0] * _u1(i, j, nz - 1)) + - px4[0] * _f1_1(i - 1, j) * - (phdz4r[k][8] * _u1(i - 1, j, nz - 9) + - phdz4r[k][7] * _u1(i - 1, j, nz - 8) + - phdz4r[k][6] * _u1(i - 1, j, nz - 7) + - phdz4r[k][5] * _u1(i - 1, j, nz - 6) + - phdz4r[k][4] * _u1(i - 1, j, nz - 5) + - phdz4r[k][3] * _u1(i - 1, j, nz - 4) + - phdz4r[k][2] * _u1(i - 1, j, nz - 3) + - phdz4r[k][1] * _u1(i - 1, j, nz - 2) + - phdz4r[k][0] * _u1(i - 1, j, nz - 1)) + - px4[2] * _f1_1(i + 1, j) * - (phdz4r[k][8] * _u1(i + 1, j, nz - 9) + - phdz4r[k][7] * _u1(i + 1, j, nz - 8) + - phdz4r[k][6] * _u1(i + 1, j, nz - 7) + - phdz4r[k][5] * _u1(i + 1, j, nz - 6) + - phdz4r[k][4] * _u1(i + 1, j, nz - 5) + - phdz4r[k][3] * _u1(i + 1, j, nz - 4) + - phdz4r[k][2] * _u1(i + 1, j, nz - 3) + - phdz4r[k][1] * _u1(i + 1, j, nz - 2) + - phdz4r[k][0] * _u1(i + 1, j, nz - 1)) + - px4[3] * _f1_1(i + 2, j) * - (phdz4r[k][8] * _u1(i + 2, j, nz - 9) + - phdz4r[k][7] * _u1(i + 2, j, nz - 8) + - phdz4r[k][6] * _u1(i + 2, j, nz - 7) + - phdz4r[k][5] * _u1(i + 2, j, nz - 6) + - phdz4r[k][4] * _u1(i + 2, j, nz - 5) + - phdz4r[k][3] * _u1(i + 2, j, nz - 4) + - phdz4r[k][2] * _u1(i + 2, j, nz - 3) + - phdz4r[k][1] * _u1(i + 2, j, nz - 2) + - phdz4r[k][0] * _u1(i + 2, j, nz - 1))); - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(nz - 1 - k); - _s11(i, j, nz - 1 - k) = - (a * _s11(i, j, nz - 1 - k) + lam * div + - twomu * (dx4[1] * _u1(i, j, nz - 1 - k) + - dx4[0] * _u1(i - 1, j, nz - 1 - k) + - dx4[2] * _u1(i + 1, j, nz - 1 - k) + - dx4[3] * _u1(i + 2, j, nz - 1 - k)) - - twomu * Jii * _g_c(nz - 1 - k) * - (px4[1] * _f1_1(i, j) * - (phdz4r[k][8] * _u1(i, j, nz - 9) + - phdz4r[k][7] * _u1(i, j, nz - 8) + - phdz4r[k][6] * _u1(i, j, nz - 7) + - phdz4r[k][5] * _u1(i, j, nz - 6) + - phdz4r[k][4] * _u1(i, j, nz - 5) + - phdz4r[k][3] * _u1(i, j, nz - 4) + - phdz4r[k][2] * _u1(i, j, nz - 3) + - phdz4r[k][1] * _u1(i, j, nz - 2) + - phdz4r[k][0] * _u1(i, j, nz - 1)) + - px4[0] * _f1_1(i - 1, j) * - (phdz4r[k][8] * _u1(i - 1, j, nz - 9) + - phdz4r[k][7] * _u1(i - 1, j, nz - 8) + - phdz4r[k][6] * _u1(i - 1, j, nz - 7) + - phdz4r[k][5] * _u1(i - 1, j, nz - 6) + - phdz4r[k][4] * _u1(i - 1, j, nz - 5) + - phdz4r[k][3] * _u1(i - 1, j, nz - 4) + - phdz4r[k][2] * _u1(i - 1, j, nz - 3) + - phdz4r[k][1] * _u1(i - 1, j, nz - 2) + - phdz4r[k][0] * _u1(i - 1, j, nz - 1)) + - px4[2] * _f1_1(i + 1, j) * - (phdz4r[k][8] * _u1(i + 1, j, nz - 9) + - phdz4r[k][7] * _u1(i + 1, j, nz - 8) + - phdz4r[k][6] * _u1(i + 1, j, nz - 7) + - phdz4r[k][5] * _u1(i + 1, j, nz - 6) + - phdz4r[k][4] * _u1(i + 1, j, nz - 5) + - phdz4r[k][3] * _u1(i + 1, j, nz - 4) + - phdz4r[k][2] * _u1(i + 1, j, nz - 3) + - phdz4r[k][1] * _u1(i + 1, j, nz - 2) + - phdz4r[k][0] * _u1(i + 1, j, nz - 1)) + - px4[3] * _f1_1(i + 2, j) * - (phdz4r[k][8] * _u1(i + 2, j, nz - 9) + - phdz4r[k][7] * _u1(i + 2, j, nz - 8) + - phdz4r[k][6] * _u1(i + 2, j, nz - 7) + - phdz4r[k][5] * _u1(i + 2, j, nz - 6) + - phdz4r[k][4] * _u1(i + 2, j, nz - 5) + - phdz4r[k][3] * _u1(i + 2, j, nz - 4) + - phdz4r[k][2] * _u1(i + 2, j, nz - 3) + - phdz4r[k][1] * _u1(i + 2, j, nz - 2) + - phdz4r[k][0] * _u1(i + 2, j, nz - 1)))) * - f_dcrj; - _s22(i, j, nz - 1 - k) = - (a * _s22(i, j, nz - 1 - k) + lam * div + - twomu * (dhy4[2] * _u2(i, j, nz - 1 - k) + - dhy4[0] * _u2(i, j - 2, nz - 1 - k) + - dhy4[1] * _u2(i, j - 1, nz - 1 - k) + - dhy4[3] * _u2(i, j + 1, nz - 1 - k)) - - twomu * Jii * _g_c(nz - 1 - k) * - (phy4[2] * _f2_2(i, j) * - (phdz4r[k][8] * _u2(i, j, nz - 9) + - phdz4r[k][7] * _u2(i, j, nz - 8) + - phdz4r[k][6] * _u2(i, j, nz - 7) + - phdz4r[k][5] * _u2(i, j, nz - 6) + - phdz4r[k][4] * _u2(i, j, nz - 5) + - phdz4r[k][3] * _u2(i, j, nz - 4) + - phdz4r[k][2] * _u2(i, j, nz - 3) + - phdz4r[k][1] * _u2(i, j, nz - 2) + - phdz4r[k][0] * _u2(i, j, nz - 1)) + - phy4[0] * _f2_2(i, j - 2) * - (phdz4r[k][8] * _u2(i, j - 2, nz - 9) + - phdz4r[k][7] * _u2(i, j - 2, nz - 8) + - phdz4r[k][6] * _u2(i, j - 2, nz - 7) + - phdz4r[k][5] * _u2(i, j - 2, nz - 6) + - phdz4r[k][4] * _u2(i, j - 2, nz - 5) + - phdz4r[k][3] * _u2(i, j - 2, nz - 4) + - phdz4r[k][2] * _u2(i, j - 2, nz - 3) + - phdz4r[k][1] * _u2(i, j - 2, nz - 2) + - phdz4r[k][0] * _u2(i, j - 2, nz - 1)) + - phy4[1] * _f2_2(i, j - 1) * - (phdz4r[k][8] * _u2(i, j - 1, nz - 9) + - phdz4r[k][7] * _u2(i, j - 1, nz - 8) + - phdz4r[k][6] * _u2(i, j - 1, nz - 7) + - phdz4r[k][5] * _u2(i, j - 1, nz - 6) + - phdz4r[k][4] * _u2(i, j - 1, nz - 5) + - phdz4r[k][3] * _u2(i, j - 1, nz - 4) + - phdz4r[k][2] * _u2(i, j - 1, nz - 3) + - phdz4r[k][1] * _u2(i, j - 1, nz - 2) + - phdz4r[k][0] * _u2(i, j - 1, nz - 1)) + - phy4[3] * _f2_2(i, j + 1) * - (phdz4r[k][8] * _u2(i, j + 1, nz - 9) + - phdz4r[k][7] * _u2(i, j + 1, nz - 8) + - phdz4r[k][6] * _u2(i, j + 1, nz - 7) + - phdz4r[k][5] * _u2(i, j + 1, nz - 6) + - phdz4r[k][4] * _u2(i, j + 1, nz - 5) + - phdz4r[k][3] * _u2(i, j + 1, nz - 4) + - phdz4r[k][2] * _u2(i, j + 1, nz - 3) + - phdz4r[k][1] * _u2(i, j + 1, nz - 2) + - phdz4r[k][0] * _u2(i, j + 1, nz - 1)))) * - f_dcrj; - _s33(i, j, nz - 1 - k) = (a * _s33(i, j, nz - 1 - k) + lam * div + - twomu * Jii * - (dhz4r[k][7] * _u3(i, j, nz - 8) + - dhz4r[k][6] * _u3(i, j, nz - 7) + - dhz4r[k][5] * _u3(i, j, nz - 6) + - dhz4r[k][4] * _u3(i, j, nz - 5) + - dhz4r[k][3] * _u3(i, j, nz - 4) + - dhz4r[k][2] * _u3(i, j, nz - 3) + - dhz4r[k][1] * _u3(i, j, nz - 2) + - dhz4r[k][0] * _u3(i, j, nz - 1))) * - f_dcrj; - _s12(i, j, nz - 1 - k) = - (a * _s12(i, j, nz - 1 - k) + - mu12 * (dhx4[2] * _u2(i, j, nz - 1 - k) + - dhx4[0] * _u2(i - 2, j, nz - 1 - k) + - dhx4[1] * _u2(i - 1, j, nz - 1 - k) + - dhx4[3] * _u2(i + 1, j, nz - 1 - k) + - dy4[1] * _u1(i, j, nz - 1 - k) + - dy4[0] * _u1(i, j - 1, nz - 1 - k) + - dy4[2] * _u1(i, j + 1, nz - 1 - k) + - dy4[3] * _u1(i, j + 2, nz - 1 - k) - - J12i * _g_c(nz - 1 - k) * - (phx4[2] * _f1_2(i, j) * - (phdz4r[k][8] * _u2(i, j, nz - 9) + - phdz4r[k][7] * _u2(i, j, nz - 8) + - phdz4r[k][6] * _u2(i, j, nz - 7) + - phdz4r[k][5] * _u2(i, j, nz - 6) + - phdz4r[k][4] * _u2(i, j, nz - 5) + - phdz4r[k][3] * _u2(i, j, nz - 4) + - phdz4r[k][2] * _u2(i, j, nz - 3) + - phdz4r[k][1] * _u2(i, j, nz - 2) + - phdz4r[k][0] * _u2(i, j, nz - 1)) + - phx4[0] * _f1_2(i - 2, j) * - (phdz4r[k][8] * _u2(i - 2, j, nz - 9) + - phdz4r[k][7] * _u2(i - 2, j, nz - 8) + - phdz4r[k][6] * _u2(i - 2, j, nz - 7) + - phdz4r[k][5] * _u2(i - 2, j, nz - 6) + - phdz4r[k][4] * _u2(i - 2, j, nz - 5) + - phdz4r[k][3] * _u2(i - 2, j, nz - 4) + - phdz4r[k][2] * _u2(i - 2, j, nz - 3) + - phdz4r[k][1] * _u2(i - 2, j, nz - 2) + - phdz4r[k][0] * _u2(i - 2, j, nz - 1)) + - phx4[1] * _f1_2(i - 1, j) * - (phdz4r[k][8] * _u2(i - 1, j, nz - 9) + - phdz4r[k][7] * _u2(i - 1, j, nz - 8) + - phdz4r[k][6] * _u2(i - 1, j, nz - 7) + - phdz4r[k][5] * _u2(i - 1, j, nz - 6) + - phdz4r[k][4] * _u2(i - 1, j, nz - 5) + - phdz4r[k][3] * _u2(i - 1, j, nz - 4) + - phdz4r[k][2] * _u2(i - 1, j, nz - 3) + - phdz4r[k][1] * _u2(i - 1, j, nz - 2) + - phdz4r[k][0] * _u2(i - 1, j, nz - 1)) + - phx4[3] * _f1_2(i + 1, j) * - (phdz4r[k][8] * _u2(i + 1, j, nz - 9) + - phdz4r[k][7] * _u2(i + 1, j, nz - 8) + - phdz4r[k][6] * _u2(i + 1, j, nz - 7) + - phdz4r[k][5] * _u2(i + 1, j, nz - 6) + - phdz4r[k][4] * _u2(i + 1, j, nz - 5) + - phdz4r[k][3] * _u2(i + 1, j, nz - 4) + - phdz4r[k][2] * _u2(i + 1, j, nz - 3) + - phdz4r[k][1] * _u2(i + 1, j, nz - 2) + - phdz4r[k][0] * _u2(i + 1, j, nz - 1))) - - J12i * _g_c(nz - 1 - k) * - (py4[1] * _f2_1(i, j) * - (phdz4r[k][8] * _u1(i, j, nz - 9) + - phdz4r[k][7] * _u1(i, j, nz - 8) + - phdz4r[k][6] * _u1(i, j, nz - 7) + - phdz4r[k][5] * _u1(i, j, nz - 6) + - phdz4r[k][4] * _u1(i, j, nz - 5) + - phdz4r[k][3] * _u1(i, j, nz - 4) + - phdz4r[k][2] * _u1(i, j, nz - 3) + - phdz4r[k][1] * _u1(i, j, nz - 2) + - phdz4r[k][0] * _u1(i, j, nz - 1)) + - py4[0] * _f2_1(i, j - 1) * - (phdz4r[k][8] * _u1(i, j - 1, nz - 9) + - phdz4r[k][7] * _u1(i, j - 1, nz - 8) + - phdz4r[k][6] * _u1(i, j - 1, nz - 7) + - phdz4r[k][5] * _u1(i, j - 1, nz - 6) + - phdz4r[k][4] * _u1(i, j - 1, nz - 5) + - phdz4r[k][3] * _u1(i, j - 1, nz - 4) + - phdz4r[k][2] * _u1(i, j - 1, nz - 3) + - phdz4r[k][1] * _u1(i, j - 1, nz - 2) + - phdz4r[k][0] * _u1(i, j - 1, nz - 1)) + - py4[2] * _f2_1(i, j + 1) * - (phdz4r[k][8] * _u1(i, j + 1, nz - 9) + - phdz4r[k][7] * _u1(i, j + 1, nz - 8) + - phdz4r[k][6] * _u1(i, j + 1, nz - 7) + - phdz4r[k][5] * _u1(i, j + 1, nz - 6) + - phdz4r[k][4] * _u1(i, j + 1, nz - 5) + - phdz4r[k][3] * _u1(i, j + 1, nz - 4) + - phdz4r[k][2] * _u1(i, j + 1, nz - 3) + - phdz4r[k][1] * _u1(i, j + 1, nz - 2) + - phdz4r[k][0] * _u1(i, j + 1, nz - 1)) + - py4[3] * _f2_1(i, j + 2) * - (phdz4r[k][8] * _u1(i, j + 2, nz - 9) + - phdz4r[k][7] * _u1(i, j + 2, nz - 8) + - phdz4r[k][6] * _u1(i, j + 2, nz - 7) + - phdz4r[k][5] * _u1(i, j + 2, nz - 6) + - phdz4r[k][4] * _u1(i, j + 2, nz - 5) + - phdz4r[k][3] * _u1(i, j + 2, nz - 4) + - phdz4r[k][2] * _u1(i, j + 2, nz - 3) + - phdz4r[k][1] * _u1(i, j + 2, nz - 2) + - phdz4r[k][0] * _u1(i, j + 2, nz - 1))))) * - f_dcrj; - _s13(i, j, nz - 1 - k) = - (a * _s13(i, j, nz - 1 - k) + - mu13 * (dhx4[2] * _u3(i, j, nz - 1 - k) + - dhx4[0] * _u3(i - 2, j, nz - 1 - k) + - dhx4[1] * _u3(i - 1, j, nz - 1 - k) + - dhx4[3] * _u3(i + 1, j, nz - 1 - k) + - J13i * (dz4r[k][6] * _u1(i, j, nz - 7) + - dz4r[k][5] * _u1(i, j, nz - 6) + - dz4r[k][4] * _u1(i, j, nz - 5) + - dz4r[k][3] * _u1(i, j, nz - 4) + - dz4r[k][2] * _u1(i, j, nz - 3) + - dz4r[k][1] * _u1(i, j, nz - 2) + - dz4r[k][0] * _u1(i, j, nz - 1)) - - J13i * _g(nz - 1 - k) * - (phx4[2] * _f1_c(i, j) * - (pdhz4r[k][8] * _u3(i, j, nz - 9) + - pdhz4r[k][7] * _u3(i, j, nz - 8) + - pdhz4r[k][6] * _u3(i, j, nz - 7) + - pdhz4r[k][5] * _u3(i, j, nz - 6) + - pdhz4r[k][4] * _u3(i, j, nz - 5) + - pdhz4r[k][3] * _u3(i, j, nz - 4) + - pdhz4r[k][2] * _u3(i, j, nz - 3) + - pdhz4r[k][1] * _u3(i, j, nz - 2) + - pdhz4r[k][0] * _u3(i, j, nz - 1)) + - phx4[0] * _f1_c(i - 2, j) * - (pdhz4r[k][8] * _u3(i - 2, j, nz - 9) + - pdhz4r[k][7] * _u3(i - 2, j, nz - 8) + - pdhz4r[k][6] * _u3(i - 2, j, nz - 7) + - pdhz4r[k][5] * _u3(i - 2, j, nz - 6) + - pdhz4r[k][4] * _u3(i - 2, j, nz - 5) + - pdhz4r[k][3] * _u3(i - 2, j, nz - 4) + - pdhz4r[k][2] * _u3(i - 2, j, nz - 3) + - pdhz4r[k][1] * _u3(i - 2, j, nz - 2) + - pdhz4r[k][0] * _u3(i - 2, j, nz - 1)) + - phx4[1] * _f1_c(i - 1, j) * - (pdhz4r[k][8] * _u3(i - 1, j, nz - 9) + - pdhz4r[k][7] * _u3(i - 1, j, nz - 8) + - pdhz4r[k][6] * _u3(i - 1, j, nz - 7) + - pdhz4r[k][5] * _u3(i - 1, j, nz - 6) + - pdhz4r[k][4] * _u3(i - 1, j, nz - 5) + - pdhz4r[k][3] * _u3(i - 1, j, nz - 4) + - pdhz4r[k][2] * _u3(i - 1, j, nz - 3) + - pdhz4r[k][1] * _u3(i - 1, j, nz - 2) + - pdhz4r[k][0] * _u3(i - 1, j, nz - 1)) + - phx4[3] * _f1_c(i + 1, j) * - (pdhz4r[k][8] * _u3(i + 1, j, nz - 9) + - pdhz4r[k][7] * _u3(i + 1, j, nz - 8) + - pdhz4r[k][6] * _u3(i + 1, j, nz - 7) + - pdhz4r[k][5] * _u3(i + 1, j, nz - 6) + - pdhz4r[k][4] * _u3(i + 1, j, nz - 5) + - pdhz4r[k][3] * _u3(i + 1, j, nz - 4) + - pdhz4r[k][2] * _u3(i + 1, j, nz - 3) + - pdhz4r[k][1] * _u3(i + 1, j, nz - 2) + - pdhz4r[k][0] * _u3(i + 1, j, nz - 1))))) * - f_dcrj; - _s23(i, j, nz - 1 - k) = - (a * _s23(i, j, nz - 1 - k) + - mu23 * (dy4[1] * _u3(i, j, nz - 1 - k) + - dy4[0] * _u3(i, j - 1, nz - 1 - k) + - dy4[2] * _u3(i, j + 1, nz - 1 - k) + - dy4[3] * _u3(i, j + 2, nz - 1 - k) + - J23i * (dz4r[k][6] * _u2(i, j, nz - 7) + - dz4r[k][5] * _u2(i, j, nz - 6) + - dz4r[k][4] * _u2(i, j, nz - 5) + - dz4r[k][3] * _u2(i, j, nz - 4) + - dz4r[k][2] * _u2(i, j, nz - 3) + - dz4r[k][1] * _u2(i, j, nz - 2) + - dz4r[k][0] * _u2(i, j, nz - 1)) - - J23i * _g(nz - 1 - k) * - (py4[1] * _f2_c(i, j) * - (pdhz4r[k][8] * _u3(i, j, nz - 9) + - pdhz4r[k][7] * _u3(i, j, nz - 8) + - pdhz4r[k][6] * _u3(i, j, nz - 7) + - pdhz4r[k][5] * _u3(i, j, nz - 6) + - pdhz4r[k][4] * _u3(i, j, nz - 5) + - pdhz4r[k][3] * _u3(i, j, nz - 4) + - pdhz4r[k][2] * _u3(i, j, nz - 3) + - pdhz4r[k][1] * _u3(i, j, nz - 2) + - pdhz4r[k][0] * _u3(i, j, nz - 1)) + - py4[0] * _f2_c(i, j - 1) * - (pdhz4r[k][8] * _u3(i, j - 1, nz - 9) + - pdhz4r[k][7] * _u3(i, j - 1, nz - 8) + - pdhz4r[k][6] * _u3(i, j - 1, nz - 7) + - pdhz4r[k][5] * _u3(i, j - 1, nz - 6) + - pdhz4r[k][4] * _u3(i, j - 1, nz - 5) + - pdhz4r[k][3] * _u3(i, j - 1, nz - 4) + - pdhz4r[k][2] * _u3(i, j - 1, nz - 3) + - pdhz4r[k][1] * _u3(i, j - 1, nz - 2) + - pdhz4r[k][0] * _u3(i, j - 1, nz - 1)) + - py4[2] * _f2_c(i, j + 1) * - (pdhz4r[k][8] * _u3(i, j + 1, nz - 9) + - pdhz4r[k][7] * _u3(i, j + 1, nz - 8) + - pdhz4r[k][6] * _u3(i, j + 1, nz - 7) + - pdhz4r[k][5] * _u3(i, j + 1, nz - 6) + - pdhz4r[k][4] * _u3(i, j + 1, nz - 5) + - pdhz4r[k][3] * _u3(i, j + 1, nz - 4) + - pdhz4r[k][2] * _u3(i, j + 1, nz - 3) + - pdhz4r[k][1] * _u3(i, j + 1, nz - 2) + - pdhz4r[k][0] * _u3(i, j + 1, nz - 1)) + - py4[3] * _f2_c(i, j + 2) * - (pdhz4r[k][8] * _u3(i, j + 2, nz - 9) + - pdhz4r[k][7] * _u3(i, j + 2, nz - 8) + - pdhz4r[k][6] * _u3(i, j + 2, nz - 7) + - pdhz4r[k][5] * _u3(i, j + 2, nz - 6) + - pdhz4r[k][4] * _u3(i, j + 2, nz - 5) + - pdhz4r[k][3] * _u3(i, j + 2, nz - 4) + - pdhz4r[k][2] * _u3(i, j + 2, nz - 3) + - pdhz4r[k][1] * _u3(i, j + 2, nz - 2) + - pdhz4r[k][0] * _u3(i, j + 2, nz - 1))))) * - f_dcrj; - } -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c -#undef _f_1 -#undef _f_2 -#undef _f_c -#undef _g -#undef _g3 -#undef _g3_c -#undef _g_c -#undef _lami -#undef _mui -#undef _s11 -#undef _s12 -#undef _s13 -#undef _s22 -#undef _s23 -#undef _s33 -#undef _u1 -#undef _u2 -#undef _u3 -} - -__global__ void dtopo_init_material_111(float *__restrict__ lami, - float *__restrict__ mui, - float *__restrict__ rho, const int nx, - const int ny, const int nz) { - const int i = threadIdx.z + blockIdx.z * blockDim.z; - if (i >= nx) - return; - const int j = threadIdx.y + blockIdx.y * blockDim.y; - if (j >= ny) - return; - const int k = threadIdx.x + blockIdx.x * blockDim.x; - if (k >= nz) - return; -#define _lami(i, j, k) lami[(i)*ny * nz + (j)*nz + (k)] -#define _mui(i, j, k) mui[(i)*ny * nz + (j)*nz + (k)] -#define _rho(i, j, k) rho[(i)*ny * nz + (j)*nz + (k)] - _rho(i, j, k) = 1.0; - _lami(i, j, k) = 1.0; - _mui(i, j, k) = 1.0; -#undef _lami -#undef _mui -#undef _rho -} diff --git a/src/topography/kernels/stress_attenuation.cu b/src/topography/kernels/stress.cu similarity index 95% rename from src/topography/kernels/stress_attenuation.cu rename to src/topography/kernels/stress.cu index a1eba47..d436b60 100644 --- a/src/topography/kernels/stress_attenuation.cu +++ b/src/topography/kernels/stress.cu @@ -3,7 +3,6 @@ #include #include -#include #include #define CURVILINEAR #define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] @@ -79,14 +78,14 @@ dtopo_str_111(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri _prec* __restrict__ u1, _prec* __restrict__ v1, _prec* __restrict__ w1, - const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, + const _prec *__restrict__ f, + const _prec *__restrict__ f1_1, const _prec *__restrict__ f1_2, + const _prec *__restrict__ f1_c, const _prec *__restrict__ f2_1, + const _prec *__restrict__ f2_2, const _prec *__restrict__ f2_c, + const _prec *__restrict__ f_1, const _prec *__restrict__ f_2, + const _prec *__restrict__ f_c, const _prec *__restrict__ g, + const _prec *__restrict__ g3, const _prec *__restrict__ g3_c, + const _prec *__restrict__ g_c, const _prec *__restrict__ lam, const _prec *__restrict__ mu, const _prec *__restrict__ qp, @@ -119,31 +118,31 @@ dtopo_str_111(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri _prec f_xx, f_yy, f_zz, f_xy, f_xz, f_yz; int maxk, mink; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec phdz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; @@ -337,7 +336,7 @@ dtopo_str_111(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri #ifdef CURVILINEAR - float Jii = _f_c(i, j) * _g3_c(k); + _prec Jii = _f_c(i, j) * _g3_c(k); Jii = 1.0 * 1.0 / Jii; vs1 = @@ -468,7 +467,7 @@ dtopo_str_111(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri // xy #ifdef CURVILINEAR - float J12i = _f(i, j) * _g3_c(k + 6); + _prec J12i = _f(i, j) * _g3_c(k + 6); J12i = 1.0 / J12i; vs1 = @@ -547,7 +546,7 @@ dtopo_str_111(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri // xz #ifdef CURVILINEAR - float J13i = _f_1(i, j) * _g3(k); + _prec J13i = _f_1(i, j) * _g3(k); J13i = 1.0 * 1.0 / J13i; vs1 = J13i * (dz4[1] * _u1(i, j, k) + dz4[0] * _u1(i, j, k - 1) + @@ -597,7 +596,7 @@ dtopo_str_111(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri // yz #ifdef CURVILINEAR - float J23i = _f_2(i, j) * _g3(k); + _prec J23i = _f_2(i, j) * _g3(k); J23i = 1.0 * 1.0 / J23i; vs1 = J23i * (dz4[1] * _v1(i, j, k) + dz4[0] * _v1(i, j, k - 1) + dz4[2] * _v1(i, j, k + 1) + dz4[3] * _v1(i, j, k + 2)); @@ -675,14 +674,14 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri _prec* __restrict__ u1, _prec* __restrict__ v1, _prec* __restrict__ w1, - const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, + const _prec *__restrict__ f, + const _prec *__restrict__ f1_1, const _prec *__restrict__ f1_2, + const _prec *__restrict__ f1_c, const _prec *__restrict__ f2_1, + const _prec *__restrict__ f2_2, const _prec *__restrict__ f2_c, + const _prec *__restrict__ f_1, const _prec *__restrict__ f_2, + const _prec *__restrict__ f_c, const _prec *__restrict__ g, + const _prec *__restrict__ g3, const _prec *__restrict__ g3_c, + const _prec *__restrict__ g_c, const _prec *__restrict__ lam, const _prec *__restrict__ mu, const _prec *__restrict__ qp, @@ -715,15 +714,15 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri _prec f_xx, f_yy, f_zz, f_xy, f_xz, f_yz; int maxk, mink; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec phdz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float phdz4r[6][9] = { + const _prec phdz4r[6][9] = { {1.5373923010673116, -1.0330083346742178, -0.6211677623382129, -0.0454110758451345, 0.1680934225988761, -0.0058985508086226, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -742,7 +741,7 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri {0.0009619461344193, 0.0035553215968974, -0.0124936029037323, -0.0773639466787397, 0.6736586580761996, 0.0002232904416222, -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const float dz4r[6][7] = { + const _prec dz4r[6][7] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -761,27 +760,27 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, 0.0416666666666667}}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float dhz4r[6][8] = { + const _prec dhz4r[6][8] = { {0.0000000000000000, 1.4511412472637157, -1.8534237417911470, 0.3534237417911469, 0.0488587527362844, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -800,7 +799,7 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, 0.0416666666666667}}; - const float pdhz4r[6][9] = { + const _prec pdhz4r[6][9] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1015,10 +1014,10 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri #define _g3(k) g3[(k) + align] #ifdef CURVILINEAR - float Jii = _f_c(i, j) * _g3_c(nz - 1 - kc - 6); + _prec Jii = _f_c(i, j) * _g3_c(nz - 1 - kc - 6); Jii = 1.0 * 1.0 / Jii; // xx, yy, zz - float vs1 = dx4[1] * _u1(i, j, nz - 1 - kc - 6) + + _prec vs1 = dx4[1] * _u1(i, j, nz - 1 - kc - 6) + dx4[0] * _u1(i - 1, j, nz - 1 - kc - 6) + dx4[2] * _u1(i + 1, j, nz - 1 - kc - 6) + dx4[3] * _u1(i + 2, j, nz - 1 - kc - 6) - @@ -1063,7 +1062,7 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri phdz4r[kb][2] * _u1(i + 2, j, nz - 3) + phdz4r[kb][1] * _u1(i + 2, j, nz - 2) + phdz4r[kb][0] * _u1(i + 2, j, nz - 1))); - float vs2 = dhy4[2] * _v1(i, j, nz - 1 - kc - 6) + + _prec vs2 = dhy4[2] * _v1(i, j, nz - 1 - kc - 6) + dhy4[0] * _v1(i, j - 2, nz - 1 - kc - 6) + dhy4[1] * _v1(i, j - 1, nz - 1 - kc - 6) + dhy4[3] * _v1(i, j + 1, nz - 1 - kc - 6) - @@ -1108,7 +1107,7 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri phdz4r[kb][2] * _v1(i, j + 1, nz - 3) + phdz4r[kb][1] * _v1(i, j + 1, nz - 2) + phdz4r[kb][0] * _v1(i, j + 1, nz - 1))); - float vs3 = + _prec vs3 = Jii * (dhz4r[kb][7] * _w1(i, j, nz - 8) + dhz4r[kb][6] * _w1(i, j, nz - 7) + dhz4r[kb][5] * _w1(i, j, nz - 6) + dhz4r[kb][4] * _w1(i, j, nz - 5) + dhz4r[kb][3] * _w1(i, j, nz - 4) + dhz4r[kb][2] * _w1(i, j, nz - 3) + @@ -1146,7 +1145,7 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri // xy #ifdef CURVILINEAR - float J12i = _f(i, j) * _g3_c(nz - 1 - kc - 6); + _prec J12i = _f(i, j) * _g3_c(nz - 1 - kc - 6); J12i = 1.0 * 1.0 / J12i; vs1 = dy4[1] * _u1(i, j, nz - 1 - kc - 6) + dy4[0] * _u1(i, j - 1, nz - 1 - kc - 6) + @@ -1251,7 +1250,7 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri // xz #ifdef CURVILINEAR - float J13i = _f_1(i, j) * _g3(nz - 1 - kc - 6); + _prec J13i = _f_1(i, j) * _g3(nz - 1 - kc - 6); J13i = 1.0 * 1.0 / J13i; vs1 = J13i * (dz4r[kb][6] * _u1(i, j, nz - 7) + dz4r[kb][5] * _u1(i, j, nz - 6) + @@ -1316,7 +1315,7 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri // yz #ifdef CURVILINEAR - float J23i = _f_2(i, j) * _g3(nz - 1 - kc - 6); + _prec J23i = _f_2(i, j) * _g3(nz - 1 - kc - 6); J23i = 1.0 * 1.0 / J23i; vs1 = J23i * (dz4r[kb][6] * _v1(i, j, nz - 7) + dz4r[kb][5] * _v1(i, j, nz - 6) + @@ -1416,22 +1415,22 @@ dtopo_str_112(_prec* __restrict__ xx, _prec* __restrict__ yy, _prec* __restri // Kernel functions without attenuation __global__ void dtopo_str_110( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, + _prec *__restrict__ s11, _prec *__restrict__ s12, _prec *__restrict__ s13, + _prec *__restrict__ s22, _prec *__restrict__ s23, _prec *__restrict__ s33, + _prec *__restrict__ u1, _prec *__restrict__ u2, _prec *__restrict__ u3, + const _prec *__restrict__ dcrjx, const _prec *__restrict__ dcrjy, + const _prec *__restrict__ dcrjz, const _prec *__restrict__ f, + const _prec *__restrict__ f1_1, const _prec *__restrict__ f1_2, + const _prec *__restrict__ f1_c, const _prec *__restrict__ f2_1, + const _prec *__restrict__ f2_2, const _prec *__restrict__ f2_c, + const _prec *__restrict__ f_1, const _prec *__restrict__ f_2, + const _prec *__restrict__ f_c, const _prec *__restrict__ g, + const _prec *__restrict__ g3, const _prec *__restrict__ g3_c, + const _prec *__restrict__ g_c, const _prec *__restrict__ lami, + const _prec *__restrict__ mui, const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej) { - const float phz4l[6][7] = { + const _prec phz4l[6][7] = { {0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1450,11 +1449,11 @@ __global__ void dtopo_str_110( {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhz4l[6][7] = { + const _prec dhz4l[6][7] = { {-1.4511412472637157, 1.8534237417911470, -0.3534237417911469, -0.0488587527362844, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1473,7 +1472,7 @@ __global__ void dtopo_str_110( {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}}; - const float phdz4l[6][9] = { + const _prec phdz4l[6][9] = { {-1.5373923010673116, 1.0330083346742178, 0.6211677623382129, 0.0454110758451345, -0.1680934225988761, 0.0058985508086226, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1492,19 +1491,19 @@ __global__ void dtopo_str_110( {-0.0009619461344193, -0.0035553215968974, 0.0124936029037323, 0.0773639466787397, -0.6736586580761996, -0.0002232904416222, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dz4l[6][8] = { + const _prec dz4l[6][8] = { {-1.7779989465546748, 1.3337480247900155, 0.7775013168066564, -0.3332503950419969, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1523,7 +1522,7 @@ __global__ void dtopo_str_110( {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}}; - const float pdhz4l[6][9] = { + const _prec pdhz4l[6][9] = { {-1.5886075042755416, 2.2801810182668110, -0.8088980291471827, 0.1316830205960989, -0.0143585054401857, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1628,15 +1627,15 @@ __global__ void dtopo_str_110( u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] for (int i = bi; i < ei; ++i) { - float Jii = _f_c(i, j) * _g3_c(k); + _prec Jii = _f_c(i, j) * _g3_c(k); Jii = 1.0 * 1.0 / Jii; - float J12i = _f(i, j) * _g3_c(k); + _prec J12i = _f(i, j) * _g3_c(k); J12i = 1.0 * 1.0 / J12i; - float J13i = _f_1(i, j) * _g3(k); + _prec J13i = _f_1(i, j) * _g3(k); J13i = 1.0 * 1.0 / J13i; - float J23i = _f_2(i, j) * _g3(k); + _prec J23i = _f_2(i, j) * _g3(k); J23i = 1.0 * 1.0 / J23i; - float lam = + _prec lam = nu * 1.0 / (phz4l[k][0] * (phy4[2] * @@ -1750,7 +1749,7 @@ __global__ void dtopo_str_110( px4[0] * _lami(i - 1, j + 1, 6) + px4[2] * _lami(i + 1, j + 1, 6) + px4[3] * _lami(i + 2, j + 1, 6)))); - float twomu = + _prec twomu = 2 * nu * 1.0 / (phz4l[k][0] * (phy4[2] * @@ -1864,18 +1863,18 @@ __global__ void dtopo_str_110( (px4[1] * _mui(i, j + 1, 6) + px4[0] * _mui(i - 1, j + 1, 6) + px4[2] * _mui(i + 1, j + 1, 6) + px4[3] * _mui(i + 2, j + 1, 6)))); - float mu12 = nu * 1.0 / + _prec mu12 = nu * 1.0 / (phz4l[k][0] * _mui(i, j, 0) + phz4l[k][1] * _mui(i, j, 1) + phz4l[k][2] * _mui(i, j, 2) + phz4l[k][3] * _mui(i, j, 3) + phz4l[k][4] * _mui(i, j, 4) + phz4l[k][5] * _mui(i, j, 5) + phz4l[k][6] * _mui(i, j, 6)); - float mu13 = nu * 1.0 / + _prec mu13 = nu * 1.0 / (phy4[2] * _mui(i, j, k) + phy4[0] * _mui(i, j - 2, k) + phy4[1] * _mui(i, j - 1, k) + phy4[3] * _mui(i, j + 1, k)); - float mu23 = nu * 1.0 / + _prec mu23 = nu * 1.0 / (px4[1] * _mui(i, j, k) + px4[0] * _mui(i - 1, j, k) + px4[2] * _mui(i + 1, j, k) + px4[3] * _mui(i + 2, j, k)); - float div = + _prec div = dhy4[2] * _u2(i, j, k) + dhy4[0] * _u2(i, j - 2, k) + dhy4[1] * _u2(i, j - 1, k) + dhy4[3] * _u2(i, j + 1, k) + dx4[1] * _u1(i, j, k) + dx4[0] * _u1(i - 1, j, k) + @@ -1958,7 +1957,7 @@ __global__ void dtopo_str_110( phdz4l[k][6] * _u1(i + 2, j, 6) + phdz4l[k][7] * _u1(i + 2, j, 7) + phdz4l[k][8] * _u1(i + 2, j, 8))); - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k); _s11(i, j, k) = (a * _s11(i, j, k) + lam * div + twomu * (dx4[1] * _u1(i, j, k) + dx4[0] * _u1(i - 1, j, k) + @@ -2274,48 +2273,48 @@ __global__ void dtopo_str_110( } __global__ void dtopo_str_111( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, + _prec *__restrict__ s11, _prec *__restrict__ s12, _prec *__restrict__ s13, + _prec *__restrict__ s22, _prec *__restrict__ s23, _prec *__restrict__ s33, + _prec *__restrict__ u1, _prec *__restrict__ u2, _prec *__restrict__ u3, + const _prec *__restrict__ dcrjx, const _prec *__restrict__ dcrjy, + const _prec *__restrict__ dcrjz, const _prec *__restrict__ f, + const _prec *__restrict__ f1_1, const _prec *__restrict__ f1_2, + const _prec *__restrict__ f1_c, const _prec *__restrict__ f2_1, + const _prec *__restrict__ f2_2, const _prec *__restrict__ f2_c, + const _prec *__restrict__ f_1, const _prec *__restrict__ f_2, + const _prec *__restrict__ f_c, const _prec *__restrict__ g, + const _prec *__restrict__ g3, const _prec *__restrict__ g3_c, + const _prec *__restrict__ g_c, const _prec *__restrict__ lami, + const _prec *__restrict__ mui, const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej) { - const float phz4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phz4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec phdz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; @@ -2406,15 +2405,15 @@ __global__ void dtopo_str_111( (2 * align + nz) * ((j) + ngsl + 2)] for (int i = bi; i < ei; ++i) { - float Jii = _f_c(i, j) * _g3_c(k + 6); + _prec Jii = _f_c(i, j) * _g3_c(k + 6); Jii = 1.0 * 1.0 / Jii; - float J12i = _f(i, j) * _g3_c(k + 6); + _prec J12i = _f(i, j) * _g3_c(k + 6); J12i = 1.0 * 1.0 / J12i; - float J13i = _f_1(i, j) * _g3(k + 6); + _prec J13i = _f_1(i, j) * _g3(k + 6); J13i = 1.0 * 1.0 / J13i; - float J23i = _f_2(i, j) * _g3(k + 6); + _prec J23i = _f_2(i, j) * _g3(k + 6); J23i = 1.0 * 1.0 / J23i; - float lam = nu * 1.0 / + _prec lam = nu * 1.0 / (phz4[0] * (phy4[2] * (px4[1] * _lami(i, j, k + 4) + px4[0] * _lami(i - 1, j, k + 4) + px4[2] * _lami(i + 1, j, k + 4) + @@ -2479,7 +2478,7 @@ __global__ void dtopo_str_111( px4[0] * _lami(i - 1, j + 1, k + 7) + px4[2] * _lami(i + 1, j + 1, k + 7) + px4[3] * _lami(i + 2, j + 1, k + 7)))); - float twomu = 2 * nu * 1.0 / + _prec twomu = 2 * nu * 1.0 / (phz4[0] * (phy4[2] * (px4[1] * _mui(i, j, k + 4) + px4[0] * _mui(i - 1, j, k + 4) + px4[2] * _mui(i + 1, j, k + 4) + @@ -2544,18 +2543,18 @@ __global__ void dtopo_str_111( px4[0] * _mui(i - 1, j + 1, k + 7) + px4[2] * _mui(i + 1, j + 1, k + 7) + px4[3] * _mui(i + 2, j + 1, k + 7)))); - float mu12 = nu * 1.0 / + _prec mu12 = nu * 1.0 / (phz4[0] * _mui(i, j, k + 4) + phz4[1] * _mui(i, j, k + 5) + phz4[2] * _mui(i, j, k + 6) + phz4[3] * _mui(i, j, k + 7)); - float mu13 = + _prec mu13 = nu * 1.0 / (phy4[2] * _mui(i, j, k + 6) + phy4[0] * _mui(i, j - 2, k + 6) + phy4[1] * _mui(i, j - 1, k + 6) + phy4[3] * _mui(i, j + 1, k + 6)); - float mu23 = + _prec mu23 = nu * 1.0 / (px4[1] * _mui(i, j, k + 6) + px4[0] * _mui(i - 1, j, k + 6) + px4[2] * _mui(i + 1, j, k + 6) + px4[3] * _mui(i + 2, j, k + 6)); - float div = + _prec div = dhy4[2] * _u2(i, j, k + 6) + dhy4[0] * _u2(i, j - 2, k + 6) + dhy4[1] * _u2(i, j - 1, k + 6) + dhy4[3] * _u2(i, j + 1, k + 6) + dx4[1] * _u1(i, j, k + 6) + dx4[0] * _u1(i - 1, j, k + 6) + @@ -2622,7 +2621,7 @@ __global__ void dtopo_str_111( phdz4[4] * _u1(i + 2, j, k + 7) + phdz4[5] * _u1(i + 2, j, k + 8) + phdz4[6] * _u1(i + 2, j, k + 9))); - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k + 6); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k + 6); _s11(i, j, k + 6) = (a * _s11(i, j, k + 6) + lam * div + twomu * @@ -2889,22 +2888,22 @@ __global__ void dtopo_str_111( } __global__ void dtopo_str_112( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, + _prec *__restrict__ s11, _prec *__restrict__ s12, _prec *__restrict__ s13, + _prec *__restrict__ s22, _prec *__restrict__ s23, _prec *__restrict__ s33, + _prec *__restrict__ u1, _prec *__restrict__ u2, _prec *__restrict__ u3, + const _prec *__restrict__ dcrjx, const _prec *__restrict__ dcrjy, + const _prec *__restrict__ dcrjz, const _prec *__restrict__ f, + const _prec *__restrict__ f1_1, const _prec *__restrict__ f1_2, + const _prec *__restrict__ f1_c, const _prec *__restrict__ f2_1, + const _prec *__restrict__ f2_2, const _prec *__restrict__ f2_c, + const _prec *__restrict__ f_1, const _prec *__restrict__ f_2, + const _prec *__restrict__ f_c, const _prec *__restrict__ g, + const _prec *__restrict__ g3, const _prec *__restrict__ g3_c, + const _prec *__restrict__ g_c, const _prec *__restrict__ lami, + const _prec *__restrict__ mui, const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej) { - const float phz4r[6][8] = { + const _prec phz4r[6][8] = { {0.0000000000000000, 0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2923,11 +2922,11 @@ __global__ void dtopo_str_112( {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhz4r[6][8] = { + const _prec dhz4r[6][8] = { {0.0000000000000000, 1.4511412472637157, -1.8534237417911470, 0.3534237417911469, 0.0488587527362844, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2946,7 +2945,7 @@ __global__ void dtopo_str_112( {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, 0.0416666666666667}}; - const float phdz4r[6][9] = { + const _prec phdz4r[6][9] = { {1.5373923010673116, -1.0330083346742178, -0.6211677623382129, -0.0454110758451345, 0.1680934225988761, -0.0058985508086226, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2965,19 +2964,19 @@ __global__ void dtopo_str_112( {0.0009619461344193, 0.0035553215968974, -0.0124936029037323, -0.0773639466787397, 0.6736586580761996, 0.0002232904416222, -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dz4r[6][7] = { + const _prec dz4r[6][7] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2996,7 +2995,7 @@ __global__ void dtopo_str_112( {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, 0.0416666666666667}}; - const float pdhz4r[6][9] = { + const _prec pdhz4r[6][9] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -3101,15 +3100,15 @@ __global__ void dtopo_str_112( u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] for (int i = bi; i < ei; ++i) { - float Jii = _f_c(i, j) * _g3_c(nz - 1 - k); + _prec Jii = _f_c(i, j) * _g3_c(nz - 1 - k); Jii = 1.0 * 1.0 / Jii; - float J12i = _f(i, j) * _g3_c(nz - 1 - k); + _prec J12i = _f(i, j) * _g3_c(nz - 1 - k); J12i = 1.0 * 1.0 / J12i; - float J13i = _f_1(i, j) * _g3(nz - 1 - k); + _prec J13i = _f_1(i, j) * _g3(nz - 1 - k); J13i = 1.0 * 1.0 / J13i; - float J23i = _f_2(i, j) * _g3(nz - 1 - k); + _prec J23i = _f_2(i, j) * _g3(nz - 1 - k); J23i = 1.0 * 1.0 / J23i; - float lam = + _prec lam = nu * 1.0 / (phz4r[k][7] * (phy4[2] * (px4[1] * _lami(i, j, nz - 8) + px4[0] * _lami(i - 1, j, nz - 8) + @@ -3239,7 +3238,7 @@ __global__ void dtopo_str_112( px4[0] * _lami(i - 1, j + 1, nz - 1) + px4[2] * _lami(i + 1, j + 1, nz - 1) + px4[3] * _lami(i + 2, j + 1, nz - 1)))); - float twomu = + _prec twomu = 2 * nu * 1.0 / (phz4r[k][7] * (phy4[2] * (px4[1] * _mui(i, j, nz - 8) + px4[0] * _mui(i - 1, j, nz - 8) + @@ -3369,23 +3368,23 @@ __global__ void dtopo_str_112( px4[0] * _mui(i - 1, j + 1, nz - 1) + px4[2] * _mui(i + 1, j + 1, nz - 1) + px4[3] * _mui(i + 2, j + 1, nz - 1)))); - float mu12 = + _prec mu12 = nu * 1.0 / (phz4r[k][7] * _mui(i, j, nz - 8) + phz4r[k][6] * _mui(i, j, nz - 7) + phz4r[k][5] * _mui(i, j, nz - 6) + phz4r[k][4] * _mui(i, j, nz - 5) + phz4r[k][3] * _mui(i, j, nz - 4) + phz4r[k][2] * _mui(i, j, nz - 3) + phz4r[k][1] * _mui(i, j, nz - 2) + phz4r[k][0] * _mui(i, j, nz - 1)); - float mu13 = nu * 1.0 / + _prec mu13 = nu * 1.0 / (phy4[2] * _mui(i, j, nz - 1 - k) + phy4[0] * _mui(i, j - 2, nz - 1 - k) + phy4[1] * _mui(i, j - 1, nz - 1 - k) + phy4[3] * _mui(i, j + 1, nz - 1 - k)); - float mu23 = + _prec mu23 = nu * 1.0 / (px4[1] * _mui(i, j, nz - 1 - k) + px4[0] * _mui(i - 1, j, nz - 1 - k) + px4[2] * _mui(i + 1, j, nz - 1 - k) + px4[3] * _mui(i + 2, j, nz - 1 - k)); - float div = + _prec div = dhy4[2] * _u2(i, j, nz - 1 - k) + dhy4[0] * _u2(i, j - 2, nz - 1 - k) + dhy4[1] * _u2(i, j - 1, nz - 1 - k) + dhy4[3] * _u2(i, j + 1, nz - 1 - k) + dx4[1] * _u1(i, j, nz - 1 - k) + @@ -3480,7 +3479,7 @@ __global__ void dtopo_str_112( phdz4r[k][2] * _u1(i + 2, j, nz - 3) + phdz4r[k][1] * _u1(i + 2, j, nz - 2) + phdz4r[k][0] * _u1(i + 2, j, nz - 1))); - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(nz - 1 - k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(nz - 1 - k); _s11(i, j, nz - 1 - k) = (a * _s11(i, j, nz - 1 - k) + lam * div + twomu * (dx4[1] * _u1(i, j, nz - 1 - k) + @@ -3822,9 +3821,9 @@ __global__ void dtopo_str_112( #undef _u3 } -__global__ void dtopo_init_material_111(float *__restrict__ lami, - float *__restrict__ mui, - float *__restrict__ rho, const int nx, +__global__ void dtopo_init_material_111(_prec *__restrict__ lami, + _prec *__restrict__ mui, + _prec *__restrict__ rho, const int nx, const int ny, const int nz) { const int i = threadIdx.z + blockIdx.z * blockDim.z; if (i >= nx) diff --git a/src/topography/kernels/stress_index_unroll.cu b/src/topography/kernels/stress_index_unroll.cu index 4ffd5cd..a4ab210 100644 --- a/src/topography/kernels/stress_index_unroll.cu +++ b/src/topography/kernels/stress_index_unroll.cu @@ -13,6 +13,7 @@ #define _g(k) g[(k)] #define _g3(k) g3[(k)] +#define RSTRCT __restrict__ #define LDG(x) x template @@ -24,14 +25,14 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, _prec* RSTRCT u1, _prec* RSTRCT v1, _prec* RSTRCT w1, - const float *RSTRCT f, - const float *RSTRCT f1_1, const float *RSTRCT f1_2, - const float *RSTRCT f1_c, const float *RSTRCT f2_1, - const float *RSTRCT f2_2, const float *RSTRCT f2_c, - const float *RSTRCT f_1, const float *RSTRCT f_2, - const float *RSTRCT f_c, const float *RSTRCT g, - const float *RSTRCT g3, const float *RSTRCT g3_c, - const float *RSTRCT g_c, + const _prec *RSTRCT f, + const _prec *RSTRCT f1_1, const _prec *RSTRCT f1_2, + const _prec *RSTRCT f1_c, const _prec *RSTRCT f2_1, + const _prec *RSTRCT f2_2, const _prec *RSTRCT f2_c, + const _prec *RSTRCT f_1, const _prec *RSTRCT f_2, + const _prec *RSTRCT f_c, const _prec *RSTRCT g, + const _prec *RSTRCT g3, const _prec *RSTRCT g3_c, + const _prec *RSTRCT g_c, const _prec *RSTRCT lam, const _prec *RSTRCT mu, const _prec *RSTRCT qp, @@ -64,31 +65,31 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, register _prec f_w1, w1_im1, w1_im2, w1_ip1; _prec f_xx, f_yy, f_zz, f_xy, f_xz, f_yz; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec phdz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, -0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; @@ -99,20 +100,15 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, j0 = nb * (blockIdx.y * blockDim.y + threadIdx.y) + s_j; i = blockIdx.z * blockDim.z + threadIdx.z + s_i; - float rxx[nb][na], ryy[nb][na], rzz[nb][na]; - float rxy[nb][na], rxz[nb][na], ryz[nb][na]; - float rr1[nb][na], rr2[nb][na], rr3[nb][na]; - float rr4[nb][na], rr5[nb][na], rr6[nb][na]; + _prec rxx[nb][na], ryy[nb][na], rzz[nb][na]; + _prec rxy[nb][na], rxz[nb][na], ryz[nb][na]; + _prec rr1[nb][na], rr2[nb][na], rr3[nb][na]; + _prec rr4[nb][na], rr5[nb][na], rr6[nb][na]; if (i >= e_i) return; if (j0 >= e_j) return; - //if (k0 < dm_offset + align) - // return; - //if (k0 >= nz - 6 + align) - // return; - #pragma unroll for (int b = 0; b < nb; ++b) { @@ -370,7 +366,7 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, // xx, yy, zz - float Jii = _f_c(i, j) * _g3_c(k); + _prec Jii = _f_c(i, j) * _g3_c(k); Jii = 1.0 * 1.0 / Jii; vs1 = @@ -496,7 +492,7 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, rzz[b][a] = (f_zz + d_DT*f_rtmp)*f_dcrj; // xy - float J12i = _f(i, j) * _g3_c(k); + _prec J12i = _f(i, j) * _g3_c(k); J12i = 1.0 / J12i; vs1 = @@ -596,7 +592,7 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, // xz - float J13i = _f_1(i, j) * _g3(k); + _prec J13i = _f_1(i, j) * _g3(k); J13i = 1.0 * 1.0 / J13i; vs1 = J13i * (dz4[1] * u1[p0p0p0] + dz4[0] * u1[p0p0m1] + @@ -651,7 +647,7 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, // yz - float J23i = _f_2(i, j) * _g3(k); + _prec J23i = _f_2(i, j) * _g3(k); J23i = 1.0 * 1.0 / J23i; vs1 = J23i * (dz4[1] * v1[p0p0p0] + dz4[0] * v1[p0p0m1] + dz4[2] * v1[p0p0p1] + dz4[3] * v1[p0p0p2]); diff --git a/src/topography/kernels/stress_index_unroll.cuh b/src/topography/kernels/stress_index_unroll.cuh deleted file mode 100644 index 7740146..0000000 --- a/src/topography/kernels/stress_index_unroll.cuh +++ /dev/null @@ -1,741 +0,0 @@ -#define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f_1(i, j) f_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f_2(i, j) f_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f2_c(i, j) f2_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f1_1(i, j) f1_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f2_1(i, j) f2_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f2_2(i, j) f2_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f_c(i, j) f_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f1_c(i, j) f1_c[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _f1_2(i, j) f1_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] -#define _g3_c(k) g3_c[(k)] -#define _g_c(k) g_c[(k)] -#define _g(k) g[(k)] -#define _g3(k) g3[(k)] - -#define RSTRCT __restrict__ -#define LDG(x) x - -template -__launch_bounds__ (tx*ty*tz) -__global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, _prec* RSTRCT zz, - _prec* RSTRCT xy, _prec* RSTRCT xz, _prec* RSTRCT yz, - _prec* RSTRCT r1, _prec* RSTRCT r2, _prec* RSTRCT r3, - _prec* RSTRCT r4, _prec* RSTRCT r5, _prec* RSTRCT r6, - _prec* RSTRCT u1, - _prec* RSTRCT v1, - _prec* RSTRCT w1, - const float *RSTRCT f, - const float *RSTRCT f1_1, const float *RSTRCT f1_2, - const float *RSTRCT f1_c, const float *RSTRCT f2_1, - const float *RSTRCT f2_2, const float *RSTRCT f2_c, - const float *RSTRCT f_1, const float *RSTRCT f_2, - const float *RSTRCT f_c, const float *RSTRCT g, - const float *RSTRCT g3, const float *RSTRCT g3_c, - const float *RSTRCT g_c, - const _prec *RSTRCT lam, - const _prec *RSTRCT mu, - const _prec *RSTRCT qp, - const _prec *RSTRCT coeff, - const _prec *RSTRCT qs, - const _prec *RSTRCT dcrjx, - const _prec *RSTRCT dcrjy, - const _prec *RSTRCT dcrjz, - const _prec *RSTRCT d_vx1, - const _prec *RSTRCT d_vx2, - const int *RSTRCT d_ww, - const _prec *RSTRCT d_wwo, - int NX, int ny, int nz, int rankx, int ranky, - int nzt, int s_i, int e_i, int s_j, int e_j) -{ - register int i, j, k; - register int j0, k0; - register int pos, pos_ip1, pos_im2, pos_im1; - register int pos_km2, pos_km1, pos_kp1, pos_kp2; - register int pos_jm2, pos_jm1, pos_jp1, pos_jp2; - register int pos_ik1, pos_jk1, pos_ijk, pos_ijk1,f_ww; - register _prec vs1, vs2, vs3, a1, tmp, vx1,f_wwo; - register _prec xl, xm, xmu1, xmu2, xmu3; - register _prec qpa, h, h1, h2, h3; - register _prec qpaw,hw,h1w,h2w,h3w; - register _prec f_vx1, f_vx2, f_dcrj, f_r, f_dcrjy, f_dcrjz; - register _prec f_rtmp; - register _prec f_u1, u1_ip1, u1_ip2, u1_im1; - register _prec f_v1, v1_im1, v1_ip1, v1_im2; - register _prec f_w1, w1_im1, w1_im2, w1_ip1; - _prec f_xx, f_yy, f_zz, f_xy, f_xz, f_yz; - - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float phdz4[7] = {-0.0026041666666667, 0.0937500000000000, - -0.6796875000000000, -0.0000000000000000, - 0.6796875000000000, -0.0937500000000000, - 0.0026041666666667}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, - 0.5625000000000000, -0.0625000000000000}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, - 1.1250000000000000, -0.0416666666666667}; - const float pdhz4[7] = {-0.0026041666666667, 0.0937500000000000, - -0.6796875000000000, -0.0000000000000000, - 0.6796875000000000, -0.0937500000000000, - 0.0026041666666667}; - - - int dm_offset = 3; - k0 = na * (blockIdx.x * blockDim.x + threadIdx.x) + align; - j0 = nb * (blockIdx.y * blockDim.y + threadIdx.y) + s_j; - i = blockIdx.z * blockDim.z + threadIdx.z + s_i; - - float rxx[nb][na], ryy[nb][na], rzz[nb][na]; - float rxy[nb][na], rxz[nb][na], ryz[nb][na]; - float rr1[nb][na], rr2[nb][na], rr3[nb][na]; - float rr4[nb][na], rr5[nb][na], rr6[nb][na]; - - if (i >= e_i) - return; - if (j0 >= e_j) - return; - -#pragma unroll - for (int b = 0; b < nb; ++b) { - j = j0 + b; -#pragma unroll - for (int a = 0; a < na; ++a) { - k = k0 + a; - - pos = i*d_slice_1+j*d_yline_1+k; - - - - u1_ip1 = u1[pos+d_slice_2]; - f_u1 = u1[pos+d_slice_1]; - u1_im1 = u1[pos]; - f_v1 = v1[pos+d_slice_1]; - v1_im1 = v1[pos]; - v1_im2 = v1[pos-d_slice_1]; - f_w1 = w1[pos+d_slice_1]; - w1_im1 = w1[pos]; - w1_im2 = w1[pos-d_slice_1]; - f_dcrjz = dcrjz[k]; - f_dcrjy = dcrjy[j]; - - // i - 1, j, k - 3: k + 3 - int m2p0m3 = pos - d_slice_2 - 3; - int m2p0m2 = pos - d_slice_2 - 2; - int m2p0m1 = pos - d_slice_2 - 1; - int m2p0p0 = pos - d_slice_2 + 0; - int m2p0p1 = pos - d_slice_2 + 1; - int m2p0p2 = pos - d_slice_2 + 2; - int m2p0p3 = pos - d_slice_2 + 3; - - - // i - 1, j, k - 3: k + 3 - int m1p0m3 = pos - d_slice_1 - 3; - int m1p0m2 = pos - d_slice_1 - 2; - int m1p0m1 = pos - d_slice_1 - 1; - int m1p0p0 = pos - d_slice_1 + 0; - int m1p0p1 = pos - d_slice_1 + 1; - int m1p0p2 = pos - d_slice_1 + 2; - int m1p0p3 = pos - d_slice_1 + 3; - - // i, j, k - 3: k + 3 - int p0p0m3 = pos - 3; - int p0p0m2 = pos - 2; - int p0p0m1 = pos - 1; - int p0p0p0 = pos + 0; - int p0p0p1 = pos + 1; - int p0p0p2 = pos + 2; - int p0p0p3 = pos + 3; - - // i + 1, j, k - 3: k + 3 - int p1p0m3 = pos + d_slice_1 - 3; - int p1p0m2 = pos + d_slice_1 - 2; - int p1p0m1 = pos + d_slice_1 - 1; - int p1p0p0 = pos + d_slice_1 + 0; - int p1p0p1 = pos + d_slice_1 + 1; - int p1p0p2 = pos + d_slice_1 + 2; - int p1p0p3 = pos + d_slice_1 + 3; - - // i + 2, j, k - 3: k + 3 - int p2p0m3 = pos + d_slice_2 - 3; - int p2p0m2 = pos + d_slice_2 - 2; - int p2p0m1 = pos + d_slice_2 - 1; - int p2p0p0 = pos + d_slice_2 + 0; - int p2p0p1 = pos + d_slice_2 + 1; - int p2p0p2 = pos + d_slice_2 + 2; - int p2p0p3 = pos + d_slice_2 + 3; - - // i, j - 2, k - 3: k + 3 - int p0m2m3 = pos - d_yline_2 - 3; - int p0m2m2 = pos - d_yline_2 - 2; - int p0m2m1 = pos - d_yline_2 - 1; - int p0m2p0 = pos - d_yline_2 + 0; - int p0m2p1 = pos - d_yline_2 + 1; - int p0m2p2 = pos - d_yline_2 + 2; - int p0m2p3 = pos - d_yline_2 + 3; - - // i, j - 1, k - 3: k + 3 - int p0m1m3 = pos - d_yline_1 - 3; - int p0m1m2 = pos - d_yline_1 - 2; - int p0m1m1 = pos - d_yline_1 - 1; - int p0m1p0 = pos - d_yline_1 + 0; - int p0m1p1 = pos - d_yline_1 + 1; - int p0m1p2 = pos - d_yline_1 + 2; - int p0m1p3 = pos - d_yline_1 + 3; - - // i, j + 1, k - 3: k + 3 - int p0p1m3 = pos + d_yline_1 - 3; - int p0p1m2 = pos + d_yline_1 - 2; - int p0p1m1 = pos + d_yline_1 - 1; - int p0p1p0 = pos + d_yline_1 + 0; - int p0p1p1 = pos + d_yline_1 + 1; - int p0p1p2 = pos + d_yline_1 + 2; - int p0p1p3 = pos + d_yline_1 + 3; - - // i, j + 2, k - 3: k + 3 - int p0p2m3 = pos + d_yline_2 - 3; - int p0p2m2 = pos + d_yline_2 - 2; - int p0p2m1 = pos + d_yline_2 - 1; - int p0p2p0 = pos + d_yline_2 + 0; - int p0p2p1 = pos + d_yline_2 + 1; - int p0p2p2 = pos + d_yline_2 + 2; - int p0p2p3 = pos + d_yline_2 + 3; - - - // i - 2 : i + 1, j - //int m2p0 = fpos - d_fline_2; - //int m1p0 = fpos - d_fline_1; - //int p0p0 = fpos; - //int p1p0 = fpos + d_fline_1; - //int p2p0 = fpos + d_fline_2; - - - f_vx1 = d_vx1[pos]; - f_vx2 = d_vx2[pos]; - f_ww = d_ww[pos]; - f_wwo = d_wwo[pos]; - - f_dcrj = dcrjx[i]*f_dcrjy*f_dcrjz; - - - pos_km2 = pos-2; - pos_km1 = pos-1; - pos_kp1 = pos+1; - pos_kp2 = pos+2; - pos_jm2 = pos-d_yline_2; - pos_jm1 = pos-d_yline_1; - pos_jp1 = pos+d_yline_1; - pos_jp2 = pos+d_yline_2; - pos_im2 = pos-d_slice_2; - pos_im1 = pos-d_slice_1; - pos_ip1 = pos+d_slice_1; - pos_jk1 = pos-d_yline_1-1; - pos_ik1 = pos+d_slice_1-1; - pos_ijk = pos+d_slice_1-d_yline_1; - pos_ijk1 = pos+d_slice_1-d_yline_1-1; - - xl = 8.0f/( LDG(lam[pos]) + LDG(lam[pos_ip1]) + LDG(lam[pos_jm1]) + LDG(lam[pos_ijk]) - + LDG(lam[pos_km1]) + LDG(lam[pos_ik1]) + LDG(lam[pos_jk1]) + LDG(lam[pos_ijk1]) ); - xm = 16.0f/( LDG(mu[pos]) + LDG(mu[pos_ip1]) + LDG(mu[pos_jm1]) + LDG(mu[pos_ijk]) - + LDG(mu[pos_km1]) + LDG(mu[pos_ik1]) + LDG(mu[pos_jk1]) + LDG(mu[pos_ijk1]) ); - xmu1 = 2.0f/( LDG(mu[pos]) + LDG(mu[pos_km1]) ); - xmu2 = 2.0/( LDG(mu[pos]) + LDG(mu[pos_jm1]) ); - xmu3 = 2.0/( LDG(mu[pos]) + LDG(mu[pos_ip1]) ); - xl = xl + xm; - qpa = 0.0625f*( LDG(qp[pos]) + LDG(qp[pos_ip1]) + LDG(qp[pos_jm1]) + LDG(qp[pos_ijk]) - + LDG(qp[pos_km1]) + LDG(qp[pos_ik1]) + LDG(qp[pos_jk1]) + LDG(qp[pos_ijk1]) ); - - if(1.0f/(qpa*2.0f)<=200.0f) - { - qpaw=coeff[f_ww*2-2]*(2.*qpa)*(2.*qpa)+coeff[f_ww*2-1]*(2.*qpa); - } - else { - //suggested by Kyle - qpaw = 2.0f*f_wwo*qpa; - // qpaw = f_wwo*qpa; - } - qpaw=qpaw/f_wwo; - - - h = 0.0625f*( LDG(qs[pos]) + LDG(qs[pos_ip1]) + LDG(qs[pos_jm1]) + LDG(qs[pos_ijk]) - + LDG(qs[pos_km1]) + LDG(qs[pos_ik1]) + LDG(qs[pos_jk1]) + LDG(qs[pos_ijk1]) ); - - if(1.0f/(h*2.0f)<=200.0f) - { - hw=coeff[f_ww*2-2]*(2.0f*h)*(2.0f*h)+coeff[f_ww*2-1]*(2.0f*h); - } - else { - //suggested by Kyle - hw = 2.0f*f_wwo*h; - // hw = f_wwo*h; - } - hw=hw/f_wwo; - - - h1 = 0.250f*( qs[pos] + qs[pos_km1] ); - - if(1.0f/(h1*2.0f)<=200.0f) - { - h1w=coeff[f_ww*2-2]*(2.0f*h1)*(2.0f*h1)+coeff[f_ww*2-1]*(2.0f*h1); - } - else { - //suggested by Kyle - h1w = 2.0f*f_wwo*h1; - // h1w = f_wwo*h1; - } - h1w=h1w/f_wwo; - - h2 = 0.250f*( qs[pos] + qs[pos_jm1] ); - if(1.0f/(h2*2.0f)<=200.0f) - { - h2w=coeff[f_ww*2-2]*(2.0f*h2)*(2.0f*h2)+coeff[f_ww*2-1]*(2.0f*h2); - } - else { - //suggested by Kyle - //h2w = f_wwo*h2; - h2w = 2.0f*f_wwo*h2; - } - h2w=h2w/f_wwo; - - - h3 = 0.250f*( qs[pos] + qs[pos_ip1] ); - if(1.0f/(h3*2.0f)<=200.0f) - { - h3w=coeff[f_ww*2-2]*(2.0f*h3)*(2.0f*h3)+coeff[f_ww*2-1]*(2.0f*h3); - } - else { - //suggested by Kyle - h3w = 2.0f*f_wwo*h3; - //h3w = f_wwo*h3; - } - h3w=h3w/f_wwo; - - h = -xm*hw*d_dh1; - h1 = -xmu1*h1w*d_dh1; - h2 = -xmu2*h2w*d_dh1; - h3 = -xmu3*h3w*d_dh1; - - - qpa = -qpaw*xl*d_dh1; - - xm = xm*d_dth; - xmu1 = xmu1*d_dth; - xmu2 = xmu2*d_dth; - xmu3 = xmu3*d_dth; - xl = xl*d_dth; - h = h*f_vx1; - h1 = h1*f_vx1; - h2 = h2*f_vx1; - h3 = h3*f_vx1; - qpa = qpa*f_vx1; - - xm = xm+d_DT*h; - xmu1 = xmu1+d_DT*h1; - xmu2 = xmu2+d_DT*h2; - xmu3 = xmu3+d_DT*h3; - vx1 = d_DT*(1+f_vx2*f_vx1); - - u1_ip2 = u1_ip1; - u1_ip1 = f_u1; - f_u1 = u1_im1; - u1_im1 = u1[pos_im1]; - v1_ip1 = f_v1; - f_v1 = v1_im1; - v1_im1 = v1_im2; - v1_im2 = v1[pos_im2]; - w1_ip1 = f_w1; - f_w1 = w1_im1; - w1_im1 = w1_im2; - w1_im2 = w1[pos_im2]; - - - - // xx, yy, zz - - float Jii = _f_c(i, j) * _g3_c(k); - Jii = 1.0 * 1.0 / Jii; - - vs1 = - dx4[1] * u1[p0p0p0] + dx4[0] * u1[m1p0p0] + - dx4[2] * u1[p1p0p0] + dx4[3] * u1[p2p0p0] - - Jii * _g_c(k) * - ( - px4[0] * _f1_1(i - 1, j) * - ( - phdz4[0] * u1[m1p0m3] + - phdz4[1] * u1[m1p0m2] + - phdz4[2] * u1[m1p0m1] + - phdz4[3] * u1[m1p0p0] + - phdz4[4] * u1[m1p0p1] + - phdz4[5] * u1[m1p0p2] + - phdz4[6] * u1[m1p0p3] - ) - + - px4[1] * _f1_1(i, j) * - ( - phdz4[0] * u1[p0p0m3] + - phdz4[1] * u1[p0p0m2] + - phdz4[2] * u1[p0p0m1] + - phdz4[3] * u1[p0p0p0] + - phdz4[4] * u1[p0p0p1] + - phdz4[5] * u1[p0p0p2] + - phdz4[6] * u1[p0p0p3] - ) + - px4[2] * _f1_1(i + 1, j) * - ( - phdz4[0] * u1[p1p0m3] + - phdz4[1] * u1[p1p0m2] + - phdz4[2] * u1[p1p0m1] + - phdz4[3] * u1[p1p0p0] + - phdz4[4] * u1[p1p0p1] + - phdz4[5] * u1[p1p0p2] + - phdz4[6] * u1[p1p0p3] - ) + - px4[3] * _f1_1(i + 2, j) * - ( - phdz4[0] * u1[p2p0m3] + - phdz4[1] * u1[p2p0m2] + - phdz4[2] * u1[p2p0m1] + - phdz4[3] * u1[p2p0p0] + - phdz4[4] * u1[p2p0p1] + - phdz4[5] * u1[p2p0p2] + - phdz4[6] * u1[p2p0p3] - ) - ); - vs2 = - dhy4[2] * v1[p0p0p0] + dhy4[0] * v1[p0m2p0] + - dhy4[1] * v1[p0m1p0] + dhy4[3] * v1[p0p1p0] - - Jii * _g_c(k) * - (phy4[0] * _f2_2(i, j - 2) * - ( - phdz4[0] * v1[p0m2m3] + - phdz4[1] * v1[p0m2m2] + - phdz4[2] * v1[p0m2m1] + - phdz4[3] * v1[p0m2p0] + - phdz4[4] * v1[p0m2p1] + - phdz4[5] * v1[p0m2p2] + - phdz4[6] * v1[p0m2p3] - ) + - phy4[1] * _f2_2(i, j - 1) * - ( - phdz4[0] * v1[p0m1m3] + - phdz4[1] * v1[p0m1m2] + - phdz4[2] * v1[p0m1m1] + - phdz4[3] * v1[p0m1p0] + - phdz4[4] * v1[p0m1p1] + - phdz4[5] * v1[p0m1p2] + - phdz4[6] * v1[p0m1p3] - ) + - phy4[2] * _f2_2(i, j) * - ( - phdz4[0] * v1[p0p0m3] + - phdz4[1] * v1[p0p0m2] + - phdz4[2] * v1[p0p0m1] + - phdz4[3] * v1[p0p0p0] + - phdz4[4] * v1[p0p0p1] + - phdz4[5] * v1[p0p0p2] + - phdz4[6] * v1[p0p0p3] - ) + - phy4[3] * _f2_2(i, j + 1) * - ( - phdz4[0] * v1[p0p1m3] + - phdz4[1] * v1[p0p1m2] + - phdz4[2] * v1[p0p1m1] + - phdz4[3] * v1[p0p1p0] + - phdz4[4] * v1[p0p1p1] + - phdz4[5] * v1[p0p1p2] + - phdz4[6] * v1[p0p1p3] - ) - ); - vs3 = - Jii * (dhz4[2] * w1[p0p0p0] + dhz4[0] * w1[p0p0m2] + - dhz4[1] * w1[p0p0m1] + dhz4[3] * w1[p0p0p1]); - - tmp = xl*(vs1+vs2+vs3); - - a1 = qpa*(vs1+vs2+vs3); - tmp = tmp+d_DT*a1; - - f_r = r1[pos]; - f_rtmp = -h*(vs2+vs3) + a1; - f_xx = xx[pos] + tmp - xm*(vs2+vs3) + vx1*f_r; - rr1[b][a] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - rxx[b][a] = (f_xx + d_DT*f_rtmp)*f_dcrj; - - f_r = r2[pos]; - f_rtmp = -h*(vs1+vs3) + a1; - f_yy = (yy[pos] + tmp - xm*(vs1+vs3) + vx1*f_r)*f_dcrj; - rr2[b][a] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - ryy[b][a] = (f_yy + d_DT*f_rtmp)*f_dcrj; - - f_r = r3[pos]; - f_rtmp = -h*(vs1+vs2) + a1; - f_zz = (zz[pos] + tmp - xm*(vs1+vs2) + vx1*f_r)*f_dcrj; - rr3[b][a] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); - rzz[b][a] = (f_zz + d_DT*f_rtmp)*f_dcrj; - - // xy - float J12i = _f(i, j) * _g3_c(k); - J12i = 1.0 / J12i; - - vs1 = - dy4[1] * u1[p0p0p0] + dy4[0] * u1[p0m1p0] + - dy4[2] * u1[p0p1p0] + dy4[3] * u1[p0p2p0] - - J12i * _g_c(k) * - ( - py4[0] * _f2_1(i, j - 1) * - ( - phdz4[0] * u1[p0m1m3] + - phdz4[1] * u1[p0m1m2] + - phdz4[2] * u1[p0m1m1] + - phdz4[3] * u1[p0m1p0] + - phdz4[4] * u1[p0m1p1] + - phdz4[5] * u1[p0m1p2] + - phdz4[6] * u1[p0m1p3]) + - py4[1] * _f2_1(i, j) * - ( - phdz4[0] * u1[p0p0m3] + - phdz4[1] * u1[p0p0m2] + - phdz4[2] * u1[p0p0m1] + - phdz4[3] * u1[p0p0p0] + - phdz4[4] * u1[p0p0p1] + - phdz4[5] * u1[p0p0p2] + - phdz4[6] * u1[p0p0p3]) + - py4[2] * _f2_1(i, j + 1) * - ( - phdz4[0] * u1[p0p1m3] + - phdz4[1] * u1[p0p1m2] + - phdz4[2] * u1[p0p1m1] + - phdz4[3] * u1[p0p1p0] + - phdz4[4] * u1[p0p1p1] + - phdz4[5] * u1[p0p1p2] + - phdz4[6] * u1[p0p1p3]) + - py4[3] * _f2_1(i, j + 2) * - ( - phdz4[0] * u1[p0p2m3] + - phdz4[1] * u1[p0p2m2] + - phdz4[2] * u1[p0p2m1] + - phdz4[3] * u1[p0p2p0] + - phdz4[4] * u1[p0p2p1] + - phdz4[5] * u1[p0p2p2] + - phdz4[6] * u1[p0p2p3]) - ); - vs2 = - dhx4[2] * v1[p0p0p0] + dhx4[0] * v1[m2p0p0] + - dhx4[1] * v1[m1p0p0] + dhx4[3] * v1[p1p0p0] - - J12i * _g_c(k) * - ( - phx4[0] * _f1_2(i - 2, j) * - ( - phdz4[0] * v1[m2p0m3] + - phdz4[1] * v1[m2p0m2] + - phdz4[2] * v1[m2p0m1] + - phdz4[3] * v1[m2p0p0] + - phdz4[4] * v1[m2p0p1] + - phdz4[5] * v1[m2p0p2] + - phdz4[6] * v1[m2p0p3] - ) + - phx4[1] * _f1_2(i - 1, j) * - ( - phdz4[0] * v1[m1p0m3] + - phdz4[1] * v1[m1p0m2] + - phdz4[2] * v1[m1p0m1] + - phdz4[3] * v1[m1p0p0] + - phdz4[4] * v1[m1p0p1] + - phdz4[5] * v1[m1p0p2] + - phdz4[6] * v1[m1p0p3] - ) + - phx4[2] * _f1_2(i, j) * - ( - phdz4[0] * v1[p0p0m3] + - phdz4[1] * v1[p0p0m2] + - phdz4[2] * v1[p0p0m1] + - phdz4[3] * v1[p0p0p0] + - phdz4[4] * v1[p0p0p1] + - phdz4[5] * v1[p0p0p2] + - phdz4[6] * v1[p0p0p3] - ) + - phx4[3] * _f1_2(i + 1, j) * - ( - phdz4[0] * v1[p1p0m3] + - phdz4[1] * v1[p1p0m2] + - phdz4[2] * v1[p1p0m1] + - phdz4[3] * v1[p1p0p0] + - phdz4[4] * v1[p1p0p1] + - phdz4[5] * v1[p1p0p2] + - phdz4[6] * v1[p1p0p3] - )); - - f_r = r4[pos]; - f_rtmp = h1*(vs1+vs2); - f_xy = xy[pos] + xmu1*(vs1+vs2) + vx1*f_r; - rr4[b][a] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1) + f_vx2*f_r*(1-f_vx1); - rxy[b][a] = (f_xy + d_DT*f_rtmp)*f_dcrj; - - // xz - - float J13i = _f_1(i, j) * _g3(k); - J13i = 1.0 * 1.0 / J13i; - - vs1 = J13i * (dz4[1] * u1[p0p0p0] + dz4[0] * u1[p0p0m1] + - dz4[2] * u1[p0p0p1] + dz4[3] * u1[p0p0p2]); - vs2 = - dhx4[2] * w1[p0p0p0] + dhx4[0] * w1[m2p0p0] + - dhx4[1] * w1[m1p0p0] + dhx4[3] * w1[p1p0p0] - - J13i * _g(k) * - ( - phx4[0] * _f1_c(i - 2, j) * - ( - pdhz4[0] * w1[m2p0m3] + - pdhz4[1] * w1[m2p0m2] + - pdhz4[2] * w1[m2p0m1] + - pdhz4[3] * w1[m2p0p0] + - pdhz4[4] * w1[m2p0p1] + - pdhz4[5] * w1[m2p0p2] + - pdhz4[6] * w1[m2p0p3] - ) + - phx4[1] * _f1_c(i - 1, j) * - ( - pdhz4[0] * w1[m1p0m3] + - pdhz4[1] * w1[m1p0m2] + - pdhz4[2] * w1[m1p0m1] + - pdhz4[3] * w1[m1p0p0] + - pdhz4[4] * w1[m1p0p1] + - pdhz4[5] * w1[m1p0p2] + - pdhz4[6] * w1[m1p0p3]) + - phx4[2] * _f1_c(i, j) * - (pdhz4[0] * w1[p0p0m3] + - pdhz4[1] * w1[p0p0m2] + - pdhz4[2] * w1[p0p0m1] + - pdhz4[3] * w1[p0p0p0] + - pdhz4[4] * w1[p0p0p1] + - pdhz4[5] * w1[p0p0p2] + - pdhz4[6] * w1[p0p0p3]) + - phx4[3] * _f1_c(i + 1, j) * - (pdhz4[0] * w1[p1p0m3] + - pdhz4[1] * w1[p1p0m2] + - pdhz4[2] * w1[p1p0m1] + - pdhz4[3] * w1[p1p0p0] + - pdhz4[4] * w1[p1p0p1] + - pdhz4[5] * w1[p1p0p2] + - pdhz4[6] * w1[p1p0p3] - )); - f_r = r5[pos]; - f_rtmp = h2*(vs1+vs2); - f_xz = xz[pos] + xmu2*(vs1+vs2) + vx1*f_r; - rr5[b][a] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); - rxz[b][a] = (f_xz + d_DT*f_rtmp)*f_dcrj; - - // yz - - float J23i = _f_2(i, j) * _g3(k); - J23i = 1.0 * 1.0 / J23i; - vs1 = J23i * (dz4[1] * v1[p0p0p0] + dz4[0] * v1[p0p0m1] + - dz4[2] * v1[p0p0p1] + dz4[3] * v1[p0p0p2]); - vs2 = - dy4[1] * w1[p0p0p0] + dy4[0] * w1[p0m1p0] + - dy4[2] * w1[p0p1p0] + dy4[3] * w1[p0p2p0] - - J23i * _g(k) * - ( - py4[0] * _f2_c(i, j - 1) * - ( - pdhz4[0] * w1[p0m1m3] + - pdhz4[1] * w1[p0m1m2] + - pdhz4[2] * w1[p0m1m1] + - pdhz4[3] * w1[p0m1p0] + - pdhz4[4] * w1[p0m1p1] + - pdhz4[5] * w1[p0m1p2] + - pdhz4[6] * w1[p0m1p3] - ) + - py4[1] * _f2_c(i, j) * - ( - pdhz4[0] * w1[p0p0m3] + - pdhz4[1] * w1[p0p0m2] + - pdhz4[2] * w1[p0p0m1] + - pdhz4[3] * w1[p0p0p0] + - pdhz4[4] * w1[p0p0p1] + - pdhz4[5] * w1[p0p0p2] + - pdhz4[6] * w1[p0p0p3] - ) + - py4[2] * _f2_c(i, j + 1) * - ( - pdhz4[0] * w1[p0p1m3] + - pdhz4[1] * w1[p0p1m2] + - pdhz4[2] * w1[p0p1m1] + - pdhz4[3] * w1[p0p1p0] + - pdhz4[4] * w1[p0p1p1] + - pdhz4[5] * w1[p0p1p2] + - pdhz4[6] * w1[p0p1p3] - ) + - py4[3] * _f2_c(i, j + 2) * - ( - pdhz4[0] * w1[p0p2m3] + - pdhz4[1] * w1[p0p2m2] + - pdhz4[2] * w1[p0p2m1] + - pdhz4[3] * w1[p0p2p0] + - pdhz4[4] * w1[p0p2p1] + - pdhz4[5] * w1[p0p2p2] + - pdhz4[6] * w1[p0p2p3] - )); - - f_r = r6[pos]; - f_rtmp = h3*(vs1+vs2); - f_yz = yz[pos] + xmu3*(vs1+vs2) + vx1*f_r; - rr6[b][a] = f_vx2*f_r + f_wwo*f_rtmp; - f_rtmp = f_rtmp*(f_wwo-1.0f) + f_vx2*f_r*(1.0f-f_vx1); - ryz[b][a] = (f_yz + d_DT*f_rtmp)*f_dcrj; - } - } - -#pragma unroll - for (int b = 0; b < nb; ++b) { - j = j0 + b; - if (j >= e_j) - continue; -#pragma unroll - for (int a = 0; a < na; ++a) { - k = k0 + a; - pos = i*d_slice_1+j*d_yline_1+k; - if (k < dm_offset + align) - continue; - if (k >= nz - 6 + align) - continue; - - xx[pos] = rxx[b][a]; - yy[pos] = ryy[b][a]; - zz[pos] = rzz[b][a]; - xy[pos] = rxy[b][a]; - xz[pos] = rxz[b][a]; - yz[pos] = ryz[b][a]; - - r1[pos] = rr1[b][a]; - r2[pos] = rr2[b][a]; - r3[pos] = rr3[b][a]; - r4[pos] = rr4[b][a]; - r5[pos] = rr5[b][a]; - r6[pos] = rr6[b][a]; - - } - } - - -} diff --git a/src/topography/kernels/optimized_velocity.cu b/src/topography/kernels/velocity.cu similarity index 91% rename from src/topography/kernels/optimized_velocity.cu rename to src/topography/kernels/velocity.cu index 84278d3..db6426c 100644 --- a/src/topography/kernels/optimized_velocity.cu +++ b/src/topography/kernels/velocity.cu @@ -1,5 +1,3 @@ -#include -#include // Turning __restrict__ on or off... //#define RSTRCT @@ -7,25 +5,29 @@ #include #include +#ifndef APPLY_BC +#define APPLY_BC 1 +#endif + __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) __global__ void dtopo_vel_110( - float* RSTRCT u1, float* RSTRCT u2, float* RSTRCT u3, - const float* RSTRCT dcrjx, const float* RSTRCT dcrjy, - const float* RSTRCT dcrjz, const float* RSTRCT f, - const float* RSTRCT f1_1, const float* RSTRCT f1_2, - const float* RSTRCT f1_c, const float* RSTRCT f2_1, - const float* RSTRCT f2_2, const float* RSTRCT f2_c, - const float* RSTRCT f_1, const float* RSTRCT f_2, - const float* RSTRCT f_c, const float* RSTRCT g, - const float* RSTRCT g3, const float* RSTRCT g3_c, - const float* RSTRCT g_c, const float* RSTRCT rho, - const float* RSTRCT s11, const float* RSTRCT s12, - const float* RSTRCT s13, const float* RSTRCT s22, - const float* RSTRCT s23, const float* RSTRCT s33, - const float a, const float nu, const int nx, const int ny, const int nz, + _prec* RSTRCT u1, _prec* RSTRCT u2, _prec* RSTRCT u3, + const _prec* RSTRCT dcrjx, const _prec* RSTRCT dcrjy, + const _prec* RSTRCT dcrjz, const _prec* RSTRCT f, + const _prec* RSTRCT f1_1, const _prec* RSTRCT f1_2, + const _prec* RSTRCT f1_c, const _prec* RSTRCT f2_1, + const _prec* RSTRCT f2_2, const _prec* RSTRCT f2_c, + const _prec* RSTRCT f_1, const _prec* RSTRCT f_2, + const _prec* RSTRCT f_c, const _prec* RSTRCT g, + const _prec* RSTRCT g3, const _prec* RSTRCT g3_c, + const _prec* RSTRCT g_c, const _prec* RSTRCT rho, + const _prec* RSTRCT s11, const _prec* RSTRCT s12, + const _prec* RSTRCT s13, const _prec* RSTRCT s22, + const _prec* RSTRCT s23, const _prec* RSTRCT s33, + const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej) { - const float phz2l[6][7] = { + const _prec phz2l[6][7] = { {1.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -44,9 +46,9 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.5000000000000000, 0.5000000000000000, 0.0000000000000000}}; - const float phy2[2] = {0.5000000000000000, 0.5000000000000000}; - const float phx2[2] = {0.5000000000000000, 0.5000000000000000}; - const float dhpz4l[6][9] = { + const _prec phy2[2] = {0.5000000000000000, 0.5000000000000000}; + const _prec phx2[2] = {0.5000000000000000, 0.5000000000000000}; + const _prec dhpz4l[6][9] = { {-1.4276800979942257, 0.2875185051606178, 2.0072491465276454, -0.8773816261307504, 0.0075022330101095, 0.0027918394266035, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -65,15 +67,15 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) {-0.0020323834153791, -0.0002106933140862, 0.0013351454085978, 0.0938400881871787, -0.6816971139746001, 0.0002232904416222, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4l[6][7] = { + const _prec dhz4l[6][7] = { {-1.4511412472637157, 1.8534237417911470, -0.3534237417911469, -0.0488587527362844, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -92,15 +94,15 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dphz4l[6][9] = { + const _prec dphz4l[6][9] = { {-1.3764648947859957, 1.8523239861274134, -0.5524268681758195, 0.0537413571133823, 0.0228264197210198, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -119,7 +121,7 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, -0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}}; - const float dz4l[6][8] = { + const _prec dz4l[6][8] = { {-1.7779989465546748, 1.3337480247900155, 0.7775013168066564, -0.3332503950419969, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -223,7 +225,7 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) u3[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] - float rho1 = + _prec rho1 = phz2l[k][0] * (phy2[1] * _rho(i, j, 0) + phy2[0] * _rho(i, j - 1, 0)) + phz2l[k][1] * @@ -238,7 +240,7 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) (phy2[1] * _rho(i, j, 5) + phy2[0] * _rho(i, j - 1, 5)) + phz2l[k][6] * (phy2[1] * _rho(i, j, 6) + phy2[0] * _rho(i, j - 1, 6)); - float rho2 = + _prec rho2 = phz2l[k][0] * (phx2[1] * _rho(i, j, 0) + phx2[0] * _rho(i - 1, j, 0)) + phz2l[k][1] * @@ -253,17 +255,17 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) (phx2[1] * _rho(i, j, 5) + phx2[0] * _rho(i - 1, j, 5)) + phz2l[k][6] * (phx2[1] * _rho(i, j, 6) + phx2[0] * _rho(i - 1, j, 6)); - float rho3 = + _prec rho3 = phy2[1] * (phx2[1] * _rho(i, j, k) + phx2[0] * _rho(i - 1, j, k)) + phy2[0] * (phx2[1] * _rho(i, j - 1, k) + phx2[0] * _rho(i - 1, j - 1, k)); - float Ai1 = _f_1(i, j) * _g3_c(k) * rho1; + _prec Ai1 = _f_1(i, j) * _g3_c(k) * rho1; Ai1 = nu * 1.0 / Ai1; - float Ai2 = _f_2(i, j) * _g3_c(k) * rho2; + _prec Ai2 = _f_2(i, j) * _g3_c(k) * rho2; Ai2 = nu * 1.0 / Ai2; - float Ai3 = _f_c(i, j) * _g3(k) * rho3; + _prec Ai3 = _f_c(i, j) * _g3(k) * rho3; Ai3 = nu * 1.0 / Ai3; - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k); _u1(i, j, k) = (a * _u1(i, j, k) + Ai1 * (dhx4[2] * _f_c(i, j) * _g3_c(k) * _s11(i, j, k) + @@ -611,48 +613,48 @@ __launch_bounds__(DTOPO_VEL_110_MAX_THREADS_PER_BLOCK) __launch_bounds__(DTOPO_VEL_111_MAX_THREADS_PER_BLOCK) __global__ void dtopo_vel_111( - float *RSTRCT u1, float *RSTRCT u2, float *RSTRCT u3, - const float *RSTRCT dcrjx, const float *RSTRCT dcrjy, - const float *RSTRCT dcrjz, const float *RSTRCT f, - const float *RSTRCT f1_1, const float *RSTRCT f1_2, - const float *RSTRCT f1_c, const float *RSTRCT f2_1, - const float *RSTRCT f2_2, const float *RSTRCT f2_c, - const float *RSTRCT f_1, const float *RSTRCT f_2, - const float *RSTRCT f_c, const float *RSTRCT g, - const float *RSTRCT g3, const float *RSTRCT g3_c, - const float *RSTRCT g_c, const float *RSTRCT rho, - const float *RSTRCT s11, const float *RSTRCT s12, - const float *RSTRCT s13, const float *RSTRCT s22, - const float *RSTRCT s23, const float *RSTRCT s33, - const float a, const float nu, const int nx, const int ny, const int nz, + _prec *RSTRCT u1, _prec *RSTRCT u2, _prec *RSTRCT u3, + const _prec *RSTRCT dcrjx, const _prec *RSTRCT dcrjy, + const _prec *RSTRCT dcrjz, const _prec *RSTRCT f, + const _prec *RSTRCT f1_1, const _prec *RSTRCT f1_2, + const _prec *RSTRCT f1_c, const _prec *RSTRCT f2_1, + const _prec *RSTRCT f2_2, const _prec *RSTRCT f2_c, + const _prec *RSTRCT f_1, const _prec *RSTRCT f_2, + const _prec *RSTRCT f_c, const _prec *RSTRCT g, + const _prec *RSTRCT g3, const _prec *RSTRCT g3_c, + const _prec *RSTRCT g_c, const _prec *RSTRCT rho, + const _prec *RSTRCT s11, const _prec *RSTRCT s12, + const _prec *RSTRCT s13, const _prec *RSTRCT s22, + const _prec *RSTRCT s23, const _prec *RSTRCT s33, + const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej) { - const float dhpz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec dhpz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dphz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec dphz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; int dm_offset = 3; const int i = threadIdx.z + blockIdx.z * blockDim.z + bi; @@ -744,20 +746,20 @@ __global__ void dtopo_vel_111( #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] - float rho1 = 0.25 * (_rho(i, j, k - 1) + _rho(i, j - 1, k - 1)) + + _prec rho1 = 0.25 * (_rho(i, j, k - 1) + _rho(i, j - 1, k - 1)) + 0.25 * (_rho(i, j, k) + _rho(i, j - 1, k)); - float rho2 = 0.25 * (_rho(i, j, k - 1) + _rho(i - 1, j, k - 1)) + + _prec rho2 = 0.25 * (_rho(i, j, k - 1) + _rho(i - 1, j, k - 1)) + 0.25 * (_rho(i, j, k) + _rho(i - 1, j, k)); - float rho3 = 0.25 * (_rho(i, j, k) + _rho(i - 1, j, k)) + + _prec rho3 = 0.25 * (_rho(i, j, k) + _rho(i - 1, j, k)) + 0.25 * (_rho(i, j - 1, k) + _rho(i - 1, j - 1, k)); - float Ai1 = _f_1(i, j) * _g3_c(k) * rho1; + _prec Ai1 = _f_1(i, j) * _g3_c(k) * rho1; Ai1 = nu * 1.0 / Ai1; - float Ai2 = _f_2(i, j) * _g3_c(k) * rho2; + _prec Ai2 = _f_2(i, j) * _g3_c(k) * rho2; Ai2 = nu * 1.0 / Ai2; - float Ai3 = _f_c(i, j) * _g3(k) * rho3; + _prec Ai3 = _f_c(i, j) * _g3(k) * rho3; Ai3 = nu * 1.0 / Ai3; - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(k); _u1(i, j, k) = (a * _u1(i, j, k) + Ai1 * (dhx4[2] * _f_c(i, j) * _g3_c(k) * _s11(i, j, k) + @@ -1038,22 +1040,23 @@ __global__ void dtopo_vel_111( __launch_bounds__(DTOPO_VEL_112_MAX_THREADS_PER_BLOCK) __global__ void dtopo_vel_112( - float* RSTRCT u1, float* RSTRCT u2, float* RSTRCT u3, - const float* RSTRCT dcrjx, const float* RSTRCT dcrjy, - const float* RSTRCT dcrjz, const float* RSTRCT f, - const float* RSTRCT f1_1, const float* RSTRCT f1_2, - const float* RSTRCT f1_c, const float* RSTRCT f2_1, - const float* RSTRCT f2_2, const float* RSTRCT f2_c, - const float* RSTRCT f_1, const float* RSTRCT f_2, - const float* RSTRCT f_c, const float* RSTRCT g, - const float* RSTRCT g3, const float* RSTRCT g3_c, - const float* RSTRCT g_c, const float* RSTRCT rho, - const float* RSTRCT s11, const float* RSTRCT s12, - const float* RSTRCT s13, const float* RSTRCT s22, - const float* RSTRCT s23, const float* RSTRCT s33, - const float a, const float nu, const int nx, const int ny, const int nz, + _prec* RSTRCT u1, _prec* RSTRCT u2, _prec* RSTRCT u3, + const _prec* RSTRCT dcrjx, const _prec* RSTRCT dcrjy, + const _prec* RSTRCT dcrjz, const _prec* RSTRCT f, + const _prec* RSTRCT f1_1, const _prec* RSTRCT f1_2, + const _prec* RSTRCT f1_c, const _prec* RSTRCT f2_1, + const _prec* RSTRCT f2_2, const _prec* RSTRCT f2_c, + const _prec* RSTRCT f_1, const _prec* RSTRCT f_2, + const _prec* RSTRCT f_c, const _prec* RSTRCT g, + const _prec* RSTRCT g3, const _prec* RSTRCT g3_c, + const _prec* RSTRCT g_c, const _prec* RSTRCT rho, + const _prec* RSTRCT s11, const _prec* RSTRCT s12, + const _prec* RSTRCT s13, const _prec* RSTRCT s22, + const _prec* RSTRCT s23, const _prec* RSTRCT s33, + const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej) { - const float dhpz4r[6][9] = { +#if APPLY_BC + const _prec dhpz4r[6][9] = { {-1.5373923010673118, -1.1059180740634813, -0.2134752473866528, -0.0352027995732726, -0.0075022330101095, -0.0027918394266035, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1072,15 +1075,15 @@ __launch_bounds__(DTOPO_VEL_112_MAX_THREADS_PER_BLOCK) {0.0020323834153791, 0.0002106933140862, -0.0013351454085978, -0.0938400881871787, 0.6816971139746001, -0.0002232904416222, -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4r[6][8] = { + const _prec dhz4r[6][8] = { {0.0000000000000000, -1.4511412472637157, -1.8534237417911470, 0.3534237417911469, 0.0488587527362844, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1099,15 +1102,15 @@ __launch_bounds__(DTOPO_VEL_112_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, 0.0416666666666667}}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dphz4r[6][9] = { + const _prec dphz4r[6][9] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1126,7 +1129,7 @@ __launch_bounds__(DTOPO_VEL_112_MAX_THREADS_PER_BLOCK) {0.0000000000000000, -0.0040378273193044, 0.0064139372778371, -0.0890062133451850, 0.6749219241340761, 0.0002498459192428, -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const float dz4r[6][7] = { + const _prec dz4r[6][7] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1145,6 +1148,101 @@ __launch_bounds__(DTOPO_VEL_112_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, 0.0416666666666667}}; + +#else + const _prec dhpz4r[6][9] = { + {1.4276800979942257, -0.2875185051606178, -2.0072491465276454, + 0.8773816261307504, -0.0075022330101095, -0.0027918394266035, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, + {0.8139439685257414, 0.1273679143938725, -1.1932750007455710, + 0.1475120181828087, 0.1125814499297686, -0.0081303502866204, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, + {0.1639182541610305, 0.3113839909089030, -0.0536007135209480, + -0.3910958927076030, -0.0401741813821989, 0.0095685425408165, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, + {0.0171478318814576, -0.0916600077207278, 0.7187220404622645, + -0.1434031863528334, -0.5827389738506837, 0.0847863081664324, + -0.0028540125859095, 0.0000000000000000, 0.0000000000000000}, + {-0.0579176640853654, 0.0022069616616207, 0.0108792602269819, + 0.6803612607837533, -0.0530169938441240, -0.6736586580761996, + 0.0937500000000000, -0.0026041666666667, 0.0000000000000000}, + {0.0020323834153791, 0.0002106933140862, -0.0013351454085978, + -0.0938400881871787, 0.6816971139746001, -0.0002232904416222, + -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const _prec dhz4r[6][8] = { + {0.0000000000000000, 1.4511412472637157, -1.8534237417911470, + 0.3534237417911469, 0.0488587527362844, 0.0000000000000000, + 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, 0.8577143189081458, -0.5731429567244373, + -0.4268570432755628, 0.1422856810918542, 0.0000000000000000, + 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, 0.1674548505882877, 0.4976354482351368, + -0.4976354482351368, -0.1674548505882877, 0.0000000000000000, + 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, -0.1027061113405124, 0.2624541326469860, + 0.8288742701021167, -1.0342864927831414, 0.0456642013745513, + 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, + 0.0416666666666667, 0.0000000000000000}, + {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, + -1.1250000000000000, 0.0416666666666667}}; + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, + 0.5625000000000000, -0.0625000000000000}; + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, + 1.1250000000000000, -0.0416666666666667}; + const _prec dphz4r[6][9] = { + {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, 1.3764648947859957, -1.8523239861274132, + 0.5524268681758197, -0.0537413571133823, -0.0228264197210198, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, 0.4428256655817484, -0.0574614517751294, + -0.2022259589759502, -0.1944663890497050, 0.0113281342190362, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, -0.3360140866060758, 1.2113298407847195, + -0.3111668377093505, -0.6714462506479002, 0.1111440843153523, + -0.0038467501367455, 0.0000000000000000, 0.0000000000000000}, + {0.0000000000000000, 0.0338560531369653, -0.0409943223643902, + 0.5284757132923059, 0.0115571196122084, -0.6162252315536446, + 0.0857115441015996, -0.0023808762250444, 0.0000000000000000}, + {0.0000000000000000, -0.0040378273193044, 0.0064139372778371, + -0.0890062133451850, 0.6749219241340761, 0.0002498459192428, + -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; + const _prec dz4r[6][7] = { + {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000}, + {1.7779989465546748, -1.3337480247900155, -0.7775013168066564, + 0.3332503950419969, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000}, + {0.4410217341392059, 0.1730842484889890, -0.4487228323259926, + -0.1653831503022022, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000}, + {-0.1798793213882701, 0.2757257254150788, 0.9597948548284453, + -1.1171892610431817, 0.0615480021879277, 0.0000000000000000, + 0.0000000000000000}, + {-0.0153911381507088, -0.0568851455503591, 0.1998976464597171, + 0.8628231468598346, -1.0285385292191949, 0.0380940196007109, + 0.0000000000000000}, + {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, + 0.0416666666666667}}; +#endif const int i = threadIdx.z + blockIdx.z * blockDim.z + bi; if (i >= nx) return; if (i >= ei) return; @@ -1232,20 +1330,20 @@ __launch_bounds__(DTOPO_VEL_112_MAX_THREADS_PER_BLOCK) (2 * align + nz) * ((j) + ngsl + 2)] int kb = nz - k - 2; - float rho1 = 0.25 * (_rho(i, j, kb + 0) + _rho(i, j - 1, kb + 0)) + + _prec rho1 = 0.25 * (_rho(i, j, kb + 0) + _rho(i, j - 1, kb + 0)) + 0.25 * (_rho(i, j, kb + 1) + _rho(i, j - 1, kb + 1)); - float rho2 = 0.25 * (_rho(i, j, kb + 0) + _rho(i - 1, j, kb + 0)) + - 0.25 * (_rho(i, j, kb + 1) + _rho(i - 1, j, kb + 1)); - float rho3 = 0.25 * (_rho(i, j, kb + 1) + _rho(i - 1, j, kb + 1)) + - 0.25 * (_rho(i, j - 1, kb + 1) + _rho(i - 1, j - 1, kb + 1)); + _prec rho2 = 0.25 * (_rho(i, j, kb + 0) + _rho(i + 1, j, kb + 0)) + + 0.25 * (_rho(i, j, kb + 1) + _rho(i + 1, j, kb + 1)); + _prec rho3 = 0.25 * (_rho(i, j, kb + 1) + _rho(i + 1, j, kb + 1)) + + 0.25 * (_rho(i, j - 1, kb + 1) + _rho(i + 1, j - 1, kb + 1)); - float Ai1 = _f_1(i, j) * _g3_c(nz - 1 - k) * rho1; + _prec Ai1 = _f_1(i, j) * _g3_c(nz - 1 - k) * rho1; Ai1 = nu * 1.0 / Ai1; - float Ai2 = _f_2(i, j) * _g3_c(nz - 1 - k) * rho2; + _prec Ai2 = _f_2(i, j) * _g3_c(nz - 1 - k) * rho2; Ai2 = nu * 1.0 / Ai2; - float Ai3 = _f_c(i, j) * _g3(nz - 1 - k) * rho3; + _prec Ai3 = _f_c(i, j) * _g3(nz - 1 - k) * rho3; Ai3 = nu * 1.0 / Ai3; - float f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(nz - 1 - k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j) * _dcrjz(nz - 1 - k); _u1(i, j, nz - 1 - k) = (a * _u1(i, j, nz - 1 - k) + Ai1 * (dhx4[2] * _f_c(i, j) * _g3_c(nz - 1 - k) * @@ -1628,24 +1726,24 @@ __launch_bounds__(DTOPO_VEL_112_MAX_THREADS_PER_BLOCK) __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) __global__ void dtopo_buf_vel_110( - float* RSTRCT buf_u1, float* RSTRCT buf_u2, - float* RSTRCT buf_u3, const float* RSTRCT dcrjx, - const float* RSTRCT dcrjy, const float* RSTRCT dcrjz, - const float* RSTRCT f, const float* RSTRCT f1_1, - const float* RSTRCT f1_2, const float* RSTRCT f1_c, - const float* RSTRCT f2_1, const float* RSTRCT f2_2, - const float* RSTRCT f2_c, const float* RSTRCT f_1, - const float* RSTRCT f_2, const float* RSTRCT f_c, - const float* RSTRCT g, const float* RSTRCT g3, - const float* RSTRCT g3_c, const float* RSTRCT g_c, - const float* RSTRCT rho, const float* RSTRCT s11, - const float* RSTRCT s12, const float* RSTRCT s13, - const float* RSTRCT s22, const float* RSTRCT s23, - const float* RSTRCT s33, const float* RSTRCT u1, - const float* RSTRCT u2, const float* RSTRCT u3, - const float a, const float nu, const int nx, const int ny, const int nz, + _prec* RSTRCT buf_u1, _prec* RSTRCT buf_u2, + _prec* RSTRCT buf_u3, const _prec* RSTRCT dcrjx, + const _prec* RSTRCT dcrjy, const _prec* RSTRCT dcrjz, + const _prec* RSTRCT f, const _prec* RSTRCT f1_1, + const _prec* RSTRCT f1_2, const _prec* RSTRCT f1_c, + const _prec* RSTRCT f2_1, const _prec* RSTRCT f2_2, + const _prec* RSTRCT f2_c, const _prec* RSTRCT f_1, + const _prec* RSTRCT f_2, const _prec* RSTRCT f_c, + const _prec* RSTRCT g, const _prec* RSTRCT g3, + const _prec* RSTRCT g3_c, const _prec* RSTRCT g_c, + const _prec* RSTRCT rho, const _prec* RSTRCT s11, + const _prec* RSTRCT s12, const _prec* RSTRCT s13, + const _prec* RSTRCT s22, const _prec* RSTRCT s23, + const _prec* RSTRCT s33, const _prec* RSTRCT u1, + const _prec* RSTRCT u2, const _prec* RSTRCT u3, + const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bj, const int ej, const int rj0) { - const float phz2l[6][7] = { + const _prec phz2l[6][7] = { {1.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1664,9 +1762,9 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.5000000000000000, 0.5000000000000000, 0.0000000000000000}}; - const float phy2[2] = {0.5000000000000000, 0.5000000000000000}; - const float phx2[2] = {0.5000000000000000, 0.5000000000000000}; - const float dhpz4l[6][9] = { + const _prec phy2[2] = {0.5000000000000000, 0.5000000000000000}; + const _prec phx2[2] = {0.5000000000000000, 0.5000000000000000}; + const _prec dhpz4l[6][9] = { {-1.4276800979942257, 0.2875185051606178, 2.0072491465276454, -0.8773816261307504, 0.0075022330101095, 0.0027918394266035, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1685,15 +1783,15 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) {-0.0020323834153791, -0.0002106933140862, 0.0013351454085978, 0.0938400881871787, -0.6816971139746001, 0.0002232904416222, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4l[6][7] = { + const _prec dhz4l[6][7] = { {-1.4511412472637157, 1.8534237417911470, -0.3534237417911469, -0.0488587527362844, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1712,15 +1810,15 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dphz4l[6][9] = { + const _prec dphz4l[6][9] = { {-1.3764648947859957, 1.8523239861274134, -0.5524268681758195, 0.0537413571133823, 0.0228264197210198, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1739,7 +1837,7 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, -0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}}; - const float dz4l[6][8] = { + const _prec dz4l[6][8] = { {-1.7779989465546748, 1.3337480247900155, 0.7775013168066564, -0.3332503950419969, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -1851,7 +1949,7 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) u3[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] - float rho1 = phz2l[k][0] * (phy2[1] * _rho(i, j + rj0, 0) + + _prec rho1 = phz2l[k][0] * (phy2[1] * _rho(i, j + rj0, 0) + phy2[0] * _rho(i, j + rj0 - 1, 0)) + phz2l[k][1] * (phy2[1] * _rho(i, j + rj0, 1) + phy2[0] * _rho(i, j + rj0 - 1, 1)) + @@ -1865,7 +1963,7 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) phy2[0] * _rho(i, j + rj0 - 1, 5)) + phz2l[k][6] * (phy2[1] * _rho(i, j + rj0, 6) + phy2[0] * _rho(i, j + rj0 - 1, 6)); - float rho2 = phz2l[k][0] * (phx2[1] * _rho(i, j + rj0, 0) + + _prec rho2 = phz2l[k][0] * (phx2[1] * _rho(i, j + rj0, 0) + phx2[0] * _rho(i - 1, j + rj0, 0)) + phz2l[k][1] * (phx2[1] * _rho(i, j + rj0, 1) + phx2[0] * _rho(i - 1, j + rj0, 1)) + @@ -1879,17 +1977,17 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) phx2[0] * _rho(i - 1, j + rj0, 5)) + phz2l[k][6] * (phx2[1] * _rho(i, j + rj0, 6) + phx2[0] * _rho(i - 1, j + rj0, 6)); - float rho3 = phy2[1] * (phx2[1] * _rho(i, j + rj0, k) + + _prec rho3 = phy2[1] * (phx2[1] * _rho(i, j + rj0, k) + phx2[0] * _rho(i - 1, j + rj0, k)) + phy2[0] * (phx2[1] * _rho(i, j + rj0 - 1, k) + phx2[0] * _rho(i - 1, j + rj0 - 1, k)); - float Ai1 = _f_1(i, j + rj0) * _g3_c(k) * rho1; + _prec Ai1 = _f_1(i, j + rj0) * _g3_c(k) * rho1; Ai1 = nu * 1.0 / Ai1; - float Ai2 = _f_2(i, j + rj0) * _g3_c(k) * rho2; + _prec Ai2 = _f_2(i, j + rj0) * _g3_c(k) * rho2; Ai2 = nu * 1.0 / Ai2; - float Ai3 = _f_c(i, j + rj0) * _g3(k) * rho3; + _prec Ai3 = _f_c(i, j + rj0) * _g3(k) * rho3; Ai3 = nu * 1.0 / Ai3; - float f_dcrj = _dcrjx(i) * _dcrjy(j + rj0) * _dcrjz(k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j + rj0) * _dcrjz(k); _buf_u1(i, j, k) = (a * _u1(i, j + rj0, k) + Ai1 * @@ -2275,50 +2373,50 @@ __launch_bounds__(DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK) __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) __global__ void dtopo_buf_vel_111( - float *RSTRCT buf_u1, float *RSTRCT buf_u2, - float *RSTRCT buf_u3, const float *RSTRCT dcrjx, - const float *RSTRCT dcrjy, const float *RSTRCT dcrjz, - const float *RSTRCT f, const float *RSTRCT f1_1, - const float *RSTRCT f1_2, const float *RSTRCT f1_c, - const float *RSTRCT f2_1, const float *RSTRCT f2_2, - const float *RSTRCT f2_c, const float *RSTRCT f_1, - const float *RSTRCT f_2, const float *RSTRCT f_c, - const float *RSTRCT g, const float *RSTRCT g3, - const float *RSTRCT g3_c, const float *RSTRCT g_c, - const float *RSTRCT rho, const float *RSTRCT s11, - const float *RSTRCT s12, const float *RSTRCT s13, - const float *RSTRCT s22, const float *RSTRCT s23, - const float *RSTRCT s33, const float *RSTRCT u1, - const float *RSTRCT u2, const float *RSTRCT u3, - const float a, const float nu, const int nx, const int ny, const int nz, + _prec *RSTRCT buf_u1, _prec *RSTRCT buf_u2, + _prec *RSTRCT buf_u3, const _prec *RSTRCT dcrjx, + const _prec *RSTRCT dcrjy, const _prec *RSTRCT dcrjz, + const _prec *RSTRCT f, const _prec *RSTRCT f1_1, + const _prec *RSTRCT f1_2, const _prec *RSTRCT f1_c, + const _prec *RSTRCT f2_1, const _prec *RSTRCT f2_2, + const _prec *RSTRCT f2_c, const _prec *RSTRCT f_1, + const _prec *RSTRCT f_2, const _prec *RSTRCT f_c, + const _prec *RSTRCT g, const _prec *RSTRCT g3, + const _prec *RSTRCT g3_c, const _prec *RSTRCT g_c, + const _prec *RSTRCT rho, const _prec *RSTRCT s11, + const _prec *RSTRCT s12, const _prec *RSTRCT s13, + const _prec *RSTRCT s22, const _prec *RSTRCT s23, + const _prec *RSTRCT s33, const _prec *RSTRCT u1, + const _prec *RSTRCT u2, const _prec *RSTRCT u3, + const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bj, const int ej, const int rj0) { - const float dhpz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec dhpz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dphz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec dphz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; int dm_offset = 3; @@ -2417,19 +2515,19 @@ __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] - float rho1 = 0.25 * (_rho(i, j + rj0, k - 1) + _rho(i, j + rj0 - 1, k - 1)) + + _prec rho1 = 0.25 * (_rho(i, j + rj0, k - 1) + _rho(i, j + rj0 - 1, k - 1)) + 0.25 * (_rho(i, j + rj0, k) + _rho(i, j + rj0 - 1, k)); - float rho2 = 0.25 * (_rho(i, j + rj0, k - 1) + _rho(i - 1, j + rj0, k - 1)) + + _prec rho2 = 0.25 * (_rho(i, j + rj0, k - 1) + _rho(i - 1, j + rj0, k - 1)) + 0.25 * (_rho(i, j + rj0, k) + _rho(i - 1, j + rj0, k)); - float rho3 = 0.25 * (_rho(i, j + rj0, k) + _rho(i - 1, j + rj0, k)) + + _prec rho3 = 0.25 * (_rho(i, j + rj0, k) + _rho(i - 1, j + rj0, k)) + 0.25 * (_rho(i, j + rj0 - 1, k) + _rho(i - 1, j + rj0 - 1, k)); - float Ai1 = _f_1(i, j + rj0) * _g3_c(k) * rho1; + _prec Ai1 = _f_1(i, j + rj0) * _g3_c(k) * rho1; Ai1 = nu * 1.0 / Ai1; - float Ai2 = _f_2(i, j + rj0) * _g3_c(k) * rho2; + _prec Ai2 = _f_2(i, j + rj0) * _g3_c(k) * rho2; Ai2 = nu * 1.0 / Ai2; - float Ai3 = _f_c(i, j + rj0) * _g3(k) * rho3; + _prec Ai3 = _f_c(i, j + rj0) * _g3(k) * rho3; Ai3 = nu * 1.0 / Ai3; - float f_dcrj = _dcrjx(i) * _dcrjy(j + rj0) * _dcrjz(k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j + rj0) * _dcrjz(k); _buf_u1(i, j, k) = (a * _u1(i, j + rj0, k) + Ai1 * @@ -2725,24 +2823,24 @@ __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) __launch_bounds__(DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK) __global__ void dtopo_buf_vel_112( - float* RSTRCT buf_u1, float* RSTRCT buf_u2, - float* RSTRCT buf_u3, const float* RSTRCT dcrjx, - const float* RSTRCT dcrjy, const float* RSTRCT dcrjz, - const float* RSTRCT f, const float* RSTRCT f1_1, - const float* RSTRCT f1_2, const float* RSTRCT f1_c, - const float* RSTRCT f2_1, const float* RSTRCT f2_2, - const float* RSTRCT f2_c, const float* RSTRCT f_1, - const float* RSTRCT f_2, const float* RSTRCT f_c, - const float* RSTRCT g, const float* RSTRCT g3, - const float* RSTRCT g3_c, const float* RSTRCT g_c, - const float* RSTRCT rho, const float* RSTRCT s11, - const float* RSTRCT s12, const float* RSTRCT s13, - const float* RSTRCT s22, const float* RSTRCT s23, - const float* RSTRCT s33, const float* RSTRCT u1, - const float* RSTRCT u2, const float* RSTRCT u3, - const float a, const float nu, const int nx, const int ny, const int nz, + _prec* RSTRCT buf_u1, _prec* RSTRCT buf_u2, + _prec* RSTRCT buf_u3, const _prec* RSTRCT dcrjx, + const _prec* RSTRCT dcrjy, const _prec* RSTRCT dcrjz, + const _prec* RSTRCT f, const _prec* RSTRCT f1_1, + const _prec* RSTRCT f1_2, const _prec* RSTRCT f1_c, + const _prec* RSTRCT f2_1, const _prec* RSTRCT f2_2, + const _prec* RSTRCT f2_c, const _prec* RSTRCT f_1, + const _prec* RSTRCT f_2, const _prec* RSTRCT f_c, + const _prec* RSTRCT g, const _prec* RSTRCT g3, + const _prec* RSTRCT g3_c, const _prec* RSTRCT g_c, + const _prec* RSTRCT rho, const _prec* RSTRCT s11, + const _prec* RSTRCT s12, const _prec* RSTRCT s13, + const _prec* RSTRCT s22, const _prec* RSTRCT s23, + const _prec* RSTRCT s33, const _prec* RSTRCT u1, + const _prec* RSTRCT u2, const _prec* RSTRCT u3, + const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bj, const int ej, const int rj0) { - const float dhpz4r[6][9] = { + const _prec dhpz4r[6][9] = { {-1.5373923010673118, -1.1059180740634813, -0.2134752473866528, -0.0352027995732726, -0.0075022330101095, -0.0027918394266035, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2761,15 +2859,15 @@ __launch_bounds__(DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK) {0.0020323834153791, 0.0002106933140862, -0.0013351454085978, -0.0938400881871787, 0.6816971139746001, -0.0002232904416222, -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4r[6][8] = { + const _prec dhz4r[6][8] = { {0.0000000000000000, -1.4511412472637157, -1.8534237417911470, 0.3534237417911469, 0.0488587527362844, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2788,15 +2886,15 @@ __launch_bounds__(DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK) {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, 0.0416666666666667}}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dphz4r[6][9] = { + const _prec dphz4r[6][9] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2815,7 +2913,7 @@ __launch_bounds__(DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK) {0.0000000000000000, -0.0040378273193044, 0.0064139372778371, -0.0890062133451850, 0.6749219241340761, 0.0002498459192428, -0.6796875000000000, 0.0937500000000000, -0.0026041666666667}}; - const float dz4r[6][7] = { + const _prec dz4r[6][7] = { {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, @@ -2928,23 +3026,23 @@ __launch_bounds__(DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK) (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] int kb = nz - k - 2; - float rho1 = + _prec rho1 = 0.25 * (_rho(i, j + rj0, kb + 0) + _rho(i, j + rj0 - 1, kb + 0)) + 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i, j + rj0 - 1, kb + 1)); - float rho2 = + _prec rho2 = 0.25 * (_rho(i, j + rj0, kb + 0) + _rho(i - 1, j + rj0, kb + 0)) + 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i - 1, j + rj0, kb + 1)); - float rho3 = + _prec rho3 = 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i - 1, j + rj0, kb + 1)) + 0.25 * (_rho(i, j + rj0 - 1, kb + 1) + _rho(i - 1, j + rj0 - 1, kb + 1)); - float Ai1 = _f_1(i, j + rj0) * _g3_c(nz - 1 - k) * rho1; + _prec Ai1 = _f_1(i, j + rj0) * _g3_c(nz - 1 - k) * rho1; Ai1 = nu * 1.0 / Ai1; - float Ai2 = _f_2(i, j + rj0) * _g3_c(nz - 1 - k) * rho2; + _prec Ai2 = _f_2(i, j + rj0) * _g3_c(nz - 1 - k) * rho2; Ai2 = nu * 1.0 / Ai2; - float Ai3 = _f_c(i, j + rj0) * _g3(nz - 1 - k) * rho3; + _prec Ai3 = _f_c(i, j + rj0) * _g3(nz - 1 - k) * rho3; Ai3 = nu * 1.0 / Ai3; - float f_dcrj = _dcrjx(i) * _dcrjy(j + rj0) * _dcrjz(nz - 1 - k); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j + rj0) * _dcrjz(nz - 1 - k); _buf_u1(i, j, nz - 1 - k) = (a * _u1(i, j + rj0, nz - 1 - k) + Ai1 * (dhx4[2] * _f_c(i, j + rj0) * _g3_c(nz - 1 - k) * diff --git a/src/topography/kernels/velocity_unroll.cu b/src/topography/kernels/velocity_unroll.cu index 84156de..d5ccdf3 100644 --- a/src/topography/kernels/velocity_unroll.cu +++ b/src/topography/kernels/velocity_unroll.cu @@ -6,48 +6,48 @@ __launch_bounds__ (256) __launch_bounds__ (128) #endif __global__ void dtopo_vel_111_unroll( - float *RSTRCT u1, float *RSTRCT u2, float *RSTRCT u3, - const float *RSTRCT dcrjx, const float *RSTRCT dcrjy, - const float *RSTRCT dcrjz, const float *RSTRCT f, - const float *RSTRCT f1_1, const float *RSTRCT f1_2, - const float *RSTRCT f1_c, const float *RSTRCT f2_1, - const float *RSTRCT f2_2, const float *RSTRCT f2_c, - const float *RSTRCT f_1, const float *RSTRCT f_2, - const float *RSTRCT f_c, const float *RSTRCT g, - const float *RSTRCT g3, const float *RSTRCT g3_c, - const float *RSTRCT g_c, const float *RSTRCT rho, - const float *RSTRCT s11, const float *RSTRCT s12, - const float *RSTRCT s13, const float *RSTRCT s22, - const float *RSTRCT s23, const float *RSTRCT s33, - const float a, const float nu, const int nx, const int ny, const int nz, + _prec *RSTRCT u1, _prec *RSTRCT u2, _prec *RSTRCT u3, + const _prec *RSTRCT dcrjx, const _prec *RSTRCT dcrjy, + const _prec *RSTRCT dcrjz, const _prec *RSTRCT f, + const _prec *RSTRCT f1_1, const _prec *RSTRCT f1_2, + const _prec *RSTRCT f1_c, const _prec *RSTRCT f2_1, + const _prec *RSTRCT f2_2, const _prec *RSTRCT f2_c, + const _prec *RSTRCT f_1, const _prec *RSTRCT f_2, + const _prec *RSTRCT f_c, const _prec *RSTRCT g, + const _prec *RSTRCT g3, const _prec *RSTRCT g3_c, + const _prec *RSTRCT g_c, const _prec *RSTRCT rho, + const _prec *RSTRCT s11, const _prec *RSTRCT s12, + const _prec *RSTRCT s13, const _prec *RSTRCT s22, + const _prec *RSTRCT s23, const _prec *RSTRCT s33, + const _prec a, const _prec nu, const int nx, const int ny, const int nz, const int bi, const int bj, const int ei, const int ej) { - const float dhpz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec dhpz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float phx4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phx4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float phy4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec phy4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dhy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dhz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dhz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float px4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec px4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float py4[4] = {-0.0625000000000000, 0.5625000000000000, + const _prec py4[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; - const float dx4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dx4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dy4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dy4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; - const float dphz4[7] = {-0.0026041666666667, 0.0937500000000000, + const _prec dphz4[7] = {-0.0026041666666667, 0.0937500000000000, -0.6796875000000000, 0.0000000000000000, 0.6796875000000000, -0.0937500000000000, 0.0026041666666667}; - const float dz4[4] = {0.0416666666666667, -1.1250000000000000, + const _prec dz4[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; int dm_offset = 3; const int i = threadIdx.z + blockIdx.z * blockDim.z + bi; @@ -138,30 +138,30 @@ __global__ void dtopo_vel_111_unroll( u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] - float v1[nq][nr]; - float v2[nq][nr]; - float v3[nq][nr]; + _prec v1[nq][nr]; + _prec v2[nq][nr]; + _prec v3[nq][nr]; #pragma unroll for (int q = 0; q < nq; ++q) { #pragma unroll for (int r = 0; r < nr; ++r) { - float c = 0.25f; - float rho1 = c * (_rho(i, j + q, k + r - 1) + _rho(i, j + q - 1, k + r - 1)) + + _prec c = 0.25f; + _prec rho1 = c * (_rho(i, j + q, k + r - 1) + _rho(i, j + q - 1, k + r - 1)) + c * (_rho(i, j + q, k + r) + _rho(i, j + q - 1, k + r)); - float rho2 = c * (_rho(i, j + q, k + r - 1) + _rho(i - 1, j + q, k + r - 1)) + - c * (_rho(i, j + q, k + r) + _rho(i - 1, j + q, k + r)); - float rho3 = c * (_rho(i, j + q, k + r) + _rho(i - 1, j + q, k + r)) + - c * (_rho(i, j + q - 1, k + r) + _rho(i - 1, j + q - 1, k + r)); + _prec rho2 = c * (_rho(i, j + q, k + r - 1) + _rho(i + 1, j + q, k + r - 1)) + + c * (_rho(i, j + q, k + r) + _rho(i + 1, j + q, k + r)); + _prec rho3 = c * (_rho(i, j + q, k + r) + _rho(i + 1, j + q, k + r)) + + c * (_rho(i, j + q - 1, k + r) + _rho(i + 1, j + q - 1, k + r)); - float Ai1 = _f_1(i, j + q) * _g3_c(k + r) * rho1; + _prec Ai1 = _f_1(i, j + q) * _g3_c(k + r) * rho1; Ai1 = nu * 1.0 / Ai1; - float Ai2 = _f_2(i, j + q) * _g3_c(k + r) * rho2; + _prec Ai2 = _f_2(i, j + q) * _g3_c(k + r) * rho2; Ai2 = nu * 1.0 / Ai2; - float Ai3 = _f_c(i, j + q) * _g3(k + r) * rho3; + _prec Ai3 = _f_c(i, j + q) * _g3(k + r) * rho3; Ai3 = nu * 1.0 / Ai3; - float f_dcrj = _dcrjx(i) * _dcrjy(j + q) * _dcrjz(k + r); + _prec f_dcrj = _dcrjx(i) * _dcrjy(j + q) * _dcrjz(k + r); v1[q][r] = (a * _u1(i, j + q, k + r) + Ai1 * (dhx4[2] * _f_c(i, j + q) * _g3_c(k + r) * _s11(i, j + q, k + r) + diff --git a/src/topography/metrics/metrics.c b/src/topography/metrics/metrics.c index 3a0d233..f0b6ea2 100644 --- a/src/topography/metrics/metrics.c +++ b/src/topography/metrics/metrics.c @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include #include @@ -225,6 +225,66 @@ int metrics_interpolate_f_point(const f_grid_t *f, prec *out, const prec *in, return err; } +// This function might be useful when fixing topo-DM incompatibility +int metrics_interpolate_jacobian(const f_grid_t *fgrid, float *out, const float *f, const float *dg, + const float *x, const float *y, const float *z, + grid3_t grid, const float *qx, + const float *qy, const float *qz, const int m, const int deg) +{ + int err = 0; + prec *lx, *ly, *lz, *xloc, *yloc, *zloc; + lx = calloc(sizeof(lx), (deg + 1)); + ly = calloc(sizeof(ly), (deg + 1)); + lz = calloc(sizeof(lz), (deg + 1)); + xloc = calloc(sizeof(xloc), (deg + 1)); + yloc = calloc(sizeof(yloc), (deg + 1)); + zloc = calloc(sizeof(zloc), (deg + 1)); + + //printf("grid = %d %d \n", grid.size.x, grid.size.y); + int ny = grid.size.y - 4 - ngsl2; + //printf("ny = %d \n", ny); + //printf("z = %g \n", qz[0]); + #define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] + for (int q = 0; q < m; ++q) { + int ix = 0; int iy = 0; int iz = 0; + err = interp_lagrange1_coef( + xloc, lx, &ix, x, grid.size.x, qx[q], deg); + err = interp_lagrange1_coef( + yloc, ly, &iy, y, grid.size.y, qy[q], deg); + err = interp_lagrange1_coef( + zloc, lz, &iz, z, grid_boundary_size(grid).z, qz[q], deg); + out[q] = 0.0; + //printf("%d %d %d: \n", ix, iy, iz); + for (int i = 0; i < deg + 1; ++i) { + for (int j = 0; j < deg + 1; ++j) { + for (int k = 0; k < deg + 1; ++k) { + int gpos = align + iz + k; + //printf("g[%d] = %g f = %g \n", gpos, dg[gpos], _f(ix + i, iy + j)); + out[q] += lx[i] * ly[j] * lz[k] * _f(ix + i, iy + j) * dg[gpos]; + } + } + } + + + // int i1 = 2 + 4 + 99; + // int j1 = 2 + 4 + 99; + // int i2 = i1 + 1; + // int j2 = j1 + 1; + // printf("%g %g %g %g \n", _f(i1, j1), _f(i1, j2), _f(i2, j1), _f(i2, j2)); + + //exit(-1); + } + + free(lx); + free(ly); + free(lz); + free(xloc); + free(yloc); + free(zloc); + + return err; +} + g_grid_t metrics_init_g(const int *size, const _prec gridspacing) { g_grid_t out = { diff --git a/src/topography/mms.cu b/src/topography/mms.cu new file mode 100644 index 0000000..a7162fc --- /dev/null +++ b/src/topography/mms.cu @@ -0,0 +1,558 @@ +#include +#include +#include +#include +#include +#include +#include +#include +// Background values (P-wave speed, S-wave speed, density) +float scp0, scs0, srho0; +// Perturbation values (P-wave speed, S-wave speed, density) +float sdcp, sdcs, sdrho; +// Wavenumbers +float kx, ky, kz; + +// Background values (velocities and stresses) +float svx0, svy0, svz0, sxx0, syy0, szz0, sxy0, sxz0, syz0; +// Perturbation values (velocities and stresses) +float sdvx, sdvy, sdvz, sdxx, sdyy, sdzz, sdxy, sdxz, sdyz; + +// Plane wave position +float szc; + +// Grid stretching ratio +float stretch_ratio; + + +__inline__ __device__ int in_bounds_stress(int nx, int ny, int nz, int i, int j, int k) { + if (i < ngsl / 2 + 2 || i >= nx + 3 * ngsl / 2 + 2) return 0; + if (j < ngsl / 2 + 2 || j >= ny + 3 * ngsl / 2 + 2) return 0; + if (k >= align + nz) return 0; + return 1; +} + +__inline__ __device__ int in_bounds_velocity(int nx, int ny, int nz, int i, int j, int k) { + if (i < ngsl + 2 || i >= nx + ngsl + 2) return 0; + if (j < ngsl + 2 || j >= ny + ngsl + 2) return 0; + if (k >= align + nz) return 0; + return 1; +} + +__inline__ __device__ int in_bounds(int i, int j, int k, int bi, int bj, int bk, + int ei, int ej, int ek) { + if (i < bi || j < bj || k - align < bk) return 0; + if (i >= ei || j >= ej || k - align >= ek) return 0; + return 1; +} + +__inline__ __device__ float length_x(int nx, float h) { + return (nx - 1) * h; +} + +__inline__ __device__ float length_y(int ny, float h) { + return (ny - 1) * h; +} + +__inline__ __device__ float length_z(int nz, float h) { + return (nz - 2) * h; +} + +__inline__ __device__ float xi(int i, int px, float Lx, float h, int hat=0) { + return (i - ngsl - 2 - hat * 0.5f) * h + px * Lx; +} + +__inline__ __device__ float yj(int j, int py, float Ly, float h, int hat=0) { + float shift = hat == 0? 0.0f : 0.5f; + return (j - ngsl - 2 - hat * 0.5f) * h + py * Ly; +} + +__inline__ __device__ float zk(int k, int pz, float Lz, float h, int hat=0) { + return (k - align - hat * 0.5f) * h + pz * Lz; +} + +__inline__ __device__ float material_perturbation(float x, float y, float z, float kx, float ky, float kz) { + return sin(kx * x) * sin(ky * y) * sin(kz * z); +} + +__inline__ __device__ float gaussian(float z, float z0, float t, float k, float om) { + float tau = k * (z - z0) + om * t; + return exp( - tau * tau ); +} + + + +__global__ void material_properties( + float *d_d1, float *d_lam, + float *d_mu, float *d_qp, float *d_qs, + const float lam0, const float mu0, const float rho0, + const float dlam, const float dmu, const float drho, + const float kx, const float ky, const float kz, + const int nx, const int ny, + const int nz, + const int px, const int py, const int pz, + const float h + ) { + + int i = threadIdx.z + blockDim.z * blockIdx.z; + int j = threadIdx.y + blockDim.y * blockIdx.y; + int k = align + threadIdx.x + blockDim.x * blockIdx.x; + + if (!in_bounds_stress(nx, ny, nz, i, j, k)) return; + + float Lx = length_x(nx, h); + float Ly = length_y(ny, h); + float Lz = length_z(nz, h); + + float x = xi(i, px, Lx, h); + float y = yj(j, py, Ly, h); + + float z = zk(k, pz, Lz, h); + float zh = zk(k, pz, Lz, h, 1); + //float z = zk(k, pz, Lz, h); + + int line = 2 * align + nz; + int slice = line * (4 + 2 * ngsl + ny); + int pos = k + line * j + slice * i; + + float S = material_perturbation(x, y, z, kx, ky, kz); + + d_d1[pos] = rho0 + drho * S; + d_lam[pos] = 1.0f / (lam0 + dlam * S); + d_mu[pos] = 1.0f / (mu0 + dmu * S); + d_qp[pos] = 1e-10; + d_qs[pos] = 1e-10; + +} + +__global__ void exact_velocity( + float *d_vx, float *d_vy, float *d_vz, + const float vx0, const float vy0, const float vz0, + const float xx0, const float yy0, const float zz0, + const float xy0, const float xz0, const float yz0, + const float dvx, const float dvy, const float dvz, + const float dxx, const float dyy, const float dzz, + const float dxy, const float dxz, const float dyz, + const float cp0, const float cs0, const float rho0, + const float dcp, const float dcs, const float drho, + const float rc, + const float kx, const float ky, const float kz, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const int bi, const int bj, const int bk, + const int ei, const int ej, const int ek, + const float h, const float t, + const int apply_in_interior, + const float f + ) { + + int i = threadIdx.z + blockDim.z * blockIdx.z; + int j = threadIdx.y + blockDim.y * blockIdx.y; + int k = align + threadIdx.x + blockDim.x * blockIdx.x; + + if (!in_bounds_velocity(nx, ny, nz, i, j, k)) return; + int is_in_bounds = in_bounds(i, j, k, bi, bj, bk, ei, ej, ek); + if (apply_in_interior && !is_in_bounds) return; + if (!apply_in_interior && is_in_bounds) return; + + float Lx = length_x(nx, h); + float Ly = length_y(ny, h); + float Lz = length_z(nz, h); + + float x = xi(i, px, Lx, h); + float y = yj(j, py, Ly, h); + + float z = topo_mapping0(f, zk(k, pz, Lz, h), h, nz); + float zh = topo_mapping0(f, zk(k, pz, Lz, h, 1), h, nz); + float zc = rc;//topo_mapping0(f, rc, h, nz); + + int line = 2 * align + nz; + int slice = line * (4 + 2 * ngsl + ny); + int pos = k + line * j + slice * i; + + float S = material_perturbation(x, y, z, kx, ky, kz); + float cp = cp0 + dcp * S; + float cs = cs0 + dcs * S; + + float om_p = cp * kz; + float om_s = cs * kz; + + + d_vx[pos] = dvx*exp(-pow(kz*(zh - zc) + om_s*t, 2)) + vx0; + d_vy[pos] = dvy*exp(-pow(kz*(zh - zc) + om_s*t, 2)) + vy0; + d_vz[pos] = dvz*exp(-pow(kz*(z - zc) + om_p*t, 2)) + vz0; + + +} + +__global__ void exact_stress( + float *d_xx, float *d_yy, float *d_zz, + float *d_xy, float *d_xz, float *d_yz, + const float vx0, const float vy0, const float vz0, + const float xx0, const float yy0, const float zz0, + const float xy0, const float xz0, const float yz0, + const float dvx, const float dvy, const float dvz, + const float dxx, const float dyy, const float dzz, + const float dxy, const float dxz, const float dyz, + const float cp0, const float cs0, const float rho0, + const float dcp, const float dcs, const float drho, + const float rc, + const float kx, const float ky, const float kz, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const int bi, const int bj, const int bk, + const int ei, const int ej, const int ek, + const float h, const float t, const int apply_in_interior, + const float f + ) { + + int i = threadIdx.z + blockDim.z * blockIdx.z; + int j = threadIdx.y + blockDim.y * blockIdx.y; + int k = align + threadIdx.x + blockDim.x * blockIdx.x; + + if (!in_bounds_stress(nx, ny, nz, i, j, k)) return; + int is_in_bounds = in_bounds(i, j, k, bi, bj, bk, ei, ej, ek); + if (apply_in_interior && !is_in_bounds) return; + if (!apply_in_interior && is_in_bounds) return; + + float Lx = length_x(nx, h); + float Ly = length_y(ny, h); + float Lz = length_z(nz, h); + + float x = xi(i, px, Lx, h); + float y = yj(j, py, Ly, h); + float z = topo_mapping0(f, zk(k, pz, Lz, h), h, nz); + float zh = topo_mapping0(f, zk(k, pz, Lz, h, 1), h, nz); + float zc = rc;//topo_mapping0(f, rc, h, nz); + + int line = 2 * align + nz; + int slice = line * (4 + 2 * ngsl + ny); + int pos = k + line * j + slice * i; + + float S = material_perturbation(x, y, z, kx, ky, kz); + float cp = cp0 + dcp * S; + float cs = cs0 + dcs * S; + float rho = rho0; + + float om_p = cp * kz; + float om_s = cs * kz; + + d_xx[pos] = 0.0f; + d_yy[pos] = 0.0f; + d_zz[pos] = rho * cp * (dzz*exp(-pow(kz*(zh - zc) + om_p*t, 2)) + zz0); + + + d_xy[pos] = 0.0f; + d_xz[pos] = cs * rho * (dxz*exp(-pow(kz*(z - zc) + om_s*t, 2)) + xz0); + d_yz[pos] = cs * rho * (dyz*exp(-pow(kz*(z - zc) + om_s*t, 2)) + yz0); + +} + +__global__ void force_velocity( + float *d_vx, float *d_vy, float *d_vz, + const float vx0, const float vy0, const float vz0, + const float xx0, const float yy0, const float zz0, + const float xy0, const float xz0, const float yz0, + const float dvx, const float dvy, const float dvz, + const float dxx, const float dyy, const float dzz, + const float dxy, const float dxz, const float dyz, + const float cp0, const float cs0, const float rho0, + const float dcp, const float dcs, const float drho, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const float h, const float t, const float dt) { + + int i = threadIdx.z + blockDim.z * blockIdx.z; + int j = threadIdx.y + blockDim.y * blockIdx.y; + int k = align + threadIdx.x + blockDim.x * blockIdx.x; + + if (!in_bounds_velocity(nx, ny, nz, i, j, k)) return; + + float Lx = length_x(nx, h); + float Ly = length_y(ny, h); + float Lz = length_z(nz, h); + + float kx = 0.0; + float ky = 0.0; + float kz = 0.0; + + float x = xi(i, px, Lx, h); + float y = yj(j, py, Ly, h); + float z = zk(k, pz, Lz, h); + + int line = 2 * align + nz; + int slice = line * (4 + 2 * ngsl + ny); + int pos = k + line * j + slice * i; + + float S = material_perturbation(x, y, z, kx, ky, kz); + + float cp = cp0 + dcp * S; + float cs = cs0 + dcs * S; + float rho = rho0 + drho * S; + float om_p = cp * kz; +} + +__global__ void force_stress( + float *d_xx, float *d_yy, float *d_zz, + float *d_xy, float *d_xz, float *d_yz, + const float vx0, const float vy0, const float vz0, + const float xx0, const float yy0, const float zz0, + const float xy0, const float xz0, const float yz0, + const float dvx, const float dvy, const float dvz, + const float dxx, const float dyy, const float dzz, + const float dxy, const float dxz, const float dyz, + const float cp0, const float cs0, const float rho0, + const float dcp, const float dcs, const float drho, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const float h, const float t, const float dt) { + + int i = threadIdx.z + blockDim.z * blockIdx.z; + int j = threadIdx.y + blockDim.y * blockIdx.y; + int k = align + threadIdx.x + blockDim.x * blockIdx.x; + + if (!in_bounds_stress(nx, ny, nz, i, j, k)) return; + + float Lx = length_x(nx, h); + float Ly = length_y(ny, h); + float Lz = length_z(nz, h); + + float kx = 0.0; + float ky = 0.0; + float kz = 0.0; + + float x = xi(i, px, Lx, h); + float y = yj(j, py, Ly, h); + float z = zk(k, pz, Lz, h); + float zh = zk(k, pz, Lz, h, 1); + + int line = 2 * align + nz; + int slice = line * (4 + 2 * ngsl + ny); + int pos = k + line * j + slice * i; + + float S = material_perturbation(x, y, z, kx, ky, kz); + float cp = cp0 + dcp * S; + float cs = cs0 + dcs * S; + float rho = rho0 + drho * S; + + float om_p = cp * kz; + + float lam = rho * (cp * cp - 2 * cs * cs); + float mu = rho * cs * cs; +} + +void mms_init(const char *MMSFILE, const int *nxt, + const int *nyt, const int *nzt, const int ngrids, float **d_d1, + float **d_lam, float **d_mu, float **d_qp, float **d_qs, + float **d_vx, float **d_vy, float **d_vz, float **d_xx, + float **d_yy, float **d_zz, float **d_xy, float **d_xz, + float **d_yz, int px, int py, int rank, const MPI_Comm comm, const float *h, const float dt) +{ + + FILE *fh = fopen(MMSFILE, "r"); + if (!fh) { + if (rank == 0) { + fprintf(stderr, "Failed to open: %s \n", MMSFILE); + exit(-1); + } + return; + } + + + int parsed = fscanf(fh, + "%f %f %f %f %f %f | %f %f %f | %f %f %f %f %f %f %f %f " + "%f | %f %f %f %f %f %f %f %f %f | %f %f \n", + &scp0, &scs0, &srho0, &sdcp, &sdcs, &sdrho, &kx, &ky, &kz, + &svx0, &svy0, &svz0, &sxx0, &syy0, &szz0, &sxy0, + &sxz0, &syz0, &sdvx, &sdvy, &sdvz, &sdxx, &sdyy, + &sdzz, &sdxy, &sdxz, &sdyz, &szc, &stretch_ratio); + if (parsed != 31 && px == 0 && py == 0) + fprintf(stderr, "Failed to parse: %s \n", MMSFILE); + + + if (px == 0 && py == 0) { + printf("Done reading mms input file\n"); + printf("Settings: \n"); + printf(" cp0 = %g cs0 = %g rho0 = %g \n", scp0, scs0, srho0); + printf(" dcp = %g dcs = %g drho = %g \n", sdcp, sdcs, sdrho); + printf(" kx = %g ky = %g kz = %g \n", kx, ky, kz); + printf(" vx0 = %g vy0 = %g vz0 = %g \n", svx0, svy0, svz0); + printf(" xx0 = %g yy0 = %g zz0 = %g \n", sxx0, syy0, szz0); + printf(" xy0 = %g xz0 = %g yz0 = %g \n", sxy0, sxz0, syz0); + printf(" dvx = %g dvy = %g dvz = %g \n", sdvx, sdvy, sdvz); + printf(" dxx = %g dyy = %g dzz = %g \n", sdxx, sdyy, sdzz); + printf(" dxy = %g dxz = %g dyz = %g \n", sdxy, sdxz, sdyz); + printf(" zc = %g \n", szc); + printf(" stretch_ratio = %g \n", stretch_ratio); + } + + + const int INTERIOR = 1; + dim3 threads (32, 4, 1); + for (int p = 0; p < ngrids; ++p) { + + int mz = nzt[p]; + int my = nyt[p] + 2 * ngsl + 4; + int mx = nxt[p] + 2 * ngsl + 4; + + float mu0 = scs0 * scs0 * srho0; + float dmu = sdcs * sdcs * sdrho; + float lam0 = scp0 * scp0 * srho0 - 2.0 * scs0 * scs0 * srho0; + float dlam = sdcp * sdcp * sdrho - 2.0 * sdcs * sdcs * sdrho; + printf("mu0 = %g lam0 = %g dlam = %g dmu = %g \n", mu0, lam0, dlam, dmu); + + if (px == 0 && py == 0) printf("Setting material properties for grid = %d \n", p); + // Set material properties + dim3 blocks( (mz - 1) / threads.x + 1, (my - 1) / threads.y + 1, (mx - 1) / threads.z + 1); + material_properties<<>>( + d_d1[p], d_lam[p], d_mu[p], d_qp[p], d_qs[p], lam0, mu0, + srho0, dlam, dmu, sdrho, kx, ky, kz, nxt[p], nyt[p], nzt[p], px, + py, p, h[p]); + + if (px == 0 && py == 0) printf("Setting velocity initial conditions for grid = %d \n", p); + // Set initial conditions for velocity + mms_exact_velocity( + d_vx[p], d_vy[p], d_vz[p], + nxt[p], nyt[p], nzt[p], + px, py, p, + 0, 0, 0, + 2 + 2 * ngsl + nxt[p], 4 + 2 * ngsl + nyt[p], nzt[p], + h[p], 0.0f - 0.5f * dt, INTERIOR); + + if (px == 0 && py == 0) printf("Setting stress initial conditions for grid = %d \n", p); + // Set initial conditions for stress + mms_exact_stress( + d_xx[p], d_yy[p], d_zz[p], + d_xy[p], d_xz[p], d_yz[p], + nxt[p], nyt[p], nzt[p], + px, py, p, + 0, 0, 0, + 4 + 2 * ngsl + nxt[p], 4 + 2 * ngsl + nyt[p], nzt[p], + h[p], 0.0f - 0.0f * dt, INTERIOR); + CUCHK(cudaGetLastError()); + + + + } + + if (px == 0 && py == 0) printf("MMS initialization done. \n"); +} + +void mms_exact_velocity( + float *d_vx, float *d_vy, float *d_vz, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const int bi, const int bj, const int bk, + const int ei, const int ej, const int ek, + const float h, const float t, const int apply_in_interior) +{ + int mz = nz; + int my = ny + 2 * ngsl + 4; + int mx = nx + 2 * ngsl + 4; + dim3 threads(32, 4, 1); + dim3 blocks((mz - 1) / threads.x + 1, (my - 1) / threads.y + 1, + (mx - 1) / threads.z + 1); + + exact_velocity<<>>( + d_vx, d_vy, d_vz, + svx0, svy0, svz0, + sxx0, syy0, szz0, + sxy0, sxz0, syz0, + sdvx, sdvy, sdvz, + sdxx, sdyy, sdzz, + sdxy, sdxz, sdyz, + scp0, scs0, srho0, + sdcp, sdcs, sdrho, + szc, + kx, ky, kz, + nx, ny, nz, + px, py, pz, + bi, bj, bk, + ei, ej, ek, + h, t, apply_in_interior, stretch_ratio); + CUCHK(cudaGetLastError()); +} + +void mms_exact_stress( + float *d_xx, float *d_yy, float *d_zz, + float *d_xy, float *d_xz, float *d_yz, + const int nx, const int ny, const int nz, + const int px, const int py, const int pz, + const int bi, const int bj, const int bk, + const int ei, const int ej, const int ek, + const float h, const float t, const int apply_in_interior) +{ + int mz = nz; + int my = ny + 2 * ngsl + 4; + int mx = nx + 2 * ngsl + 4; + dim3 threads(32, 4, 1); + dim3 blocks((mz - 1) / threads.x + 1, (my - 1) / threads.y + 1, + (mx - 1) / threads.z + 1); + exact_stress<<>>( + d_xx, d_yy, d_zz, + d_xy, d_xz, d_yz, + svx0, svy0, svz0, + sxx0, syy0, szz0, + sxy0, sxz0, syz0, + sdvx, sdvy, sdvz, + sdxx, sdyy, sdzz, + sdxy, sdxz, sdyz, + scp0, scs0, srho0, + sdcp, sdcs, sdrho, + szc, + kx, ky, kz, + nx, ny, nz, + px, py, pz, + bi, bj, bk, + ei, ej, ek, + h, t, apply_in_interior, stretch_ratio); + CUCHK(cudaGetLastError()); + +} + +void mms_force_velocity(float *d_vx, float *d_vy, float *d_vz, const int nx, const int ny, const int nz, const float h, const int px, const int py, const int pz, const float t, const float dt) +{ + int mz = nz; + int my = ny + 2 * ngsl + 4; + int mx = nx + 2 * ngsl + 4; + dim3 threads (32, 4, 1); + dim3 blocks( (mz - 1) / threads.x + 1, (my - 1) / threads.y + 1, (mx - 1) / threads.z + 1); + force_velocity<<>>( + d_vx, d_vy, d_vz, + svx0, svy0, svz0, + sxx0, syy0, szz0, + sxy0, sxz0, syz0, + sdvx, sdvy, sdvz, + sdxx, sdyy, sdzz, + sdxy, sdxz, sdyz, + scp0, scs0, srho0, + sdcp, sdcs, sdrho, + nx, ny, nz, + px, py, pz, h, t, dt); + CUCHK(cudaGetLastError()); +} +void mms_force_stress(float *d_xx, float *d_yy, float *d_zz, float *d_xy, + float *d_xz, float *d_yz, const int nx, const int ny, const int nz, + const float h, const int px, const int py, const int pz, const float t, const float dt) { + int mz = nz; + int my = ny + 2 * ngsl + 4; + int mx = nx + 2 * ngsl + 4; + dim3 threads(32, 4, 1); + dim3 blocks( (mz - 1) / threads.x + 1, (my - 1) / threads.y + 1, (mx - 1) / threads.z + 1); + force_stress<<>>( + d_xx, d_yy, d_zz, + d_xy, d_xz, d_yz, + svx0, svy0, svz0, + sxx0, syy0, szz0, + sxy0, sxz0, syz0, + sdvx, sdvy, sdvz, + sdxx, sdyy, sdzz, + sdxy, sdxz, sdyz, + scp0, scs0, srho0, + sdcp, sdcs, sdrho, + nx, ny, nz, + px, py, pz, h, t, dt); + CUCHK(cudaGetLastError()); +} + + diff --git a/src/topography/mms.py b/src/topography/mms.py new file mode 100644 index 0000000..67f3e8c --- /dev/null +++ b/src/topography/mms.py @@ -0,0 +1,96 @@ +import sympy as sp + + +rho, cp, cs = sp.symbols("rho cp cs") +#rho0, cp0, cs0 = sp.symbols("rho0 cp0 cs0") +#drho, dcp, dcs = sp.symbols("drho dcp dcs") + +vx0, vy0, vz0 = sp.symbols("vx0 vy0 vz0") +xx0, yy0, zz0 = sp.symbols("xx0 yy0 zz0") +xy0, xz0, yz0 = sp.symbols("xy0 xz0 yz0") +dvx, dvy, dvz = sp.symbols("dvx dvy dvz") +dxx, dyy, dzz = sp.symbols("dxx dyy dzz") +dxy, dxz, dyz = sp.symbols("dxy dxz dyz") + +x, y, z, t, kx, ky, kz, om_p, om_c, dt = sp.symbols("x y z t kx ky kz om_p om_c dt") +lam, mu = sp.symbols("lam mu") + +S = sp.sin(kx * x) * sp.sin(ky * y) * sp.sin(kz * z) + +#rho = rho0# + drho * S +#cs = cs0# + dcs * S +#cp = cp0# + dcp * S + +Vp = sp.sin(kz * z) * sp.sin(om_p * t) +vx = 0 +vy = 0 +vz = vz0 + Vp * dvz + +xx = 0 +yy = 0 +zz = zz0 + Vp * dzz +xy = 0 +xz = 0 +yz = 0 + + + +vx_t = sp.diff(vx, t) +vy_t = sp.diff(vy, t) +vz_t = sp.diff(vz, t) + +vx_x = sp.diff(vx, x) +vy_x = sp.diff(vy, x) +vz_x = sp.diff(vz, x) + +vx_y = sp.diff(vx, y) +vy_y = sp.diff(vy, y) +vz_y = sp.diff(vz, y) + +vx_z = sp.diff(vx, z) +vy_z = sp.diff(vy, z) +vz_z = sp.diff(vz, z) + +xx_x = sp.diff(xx, x) +yy_x = sp.diff(yy, x) +zz_x = sp.diff(zz, x) + +xx_y = sp.diff(xx, y) +yy_y = sp.diff(yy, y) +zz_y = sp.diff(zz, y) + +xx_z = sp.diff(xx, z) +yy_z = sp.diff(yy, z) +zz_z = sp.diff(zz, z) + +xx_t = sp.diff(xx, t) +yy_t = sp.diff(yy, t) +zz_t = sp.diff(zz, t) + +xy_x = sp.diff(xy, x) +xz_x = sp.diff(xz, x) +yz_x = sp.diff(yz, x) + +xy_y = sp.diff(xy, y) +xz_y = sp.diff(xz, y) +yz_y = sp.diff(yz, y) + +xy_z = sp.diff(xy, z) +xz_z = sp.diff(xz, z) +yz_z = sp.diff(yz, z) + +xy_t = sp.diff(xy, t) +xz_t = sp.diff(xz, t) +yz_t = sp.diff(yz, t) + +f_vx = vx_t - (xx_x + xy_y + xz_z) / rho +f_vy = vy_t - (xy_x + yy_y + yz_z) / rho +f_vz = vz_t - (xz_x + yz_y + zz_z) / rho + +div = vx_x + vy_y + vz_z +f_zz = zz_t - (lam * div + 2 * mu * vz_z) +print("d_vz[pos] = ", sp.ccode(vz) + ";") +print("d_zz[pos] = ", sp.ccode(zz) + ";") + +print("d_vz[pos] += ", sp.ccode(dt * f_vz) + ";") +print("d_zz[pos] += ", sp.ccode(dt * f_zz) + ";") diff --git a/src/topography/opt_topography.cu b/src/topography/opt_topography.cu deleted file mode 100644 index a8af372..0000000 --- a/src/topography/opt_topography.cu +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -void topo_init_material_H(topo_t *T) -{ - fprintf(stderr, "Not Implemented\n"); -} - - diff --git a/src/topography/receivers/receivers.c b/src/topography/receivers/receivers.c index ea903e7..e2f8b3c 100644 --- a/src/topography/receivers/receivers.c +++ b/src/topography/receivers/receivers.c @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include #include @@ -78,6 +78,53 @@ size_t receivers_last_step(void) return last_step; } +recv_t receivers_get_receiver(enum grid_types grid_type) +{ + switch (grid_type) + { + case XX: + fprintf(stderr, "No receiver can exist on grid XX\n"); + break; + case YY: + fprintf(stderr, "No receiver can exist on grid YY\n"); + break; + case ZZ: + fprintf(stderr, "No receiver can exist on grid ZZ\n"); + break; + case XY: + fprintf(stderr, "No receiver can exist on grid XY\n"); + break; + case XZ: + fprintf(stderr, "No receiver can exist on grid XZ\n"); + break; + case YZ: + fprintf(stderr, "No receiver can exist on grid YZ\n"); + break; + case SX: + fprintf(stderr, "No receiver can exist on grid SX\n"); + break; + case SY: + fprintf(stderr, "No receiver can exist on grid SY\n"); + break; + case SZ: + fprintf(stderr, "No receiver can exist on grid SZ\n"); + break; + case X: + return rx; + break; + case Y: + return ry; + break; + case Z: + return rz; + break; + case NODE: + fprintf(stderr, "No receiver can exist on grid NODE\n"); + break; + } + return rx; +} + void receivers_step_format(char *out, size_t step, const char *base) { sprintf(out, "%s_%0*ld", base, leading_zeros, step); diff --git a/src/topography/receivers/sgt.c b/src/topography/receivers/sgt.c index 41fe0f7..d67b71e 100644 --- a/src/topography/receivers/sgt.c +++ b/src/topography/receivers/sgt.c @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/topography/sources/forces.c b/src/topography/sources/forces.c index 12d01d1..7fa69e1 100644 --- a/src/topography/sources/forces.c +++ b/src/topography/sources/forces.c @@ -8,7 +8,9 @@ #include #include #include +#include #include +#include "interpolation/interpolation.h" static int use; @@ -17,13 +19,41 @@ static source_t Fx; static source_t Fy; static source_t Fz; +// Density at force location +static float *d_rho_interp_x, *d_rho_interp_y, *d_rho_interp_z; + static input_t input; static int myrank; +void interpolate_density(float **d_rho_interp, const float *d_rho, + const source_t *F, const grids_t *grids, const int degree); +void interpolate_density(float **d_rho_interp, const float *d_rho, + const source_t *F, const grids_t *grids, const int degree) { + if (!F->use) return; + + cu_interp_t d_interp; + // Interpolate density to the force location + size_t num_bytes = sizeof(float) * F->lengths[0]; + cudaMalloc((void**)d_rho_interp, num_bytes); + + grid3_t grid = grid_init_full_grid(grids->z.inner_size, + grid_node(), grids->z.coordinate, grids->z.boundary1, + grids->z.boundary2, grids->z.gridspacing); + grid_data_t xyz; + grid_data_init(&xyz, grid); + AWPCHK(cuinterp_init(&d_interp, xyz.x, xyz.y, xyz.z, + grid, F->x[0], F->y[0], F->z[0], + F->global_indices[0], + F->lengths[0], degree)); + cuinterp_interp_H(&d_interp, *d_rho_interp, d_rho); + cuinterp_finalize(&d_interp); + +} + void forces_init(const char *filename, const grids_t *grids, int ngrids, - const f_grid_t *f, const MPI_Comm comm, const int rank, - const int size) + const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, + const int size, const float *rho, const int istopo) { use = strcmp(filename, "") != 0 ? 1 : 0; @@ -31,8 +61,6 @@ void forces_init(const char *filename, const grids_t *grids, int ngrids, if (!use) return; - // FIXME: Add support for multiple grids - if (rank == 0) { AWPCHK(input_init(&input, filename)); } @@ -44,6 +72,12 @@ void forces_init(const char *filename, const grids_t *grids, int ngrids, Fz = source_init("fz", SZ, &input, grids, ngrids, f, rank, comm, FORCE); if (Fx.use) AWPCHK(forces_boundary_check(&Fx)); + if (Fy.use) AWPCHK(forces_boundary_check(&Fy)); + if (Fz.use) AWPCHK(forces_boundary_check(&Fz)); + + interpolate_density(&d_rho_interp_x, rho, &Fx, grids, input.degree); + interpolate_density(&d_rho_interp_y, rho, &Fy, grids, input.degree); + interpolate_density(&d_rho_interp_z, rho, &Fz, grids, input.degree); } @@ -74,6 +108,7 @@ void forces_add(prec *d_u1, prec *d_v1, prec *d_w1, const prec *d_d1, const size const prec h, const prec dt, const f_grid_t *f, const g_grid_t *g, const int grid_num) { + if (!use) return; int nx = f->size[0]; @@ -88,12 +123,34 @@ void forces_add(prec *d_u1, prec *d_v1, prec *d_w1, const prec *d_d1, const size prec q = 3.55599789310935; prec qh = 2.9022824945274315; - source_add_force(d_u1, d_d1, &Fx, step, h, dt, qh, f->d_f_1, nx, ny, nz, - g->d_g3_c, grid_num); - source_add_force(d_v1, d_d1, &Fy, step, h, dt, qh, f->d_f_2, nx, ny, nz, - g->d_g3_c, grid_num); - source_add_force(d_w1, d_d1, &Fz, step, h, dt, q, f->d_f_c, nx, ny, nz, - g->d_g3, grid_num); + source_add_force(d_u1, d_rho_interp_x, &Fx, step, h, dt, qh, f->d_f_1, nx, ny, nz, + g->d_g3_c, grid_num, 0, 1); + source_add_force(d_v1, d_rho_interp_y, &Fy, step, h, dt, qh, f->d_f_2, nx, ny, nz, + g->d_g3_c, grid_num, 0, 2); + source_add_force(d_w1, d_rho_interp_z, &Fz, step, h, dt, q, f->d_f_c, nx, ny, nz, + g->d_g3, grid_num, 0, 3); +} + +void forces_add_cartesian(prec *d_xz, prec *d_yz, prec *d_zz, const size_t step, + const int nx, const int ny, const int nz, const prec h, const prec dt, const int grid_num) +{ + + if (!use) return; + + source_add_force(d_xz, d_rho_interp_x, &Fx, step, h, dt, 1.0, NULL, nx, ny, nz, NULL, grid_num, 1, 1); + source_add_force(d_yz, d_rho_interp_y, &Fy, step, h, dt, 1.0, NULL, nx, ny, nz, NULL, grid_num, 1, 2); + source_add_force(d_zz, d_rho_interp_z, &Fz, step, h, dt, 1.0, NULL, nx, ny, nz, NULL, grid_num, 1, 3); +} + +void forces_add_cartesian_velocity(prec *d_vx, prec *d_vy, prec *d_vz, const size_t step, + const int nx, const int ny, const int nz, const prec h, const prec dt, const int grid_num) +{ + + if (!use) return; + + source_add_force(d_vx, d_rho_interp_x, &Fx, step, h, dt, 1.0, NULL, nx, ny, nz, NULL, grid_num, 2, 1); + source_add_force(d_vy, d_rho_interp_y, &Fy, step, h, dt, 1.0, NULL, nx, ny, nz, NULL, grid_num, 2, 2); + source_add_force(d_vz, d_rho_interp_z, &Fz, step, h, dt, 1.0, NULL, nx, ny, nz, NULL, grid_num, 2, 3); } void forces_finalize(void) @@ -103,5 +160,12 @@ void forces_finalize(void) source_finalize(&Fx); source_finalize(&Fy); source_finalize(&Fz); + + if (d_rho_interp_x != NULL) cudaFree(d_rho_interp_x); + if (d_rho_interp_y != NULL) cudaFree(d_rho_interp_y); + if (d_rho_interp_z != NULL) cudaFree(d_rho_interp_z); } + + + diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 68a0978..76b5ba4 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -17,6 +17,7 @@ #include #define OVERLAP 7.0 +//#define DEBUG_SOURCE void source_init_indexed(source_t *src, const input_t *input, size_t num_reads); @@ -82,12 +83,6 @@ void source_find_grid_number(const input_t *input, const grids_t *grids, int *gr const int length, const int num_grids) { - - for (int j = 0; j < length; ++j) - { - grid_number[j] = -1; - } - _prec lower = 0; _prec upper = 0; _prec overlap = 0; @@ -95,7 +90,7 @@ void source_find_grid_number(const input_t *input, const grids_t *grids, int *gr { prec *z1 = malloc(sizeof z1 * grids[i].z.size.z); grid1_t z_grid = grid_grid1_z(grids[i].z); - grid_fill1(z1, z_grid); + grid_fill1(z1, z_grid, 0); upper = lower; lower = lower - z1[z_grid.end]; @@ -171,49 +166,13 @@ void source_init_common(source_t *src, const char *filename, source_find_grid_number(input, grids, grid_number, indices, input->length, ngrids); - // Determine offsets for the DM - _prec *dm_offset_x = malloc(sizeof dm_offset_x * ngrids); - _prec *dm_offset_y = malloc(sizeof dm_offset_y * ngrids); - _prec *dm_offset_z = malloc(sizeof dm_offset_z * ngrids); - grid3_t grid_top = grids_select(grid_type, &grids[0]); - dm_offset_x[0] = 0; - dm_offset_y[0] = 0; - dm_offset_z[0] = 0; - for (int j = 1; j < ngrids; ++j) - { - grid3_t grid_pre = grids_select(grid_type, &grids[j - 1]); - grid3_t grid_cur = grids_select(grid_type, &grids[j]); - dm_offset_x[j] = dm_offset_x[j - 1] + - SOURCE_DM_OFFSET_X * grid_pre.gridspacing - - (grid_cur.shift.x * 0.5 * grid_cur.gridspacing - grid_pre.shift.x * 0.5 * grid_pre.gridspacing); - dm_offset_y[j] = dm_offset_y[j - 1] + - SOURCE_DM_OFFSET_Y * grid_pre.gridspacing - - (grid_cur.shift.y * 0.5 * grid_cur.gridspacing - grid_pre.shift.y * 0.5 * grid_pre.gridspacing); - dm_offset_z[j] = grid_top.shift.z * 0.5 * grid_top.gridspacing - - (grid_cur.shift.z * 0.5 * grid_cur.gridspacing); - } - for (size_t i = 0; i < input->length; ++i) { - // Shift by 0.5 such that x = 0, y = 0 is - // located at a material or topography grid - // point. - x[i] = input->x[i] + - SOURCE_OFFSET_X * grid_top.gridspacing; + x[i] = input->x[i]; y[i] = input->y[i]; z[i] = input->z[i]; - - int grid_num = grid_number[i]; - - // Apply DM-specific shift for all other blocks - x[i] = x[i] + dm_offset_x[grid_num]; - y[i] = y[i] + dm_offset_y[grid_num]; - z[i] = z[i] + dm_offset_z[grid_num]; } - free(dm_offset_x); - free(dm_offset_y); - free(dm_offset_z); free(indices); src->length = 0; @@ -329,6 +288,7 @@ void source_init_common(source_t *src, const char *filename, lower = lower - block_height + overlap; + if (src->lengths[j] == 0) { src->x[j] = NULL; @@ -348,9 +308,10 @@ void source_init_common(source_t *src, const char *filename, prec *y1 = malloc(sizeof y1 * y_grid.size); prec *z1 = malloc(sizeof z1 * z_grid.size); - grid_fill1(x1, x_grid); - grid_fill1(y1, y_grid); - grid_fill1(z1, z_grid); + grid_fill1(x1, x_grid, 1); + grid_fill1(y1, y_grid, 0); + grid_fill1(z1, z_grid, 0); + // Interpolate topography data to source location in // (x,y) space @@ -411,7 +372,11 @@ void source_init_common(source_t *src, const char *filename, // block can be surface // coordinates assert(j == 0); - src->z[j][k] = block_height; + // Subtract 2h so the source location appears in the + // interior of the grid. This hack prevents the stencil from + // becoming one-sided. The index gets correctly adjusted by + // changing the interpolation index below + src->z[j][k] = block_height - 1 * grid.gridspacing; break; } } @@ -435,6 +400,19 @@ void source_init_common(source_t *src, const char *filename, src->global_indices[j], src->lengths[j], input->degree)); + // Correct interpolation coefficients when the receivers appear on the free surface + if (f == NULL && j == 0) { + for (size_t k = 0; k < src->lengths[j]; ++k) { + switch (src->type[j][k]) { + case INPUT_SURFACE_COORD: + src->interpolation[j].iz[k] += + 1; + } + } + } + + cuinterp_htod(&src->interpolation[j]); + //Special treatment for sources located in the overlap zone if (ngrids > 1) { @@ -475,6 +453,7 @@ void source_init_common(source_t *src, const char *filename, } //k loop } + #ifdef DEBUG_SOURCE { grid3_t vel_grid = grid_init_stress_grid( @@ -488,14 +467,19 @@ void source_init_common(source_t *src, const char *filename, prec *y1 = malloc(sizeof y1 * y_grid.size); prec *z1 = malloc(sizeof z1 * z_grid.size); - grid_fill1(x1, x_grid); - grid_fill1(y1, y_grid); - grid_fill1(z1, z_grid); + grid_fill1(x1, x_grid, 1); + grid_fill1(y1, y_grid, 0); + grid_fill1(z1, z_grid, 0); - if (grid_type == SX || grid_type == SY || grid_type == SZ) + for (int i = 120; i < 128; ++i) { + printf("%3.2f ", z1[i]); + } + printf("\n"); + + if (grid_type == X || grid_type == Y || grid_type == Z || grid_type == SX || grid_type == SY || grid_type == SZ || grid_type == XX || grid_type == XZ || grid_type == NODE) { - printf("rank = %d, grid_type = %d, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", - rank, grid_type, grid.shift.x, grid.shift.y, grid.shift.z, + printf("rank = %d, grid_type = %s, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", + rank, grid_typename(grid_type), grid.shift.x, grid.shift.y, grid.shift.z, j, x1[ngsl / 2], y1[ngsl / 2], z1[0], grid.gridspacing); @@ -538,6 +522,7 @@ void source_init_common(source_t *src, const char *filename, grid_data_free(&xyz); } // end loop j + free(grid_number); free(x); free(y); @@ -627,7 +612,7 @@ void source_add_force(prec *out, const prec *d1, source_t *src, const prec quad_weight, const prec *f, const int nx, const int ny, const int nz, const prec *dg, - const int grid_num) + const int grid_num, const int sourcetype, const int dir) { if (!src->use || !buffer_is_device_ready(&src->buffer, step) || src->lengths[grid_num] == 0) @@ -635,5 +620,6 @@ void source_add_force(prec *out, const prec *d1, source_t *src, prec *source_data = buffer_get_device_ptr(&src->buffer, step); cusource_add_force_H(&src->interpolation[grid_num], out, - source_data, d1, h, dt, quad_weight, f, nx, ny, nz, dg); + source_data, d1, h, dt, quad_weight, f, nx, + ny, nz, dg, sourcetype, dir); } diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 8934a45..4798981 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -110,6 +111,7 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, prec Ji = 1.0 / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k)); + int pos = (iz[q] + k) + align + (2 * align + nz) * (ix[q] + i) * (2 * ngsl + ny + 4) + @@ -139,20 +141,34 @@ void cusource_add_force_H(const cu_interp_t *I, prec *out, const prec *in, const prec *d1, const prec h, const prec dt, const prec quad_weight, const prec *f, const int nx, const int ny, - const int nz, const prec *dg) + const int nz, const prec *dg, const int sourcetype, const int dir) { dim3 block (INTERP_THREADS, 1, 1); dim3 grid((I->num_query + INTERP_THREADS - 1) / INTERP_THREADS, 1, 1); + if (sourcetype == 0) { cusource_add_force<<>>( out, in, d1, I->d_lx, I->d_ly, I->d_lz, I->num_basis, I->d_ix, I->d_iy, I->d_iz, I->d_ridx, h, dt, quad_weight, I->num_query, I->grid, f, nx, ny, nz, dg); + } + else if (sourcetype == 1) { + cusource_add_force_stress<<>>( + out, in, d1, I->d_lx, I->d_ly, I->d_lz, I->num_basis, I->d_ix, + I->d_iy, I->d_iz, I->d_ridx, h, dt, quad_weight, I->num_query, + I->grid, f, nx, ny, nz, dg, dir); + + } + else { + cusource_add_force_velocity<<>>( + out, in, d1, I->d_lx, I->d_ly, I->d_lz, I->num_basis, I->d_ix, + I->d_iy, I->d_iz, I->d_ridx, h, dt, quad_weight, I->num_query, + I->grid, f, nx, ny, nz, dg, dir); + } CUCHK(cudaGetLastError()); } -#include __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, const prec *lx, const prec *ly, const prec *lz, const int num_basis, @@ -183,9 +199,9 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, // Do not apply stencil at halo points if ( ix[q] + i >= 2 + nx + ngsl || ix[q] + i < 2 + ngsl || iy[q] + j >= 2 + ny + ngsl || iy[q] + j < 2 + ngsl ) continue; - prec Ji = - - quad_weight / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k) * - _rho(i + ix[q], j + iy[q], iz[q] + k)); + + prec J = _f(i + ix[q], j + iy[q]) * _dg(iz[q] + k); + prec Ji = - quad_weight /(J * d1[q]); int pos = (iz[q] + k) + align + (2 * align + nz) * (ix[q] + i) * (2 * ngsl + ny + 4) + @@ -202,3 +218,87 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, } } +__global__ void cusource_add_force_stress(prec *out, const prec *in, const prec *d1, + const prec *lx, const prec *ly, + const prec *lz, const int num_basis, + const int *ix, const int *iy, const int *iz, + const int *lidx, const prec h, const prec dt, + const prec quad_weight, + const int num_query, const grid3_t grid, + const prec *f, const int nx, const int ny, + const int nz, const prec *dg, const int dir) +{ + int q = threadIdx.x + blockDim.x * blockIdx.x; + if (q >= num_query) { + return; + } + + + prec dth = 1.0 / (h * h); + int k = nz - 1; + + for (int i = 0; i < num_basis; ++i) { + for (int j = 0; j < num_basis; ++j) { + // Do not apply stencil at halo points + if ( ix[q] + i >= 2 + nx + ngsl || ix[q] + i < 2 + ngsl || + iy[q] + j >= 2 + ny + ngsl || iy[q] + j < 2 + ngsl ) continue; + + int pos = + (k) + align + + (2 * align + nz) * (ix[q] + i) * (2 * ngsl + ny + 4) + + (2 * align + nz) * (iy[q] + j); + prec value = dth * lx[q * num_basis + i] * + ly[q * num_basis + j] * in[lidx[q]]; + if (dir == 1 || dir == 2) { + out[pos] = value; + out[pos+1] = 2 * value - out[pos-1]; + out[pos+2] = 2 * value - out[pos-2]; + } + if (dir == 3) { + out[pos+1] = 2 * value - out[pos]; + out[pos+2] = 2 * value - out[pos-1]; + } + } + } +} + +__global__ void cusource_add_force_velocity(prec *out, const prec *in, const prec *d1, + const prec *lx, const prec *ly, + const prec *lz, const int num_basis, + const int *ix, const int *iy, const int *iz, + const int *lidx, const prec h, const prec dt, + const prec quad_weight, + const int num_query, const grid3_t grid, + const prec *f, const int nx, const int ny, + const int nz, const prec *dg, const int dir) +{ + int q = threadIdx.x + blockDim.x * blockIdx.x; + if (q >= num_query) { + return; + } + + + prec dth = dt / (h * h * h); + int k = nz - 1; + + for (int i = 0; i < num_basis; ++i) { + for (int j = 0; j < num_basis; ++j) { + // Do not apply stencil at halo points + if ( ix[q] + i >= 2 + nx + ngsl || ix[q] + i < 2 + ngsl || + iy[q] + j >= 2 + ny + ngsl || iy[q] + j < 2 + ngsl ) continue; + + int pos = + (k) + align + + (2 * align + nz) * (ix[q] + i) * (2 * ngsl + ny + 4) + + (2 * align + nz) * (iy[q] + j); + prec value = dth * lx[q * num_basis + i] * + ly[q * num_basis + j] / d1[q] * in[lidx[q]]; +#if USE_ATOMICS + atomicAdd(&out[pos], 1.0 * value); + atomicAdd(&out[pos - 1], -0.0 * value); +#else + out[pos] += value; +#endif + } + } +} diff --git a/src/topography/sources/sources.c b/src/topography/sources/sources.c index ea3a015..8448d76 100644 --- a/src/topography/sources/sources.c +++ b/src/topography/sources/sources.c @@ -9,6 +9,8 @@ #include #include #include +#include +#include "interpolation/interpolation.h" static int use; @@ -24,8 +26,11 @@ static input_t input; static int myrank; +static float *F_interp; +static float *d_F_interp; + void sources_init(const char *filename, const grids_t *grids, int ngrids, - const f_grid_t *f, const MPI_Comm comm, const int rank, + const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, const int size) { use = strcmp(filename, "") != 0 ? 1 : 0; @@ -46,6 +51,32 @@ void sources_init(const char *filename, const grids_t *grids, int ngrids, Mxy = source_init("xy", XY, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); Mxz = source_init("xz", XZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); Myz = source_init("yz", YZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); + + // Interpolate mapping to the source location + // Work in progress. This idea simplifies the source application + // if (f == NULL) return; + //size_t num_bytes = sizeof F_interp * Mxx.lengths[0]; + //F_interp = malloc(num_bytes); + //grid3_t grid = grid_init_full_grid(grids->z.inner_size, + // grid_node(), grids->z.coordinate, grids->z.boundary1, + // grids->z.boundary2, grids->z.gridspacing); + //grid1_t x_grid = grid_grid1_x(grid); + //grid1_t y_grid = grid_grid1_y(grid); + //grid1_t z_grid = grid_grid1_z(grid); + //prec *x1 = malloc(sizeof x1 * x_grid.size); + //prec *y1 = malloc(sizeof y1 * y_grid.size); + //prec *z1 = malloc(sizeof z1 * z_grid.size); + //grid_fill1(x1, x_grid); + //grid_fill1(y1, y_grid); + //grid_fill1(z1, z_grid); + //metrics_interpolate_jacobian(f, F_interp, f->f, g->g3, x1, y1, z1, + // grid, Mxx.x[0], Mxx.y[0], Mxx.z[0], + // Mxx.lengths[0], input.degree); + //cudaMalloc((void**)&d_F_interp, num_bytes); + //cudaMemcpy(d_F_interp, F_interp, num_bytes, cudaMemcpyHostToDevice); + //free(x1); + //free(y1); + //free(z1); } void sources_read(size_t step) @@ -97,6 +128,20 @@ void sources_add_curvilinear(prec *d_xx, prec *d_yy, prec *d_zz, prec *d_xy, grid_num, 0); source_add_curvilinear(d_yz, &Myz, step, h, dt, f->d_f_2, ny, g->d_g3, grid_num, 0); + + // Interpolates the Jacobian to the source location (simpler, less accurate) + //source_add_curvilinear(d_xx, &Mxx, step, h, dt, d_F_interp, ny, g->d_g3_c, + // grid_num, 1); + //source_add_curvilinear(d_yy, &Myy, step, h, dt, d_F_interp, ny, g->d_g3_c, + // grid_num, 1); + //source_add_curvilinear(d_zz, &Mzz, step, h, dt, d_F_interp, ny, g->d_g3_c, + // grid_num, 1); + //source_add_curvilinear(d_xy, &Mxy, step, h, dt, d_F_interp, ny, g->d_g3_c, + // grid_num, 1); + //source_add_curvilinear(d_xz, &Mxz, step, h, dt, d_F_interp, ny, g->d_g3, + // grid_num, 0); + //source_add_curvilinear(d_yz, &Myz, step, h, dt, d_F_interp, ny, g->d_g3, + // grid_num, 0); } source_t sources_get_source(enum grid_types grid_type) @@ -157,5 +202,8 @@ void sources_finalize(void) source_finalize(&Mxy); source_finalize(&Mxz); source_finalize(&Myz); + + if (F_interp != NULL )free(F_interp); + if (d_F_interp != NULL )cudaFree(d_F_interp); } diff --git a/src/topography/stress.cu b/src/topography/stress.cu index 20c79b8..a89301f 100644 --- a/src/topography/stress.cu +++ b/src/topography/stress.cu @@ -2,9 +2,86 @@ #include #include -#include -#include #include +#include + + +// Threads in x, y, z +#ifndef STRIU_TX +#define STRIU_TX 32 +#endif + +#ifndef STRIU_TY +#define STRIU_TY 1 +#endif + +#ifndef STRIU_TZ +#define STRIU_TZ 4 +#endif + +// Unroll factor in CUDA x +#ifndef STRIU_RX +#define STRIU_RX 1 +#endif + +// Unroll factor in CUDA y +#ifndef STRIU_RY +#define STRIU_RY 2 +#endif + +// Number of threads per block to use for interior stress kernel +#ifndef STR_INT_X +#define STR_INT_X 32 +#endif +#ifndef STR_INT_Y +#define STR_INT_Y 4 +#endif +#ifndef STR_INT_Z +#define STR_INT_Z 1 +#endif + +#ifndef DTOPO_STR_110_X +#define DTOPO_STR_110_X STR_INT_X +#endif + +#ifndef DTOPO_STR_110_Y +#define DTOPO_STR_110_Y STR_INT_Y +#endif + +#ifndef DTOPO_STR_110_Z +#define DTOPO_STR_110_Z STR_INT_Z +#endif + +#ifndef DTOPO_STR_111_X +#define DTOPO_STR_111_X STR_INT_X +#endif + +#ifndef DTOPO_STR_111_Y +#define DTOPO_STR_111_Y STR_INT_Y +#endif + +#ifndef DTOPO_STR_111_Z +#define DTOPO_STR_111_Z STR_INT_Z +#endif + +#ifndef DTOPO_STR_112_X +#define DTOPO_STR_112_X STR_INT_X +#endif + +#ifndef DTOPO_STR_112_Y +#define DTOPO_STR_112_Y STR_INT_Y +#endif + +#ifndef DTOPO_STR_112_Z +#define DTOPO_STR_112_Z STR_INT_Z +#endif + +#define DTOPO_STR_110_LOOP_Z 1 +#define DTOPO_STR_111_LOOP_Z 1 +#define DTOPO_STR_112_LOOP_Z 1 + +#include "kernels/stress.cu" +#include "kernels/stress_index_unroll.cu" inline dim3 set_grid(const dim3 block, const int3_t size, const dim3 loop) { @@ -15,6 +92,12 @@ inline dim3 set_grid(const dim3 block, const int3_t size, const dim3 loop) return out; } +void topo_set_constants(topo_t *T) +{ + set_constants(T->gridspacing, T->dth * T->gridspacing, T->nx, T->ny, + T->nz); +} + void topo_stress_interior_H(topo_t *T) { @@ -23,20 +106,25 @@ void topo_stress_interior_H(topo_t *T) printf("launching %s(%d)\n", __func__, T->rank); } - { - dim3 block(DTOPO_STR_111_X, DTOPO_STR_111_Y, - DTOPO_STR_111_Z); - int3_t size = {(int)T->stress_bounds_right[0] - T->stress_bounds_left[1], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_111_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_111<<stream_i>>> + + int shift = ngsl + 2; + { + int3_t size = {T->stress_bounds_right[0] - T->stress_bounds_left[0], + T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], + (int)T->stress_grid_interior.z}; + + dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); + dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, + (size.y - 1) / (STRIU_RY * threads.y) + 1, + (size.x - 1) / (threads.z) + 1); + + dtopo_str_111_index_unroll<<stream_i>>> ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, + T->xx, T->yy, T->zz, + T->xy, T->xz, T->yz, + T->r1, T->r2, T->r3, + T->r4, T->r5, T->r6, T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, T->metrics_f.d_f, T->metrics_f.d_f1_1, T->metrics_f.d_f1_2, @@ -52,15 +140,24 @@ void topo_stress_interior_H(topo_t *T) T->metrics_g.d_g3_c, T->metrics_g.d_g_c, T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[1], T->stress_bounds_ydir[0], - T->stress_bounds_right[0], T->stress_bounds_ydir[1]); + T->mui, + T->qpi, + T->coeff, + T->qsi, + T->dcrjx, T->dcrjy, T->dcrjz, + T->vx1, + T->vx2, + T->ww, + T->wwo, + T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, + T->stress_bounds_left[1] + shift, + T->stress_bounds_right[0]+ shift, + T->stress_bounds_ydir[0] + shift, + T->stress_bounds_ydir[1] + shift); + CUCHK(cudaGetLastError()); } - { dim3 block(DTOPO_STR_112_X, DTOPO_STR_112_Y, DTOPO_STR_112_Z); @@ -71,10 +168,11 @@ void topo_stress_interior_H(topo_t *T) dim3 grid = set_grid(block, size, loop); dtopo_str_112<<stream_i>>> ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, + T->xx, T->yy, T->zz, + T->xy, T->xz, T->yz, + T->r1, T->r2, T->r3, + T->r4, T->r5, T->r6, T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, T->metrics_f.d_f, T->metrics_f.d_f1_1, T->metrics_f.d_f1_2, @@ -90,50 +188,21 @@ void topo_stress_interior_H(topo_t *T) T->metrics_g.d_g3_c, T->metrics_g.d_g_c, T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[1], T->stress_bounds_ydir[0], - T->stress_bounds_right[0], T->stress_bounds_ydir[1]); - - CUCHK(cudaGetLastError()); - } - - if (TOPO_DBG) { - dim3 block(DTOPO_STR_110_X, DTOPO_STR_110_Y, - DTOPO_STR_110_Z); - int3_t size = {(int)T->stress_bounds_right[0] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - TOP_BOUNDARY_SIZE}; - dim3 loop(0, 0, DTOPO_STR_110_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_110<<stream_i>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, + T->mui, + T->qpi, + T->coeff, + T->qsi, T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[1], T->stress_bounds_ydir[0], - T->stress_bounds_right[0], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); + T->vx1, + T->vx2, + T->ww, + T->wwo, + T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, + T->stress_bounds_left[1] + shift, + T->stress_bounds_right[0] + shift, + T->stress_bounds_ydir[0] + shift, + T->stress_bounds_ydir[1] + shift); + CUCHK(cudaGetLastError()); } } @@ -148,20 +217,24 @@ void topo_stress_left_H(topo_t *T) if (TOPO_DBG) { printf("launching %s(%d)\n", __func__, T->rank); } - dim3 block(DTOPO_STR_111_X, DTOPO_STR_111_Y, - DTOPO_STR_111_Z); int3_t size = {(int)T->stress_bounds_left[1] - T->stress_bounds_left[0], (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_111_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_111<<stream_1>>> + int shift = ngsl + 2; + + dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); + dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, + (size.y - 1) / (STRIU_RY * threads.y) + 1, + (size.x - 1) / (threads.z) + 1); + + dtopo_str_111_index_unroll<<stream_1>>> ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, + T->xx, T->yy, T->zz, + T->xy, T->xz, T->yz, + T->r1, T->r2, T->r3, + T->r4, T->r5, T->r6, T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, T->metrics_f.d_f, T->metrics_f.d_f1_1, T->metrics_f.d_f1_2, @@ -177,11 +250,20 @@ void topo_stress_left_H(topo_t *T) T->metrics_g.d_g3_c, T->metrics_g.d_g_c, T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[0], T->stress_bounds_ydir[0], - T->stress_bounds_left[1], T->stress_bounds_ydir[1]); + T->mui, + T->qpi, + T->coeff, + T->qsi, + T->dcrjx, T->dcrjy, T->dcrjz, + T->vx1, + T->vx2, + T->ww, + T->wwo, + T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, + T->stress_bounds_left[0] + shift, + T->stress_bounds_left[1] + shift, + T->stress_bounds_ydir[0] + shift, + T->stress_bounds_ydir[1] + shift); CUCHK(cudaGetLastError()); @@ -195,10 +277,11 @@ void topo_stress_left_H(topo_t *T) dim3 grid = set_grid(block, size, loop); dtopo_str_112<<stream_1>>> ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, + T->xx, T->yy, T->zz, + T->xy, T->xz, T->yz, + T->r1, T->r2, T->r3, + T->r4, T->r5, T->r6, T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, T->metrics_f.d_f, T->metrics_f.d_f1_1, T->metrics_f.d_f1_2, @@ -214,49 +297,21 @@ void topo_stress_left_H(topo_t *T) T->metrics_g.d_g3_c, T->metrics_g.d_g_c, T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[0], T->stress_bounds_ydir[0], - T->stress_bounds_left[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - } - - if (TOPO_DBG) { - dim3 block(DTOPO_STR_110_X, DTOPO_STR_110_Y, DTOPO_STR_110_Z); - int3_t size = { - (int)T->stress_bounds_left[1] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_110_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_110<<stream_1>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, + T->mui, + T->qpi, + T->coeff, + T->qsi, T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[0], T->stress_bounds_ydir[0], - T->stress_bounds_left[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); + T->vx1, + T->vx2, + T->ww, + T->wwo, + T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, + T->stress_bounds_left[0] + shift, + T->stress_bounds_left[1] + shift, + T->stress_bounds_ydir[0] + shift, + T->stress_bounds_ydir[1] + shift); + CUCHK(cudaGetLastError()); } } @@ -271,20 +326,24 @@ void topo_stress_right_H(topo_t *T) printf("launching %s(%d)\n", __func__, T->rank); } + int shift = ngsl + 2; { - dim3 block(DTOPO_STR_111_X, DTOPO_STR_111_Y, - DTOPO_STR_111_Z); int3_t size = {(int)T->stress_bounds_right[1] - T->stress_bounds_left[0], (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_111_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_111<<stream_2>>> + + dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); + dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, + (size.y - 1) / (STRIU_RY * threads.y) + 1, + (size.x - 1) / (threads.z) + 1); + + dtopo_str_111_index_unroll<<stream_2>>> ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, + T->xx, T->yy, T->zz, + T->xy, T->xz, T->yz, + T->r1, T->r2, T->r3, + T->r4, T->r5, T->r6, T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, T->metrics_f.d_f, T->metrics_f.d_f1_1, T->metrics_f.d_f1_2, @@ -300,11 +359,20 @@ void topo_stress_right_H(topo_t *T) T->metrics_g.d_g3_c, T->metrics_g.d_g_c, T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_right[0], T->stress_bounds_ydir[0], - T->stress_bounds_right[1], T->stress_bounds_ydir[1]); + T->mui, + T->qpi, + T->coeff, + T->qsi, + T->dcrjx, T->dcrjy, T->dcrjz, + T->vx1, + T->vx2, + T->ww, + T->wwo, + T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, + T->stress_bounds_right[0] + shift, + T->stress_bounds_right[1] + shift, + T->stress_bounds_ydir[0] + shift, + T->stress_bounds_ydir[1] + shift); CUCHK(cudaGetLastError()); } @@ -318,10 +386,11 @@ void topo_stress_right_H(topo_t *T) dim3 grid = set_grid(block, size, loop); dtopo_str_112<<stream_2>>> ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, + T->xx, T->yy, T->zz, + T->xy, T->xz, T->yz, + T->r1, T->r2, T->r3, + T->r4, T->r5, T->r6, T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, T->metrics_f.d_f, T->metrics_f.d_f1_1, T->metrics_f.d_f1_2, @@ -337,48 +406,20 @@ void topo_stress_right_H(topo_t *T) T->metrics_g.d_g3_c, T->metrics_g.d_g_c, T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_right[0], T->stress_bounds_ydir[0], - T->stress_bounds_right[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - } - - if (TOPO_DBG) { - dim3 block(DTOPO_STR_110_X, DTOPO_STR_110_Y, DTOPO_STR_110_Z); - int3_t size = { - (int)T->stress_bounds_right[1] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - TOP_BOUNDARY_SIZE}; - dim3 loop(0, 0, DTOPO_STR_110_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_110<<stream_2>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, + T->mui, + T->qpi, + T->coeff, + T->qsi, T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_right[0], T->stress_bounds_ydir[0], - T->stress_bounds_right[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); + T->vx1, + T->vx2, + T->ww, + T->wwo, + T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, + T->stress_bounds_right[0] + shift, + T->stress_bounds_right[1] + shift, + T->stress_bounds_ydir[0] + shift, + T->stress_bounds_ydir[1] + shift); + CUCHK(cudaGetLastError()); } } diff --git a/src/topography/stress_attenuation.cu b/src/topography/stress_attenuation.cu deleted file mode 100644 index 84c7e52..0000000 --- a/src/topography/stress_attenuation.cu +++ /dev/null @@ -1,376 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include - - -// Threads in x, y, z -#ifndef STRIU_TX -#define STRIU_TX 32 -#endif - -#ifndef STRIU_TY -#define STRIU_TY 1 -#endif - -#ifndef STRIU_TZ -#define STRIU_TZ 4 -#endif - -// Unroll factor in CUDA x -#ifndef STRIU_RX -#define STRIU_RX 1 -#endif - -// Unroll factor in CUDA y -#ifndef STRIU_RY -#define STRIU_RY 2 -#endif - -#include "kernels/stress_attenuation.cu" -#include "kernels/stress_index_unroll.cuh" - -inline dim3 set_grid(const dim3 block, const int3_t size, const dim3 loop) -{ - dim3 out; - out.x = ((1 - loop.x) * size.z + block.x - 1 + loop.x) / block.x; - out.y = ((1 - loop.y) * size.y + block.y - 1 + loop.y) / block.y; - out.z = ((1 - loop.z) * size.x + block.z - 1 + loop.z) / block.z; - return out; -} - -void topo_set_constants(topo_t *T) -{ - set_constants(T->gridspacing, T->dth * T->gridspacing, T->nx, T->ny, - T->nz); -} - -void topo_stress_interior_H(topo_t *T) -{ - - if (!T->use) return; - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - - - int shift = ngsl + 2; - { - int3_t size = {T->stress_bounds_right[0] - T->stress_bounds_left[0], - T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - (int)T->stress_grid_interior.z}; - - dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); - dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, - (size.y - 1) / (STRIU_RY * threads.y) + 1, - (size.x - 1) / (threads.z) + 1); - - dtopo_str_111_index_unroll<<stream_i>>> - ( - T->xx, T->yy, T->zz, - T->xy, T->xz, T->yz, - T->r1, T->r2, T->r3, - T->r4, T->r5, T->r6, - T->u1, T->v1, T->w1, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, - T->qpi, - T->coeff, - T->qsi, - T->dcrjx, T->dcrjy, T->dcrjz, - T->vx1, - T->vx2, - T->ww, - T->wwo, - T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, - T->stress_bounds_left[1] + shift, - T->stress_bounds_right[0]+ shift, - T->stress_bounds_ydir[0] + shift, - T->stress_bounds_ydir[1] + shift); - - CUCHK(cudaGetLastError()); - } - - { - dim3 block(DTOPO_STR_112_X, DTOPO_STR_112_Y, - DTOPO_STR_112_Z); - int3_t size = {(int)T->stress_bounds_right[0] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - TOP_BOUNDARY_SIZE}; - dim3 loop(0, 0, DTOPO_STR_112_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_112<<stream_i>>> - ( - T->xx, T->yy, T->zz, - T->xy, T->xz, T->yz, - T->r1, T->r2, T->r3, - T->r4, T->r5, T->r6, - T->u1, T->v1, T->w1, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, - T->qpi, - T->coeff, - T->qsi, - T->dcrjx, T->dcrjy, T->dcrjz, - T->vx1, - T->vx2, - T->ww, - T->wwo, - T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, - T->stress_bounds_left[1] + shift, - T->stress_bounds_right[0] + shift, - T->stress_bounds_ydir[0] + shift, - T->stress_bounds_ydir[1] + shift); - CUCHK(cudaGetLastError()); - } -} - -void topo_stress_left_H(topo_t *T) -{ - - if (!T->use) return; - if (T->x_rank_l < 0) { - return; - } - - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - int3_t size = {(int)T->stress_bounds_left[1] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - (int)T->stress_grid_interior.z}; - - int shift = ngsl + 2; - - dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); - dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, - (size.y - 1) / (STRIU_RY * threads.y) + 1, - (size.x - 1) / (threads.z) + 1); - - dtopo_str_111_index_unroll<<stream_1>>> - ( - T->xx, T->yy, T->zz, - T->xy, T->xz, T->yz, - T->r1, T->r2, T->r3, - T->r4, T->r5, T->r6, - T->u1, T->v1, T->w1, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, - T->qpi, - T->coeff, - T->qsi, - T->dcrjx, T->dcrjy, T->dcrjz, - T->vx1, - T->vx2, - T->ww, - T->wwo, - T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, - T->stress_bounds_left[0] + shift, - T->stress_bounds_left[1] + shift, - T->stress_bounds_ydir[0] + shift, - T->stress_bounds_ydir[1] + shift); - CUCHK(cudaGetLastError()); - - - { - dim3 block(DTOPO_STR_112_X, DTOPO_STR_112_Y, - DTOPO_STR_112_Z); - int3_t size = {(int)T->stress_bounds_left[1] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - (int)T->stress_grid_interior.z}; - dim3 loop(0, 0, DTOPO_STR_112_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_112<<stream_1>>> - ( - T->xx, T->yy, T->zz, - T->xy, T->xz, T->yz, - T->r1, T->r2, T->r3, - T->r4, T->r5, T->r6, - T->u1, T->v1, T->w1, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, - T->qpi, - T->coeff, - T->qsi, - T->dcrjx, T->dcrjy, T->dcrjz, - T->vx1, - T->vx2, - T->ww, - T->wwo, - T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, - T->stress_bounds_left[0] + shift, - T->stress_bounds_left[1] + shift, - T->stress_bounds_ydir[0] + shift, - T->stress_bounds_ydir[1] + shift); - CUCHK(cudaGetLastError()); - } -} - -void topo_stress_right_H(topo_t *T) -{ - - if (!T->use) return; - if (T->x_rank_r < 0) { - return; - } - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - - int shift = ngsl + 2; - { - int3_t size = {(int)T->stress_bounds_right[1] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - (int)T->stress_grid_interior.z}; - - dim3 threads (STRIU_TX, STRIU_TY, STRIU_TZ); - dim3 blocks((size.z - 4) / (STRIU_RX * threads.x) + 1, - (size.y - 1) / (STRIU_RY * threads.y) + 1, - (size.x - 1) / (threads.z) + 1); - - dtopo_str_111_index_unroll<<stream_2>>> - ( - T->xx, T->yy, T->zz, - T->xy, T->xz, T->yz, - T->r1, T->r2, T->r3, - T->r4, T->r5, T->r6, - T->u1, T->v1, T->w1, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, - T->qpi, - T->coeff, - T->qsi, - T->dcrjx, T->dcrjy, T->dcrjz, - T->vx1, - T->vx2, - T->ww, - T->wwo, - T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, - T->stress_bounds_right[0] + shift, - T->stress_bounds_right[1] + shift, - T->stress_bounds_ydir[0] + shift, - T->stress_bounds_ydir[1] + shift); - CUCHK(cudaGetLastError()); - } - - { - dim3 block(DTOPO_STR_112_X, DTOPO_STR_112_Y, - DTOPO_STR_112_Z); - int3_t size = {(int)T->stress_bounds_right[1] - T->stress_bounds_left[0], - (int)T->stress_bounds_ydir[1] - T->stress_bounds_ydir[0], - TOP_BOUNDARY_SIZE}; - dim3 loop(0, 0, DTOPO_STR_112_LOOP_Z); - dim3 grid = set_grid(block, size, loop); - dtopo_str_112<<stream_2>>> - ( - T->xx, T->yy, T->zz, - T->xy, T->xz, T->yz, - T->r1, T->r2, T->r3, - T->r4, T->r5, T->r6, - T->u1, T->v1, T->w1, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, - T->qpi, - T->coeff, - T->qsi, - T->dcrjx, T->dcrjy, T->dcrjz, - T->vx1, - T->vx2, - T->ww, - T->wwo, - T->nx, T->ny, T->nz, T->coord[0], T->coord[1], T->nz, - T->stress_bounds_right[0] + shift, - T->stress_bounds_right[1] + shift, - T->stress_bounds_ydir[0] + shift, - T->stress_bounds_ydir[1] + shift); - CUCHK(cudaGetLastError()); - } -} diff --git a/src/topography/topography.c b/src/topography/topography.c index 0db1c24..c5c509e 100644 --- a/src/topography/topography.c +++ b/src/topography/topography.c @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include #include @@ -80,7 +80,7 @@ topo_t topo_init(const int USETOPO, printf("Topography:: debugging enabled\n"); if (T.dbg && rank == 0 && T.use) - printf("Topography block size:: %d %d %d\n", TBX, TBY, TBZ); + printf("Topography min. block size:: %d %d %d\n", TBX, TBY, TBZ); topo_set_bounds(&T); diff --git a/src/topography/topography.cu b/src/topography/topography.cu deleted file mode 100644 index dc881ec..0000000 --- a/src/topography/topography.cu +++ /dev/null @@ -1,780 +0,0 @@ -#include -#include - -#include -#include -#include -#include - -void topo_init_material_H(topo_t *T) -{ - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->mx+TBX-1)/TBX, - (T->my+TBY-1)/TBY, - (T->mz+TBZ-1)/TBZ); - - - // Apply material properties inside and outside ghost region - dtopo_init_material_111<<>>(T->lami, T->mui, T->rho, - T->mx, T->my, T->mz); - - CUCHK(cudaGetLastError()); -} -void topo_velocity_interior_H(topo_t *T) -{ - - if (!T->use) return; - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->velocity_grid_interior.x+TBX-1)/TBX, - (T->velocity_grid_interior.y+TBY-1)/TBY, - (T->velocity_grid_interior.z+TBZ-1)/TBZ); - - if (TOPO_DBG) { - printf("grid: %d %d %d block: %d %d %d \n", - grid.x, grid.y, grid.z, - block.x, block.y, block.z); - printf("n = %d %d %d \n", T->nx, T->ny, T->nz); - } - - // Compute velocities in the front send buffer region. - dtopo_vel_111<<stream_1>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[0], - T->velocity_bounds_right[1], - T->velocity_bounds_front[1]); - CUCHK(cudaGetLastError()); - - // Compute interior part excluding send buffer regions - dtopo_vel_111<<stream_i>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[1], - T->velocity_bounds_right[1], - T->velocity_bounds_back[0]); - CUCHK(cudaGetLastError()); - - // Compute back send buffer region - dtopo_vel_111<<stream_2>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_back[0], - T->velocity_bounds_right[1], - T->velocity_bounds_back[1]); - CUCHK(cudaGetLastError()); - - // Adjust grid size for boundary computation - grid.z = (TOP_BOUNDARY_SIZE+TBZ-1)/TBZ; - // Boundary stencils near free surface - - dtopo_vel_112<<stream_1>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[0], - T->velocity_bounds_right[1], - T->velocity_bounds_front[1]); - CUCHK(cudaGetLastError()); - - dtopo_vel_112<<stream_i>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[1], - T->velocity_bounds_right[1], - T->velocity_bounds_back[0]); - CUCHK(cudaGetLastError()); - - dtopo_vel_112<<stream_2>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_back[0], - T->velocity_bounds_right[1], - T->velocity_bounds_back[1]); - CUCHK(cudaGetLastError()); - - // This kernel only runs in debug mode because it applies one-sided - // stencils at depth - if (TOPO_DBG) { - dtopo_vel_110<<stream_i>>>( - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - T->velocity_bounds_left[0], - T->velocity_bounds_front[0], - T->velocity_bounds_right[1], - T->velocity_bounds_back[1]); - CUCHK(cudaGetLastError()); - } -} - -void topo_velocity_front_H(topo_t *T) -{ - - if (!T->use) return; - if (T->y_rank_f < 0) { - return; - } - - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - //FIXME: Adjust grid size for boundary - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->velocity_grid_front.x+TBX-1)/TBX, - (T->velocity_grid_front.y+TBY-1)/TBY, - (T->velocity_grid_front.z+TBZ-1)/TBZ); - - dtopo_buf_vel_111<<stream_1>>> - (T->f_u1, T->f_v1, T->f_w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - 0, T->velocity_grid_front.y, - T->velocity_bounds_front[0]); - CUCHK(cudaGetLastError()); - - // Boundary stencils near free surface - // Adjust grid size for boundary computation - grid.z = (TOP_BOUNDARY_SIZE+TBZ-1)/TBZ; - dtopo_buf_vel_112<<stream_1>>> - (T->f_u1, T->f_v1, T->f_w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - 0, T->velocity_grid_front.y, - T->velocity_bounds_front[0]); - - CUCHK(cudaGetLastError()); - - // This kernel only runs in debug mode because it applies one-sided - // stencils at depth - if (TOPO_DBG) { - dtopo_buf_vel_110<<stream_1>>> - (T->f_u1, T->f_v1, T->f_w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - 0, T->velocity_grid_front.y, - T->velocity_bounds_front[0]); - CUCHK(cudaGetLastError()); - } -} - -void topo_velocity_back_H(topo_t *T) -{ - if (!T->use) return; - if (T->y_rank_b < 0) { - return; - } - - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - //FIXME: Adjust grid size for boundary - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->velocity_grid_back.x+TBX-1)/TBX, - (T->velocity_grid_back.y+TBY-1)/TBY, - (T->velocity_grid_back.z+TBZ-1)/TBZ); - - dtopo_buf_vel_111<<stream_2>>> - (T->b_u1, T->b_v1, T->b_w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - 0, T->velocity_grid_back.y, - T->velocity_bounds_back[0]); - CUCHK(cudaGetLastError()); - - // Boundary stencils near free surface - // Adjust grid size for boundary computation - grid.z = (TOP_BOUNDARY_SIZE+TBZ-1)/TBZ; - dtopo_buf_vel_112<<stream_2>>> - (T->b_u1, T->b_v1, T->b_w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - 0, T->velocity_grid_back.y, - T->velocity_bounds_back[0]); - CUCHK(cudaGetLastError()); - - // This kernel only runs in debug mode because it applies one-sided - // stencils at depth - if (TOPO_DBG) { - dtopo_buf_vel_110<<stream_2>>> - (T->b_u1, T->b_v1, T->b_w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->rho, - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->timestep, T->dth, - T->nx, T->ny, T->nz, - 0, T->velocity_grid_back.y, - T->velocity_bounds_back[0]); - CUCHK(cudaGetLastError()); - } -} - -void topo_stress_interior_H(topo_t *T) -{ - - if (!T->use) return; - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - //FIXME: Adjust grid size for boundary - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->stress_grid_interior.x+TBX-1)/TBX, - (T->stress_grid_interior.y+TBY-1)/TBY, - (T->stress_grid_interior.z+TBZ-1)/TBZ); - - - dtopo_str_111<<stream_i>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[1], T->stress_bounds_ydir[0], - T->stress_bounds_right[0], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - - // Adjust grid size for boundary computation - grid.z = (TOP_BOUNDARY_SIZE+TBZ-1)/TBZ; - dtopo_str_112<<stream_i>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[1], T->stress_bounds_ydir[0], - T->stress_bounds_right[0], T->stress_bounds_ydir[1]); - - CUCHK(cudaGetLastError()); - - if (TOPO_DBG) { - dtopo_str_110<<stream_i>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[1], T->stress_bounds_ydir[0], - T->stress_bounds_right[0], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - } -} - -void topo_stress_left_H(topo_t *T) -{ - - if (!T->use) return; - if (T->x_rank_l < 0) { - return; - } - - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - - //FIXME: Adjust grid size for boundary - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->stress_grid_left.x+TBX-1)/TBX, - (T->stress_grid_left.y+TBY-1)/TBY, - (T->stress_grid_left.z+TBZ-1)/TBZ); - - dtopo_str_111<<stream_1>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[0], T->stress_bounds_ydir[0], - T->stress_bounds_left[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - - - grid.z = (TOP_BOUNDARY_SIZE+TBZ-1)/TBZ; - dtopo_str_112<<stream_1>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[0], T->stress_bounds_ydir[0], - T->stress_bounds_left[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - - if (TOPO_DBG) { - dtopo_str_110<<stream_1>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_left[0], T->stress_bounds_ydir[0], - T->stress_bounds_left[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - } -} - -void topo_stress_right_H(topo_t *T) -{ - - if (!T->use) return; - if (T->x_rank_r < 0) { - return; - } - if (TOPO_DBG) { - printf("launching %s(%d)\n", __func__, T->rank); - } - - //FIXME: Adjust grid size for boundary - dim3 block (TBX, TBY, TBZ); - dim3 grid ((T->stress_grid_right.x+TBX-1)/TBX, - (T->stress_grid_right.y+TBY-1)/TBY, - (T->stress_grid_right.z+TBZ-1)/TBZ); - - - dtopo_str_111<<stream_2>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_right[0], T->stress_bounds_ydir[0], - T->stress_bounds_right[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - - grid.z = (TOP_BOUNDARY_SIZE+TBZ-1)/TBZ; - dtopo_str_112<<stream_2>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_right[0], T->stress_bounds_ydir[0], - T->stress_bounds_right[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - - if (TOPO_DBG) { - dtopo_str_110<<stream_2>>> - ( - T->xx, T->xy, T->xz, - T->yy, T->yz, T->zz, - T->u1, T->v1, T->w1, - T->dcrjx, T->dcrjy, T->dcrjz, - T->metrics_f.d_f, - T->metrics_f.d_f1_1, - T->metrics_f.d_f1_2, - T->metrics_f.d_f1_c, - T->metrics_f.d_f2_1, - T->metrics_f.d_f2_2, - T->metrics_f.d_f2_c, - T->metrics_f.d_f_1, - T->metrics_f.d_f_2, - T->metrics_f.d_f_c, - T->metrics_g.d_g, - T->metrics_g.d_g3, - T->metrics_g.d_g3_c, - T->metrics_g.d_g_c, - T->lami, - T->mui, T->timestep, - T->dth, - T->nx, T->ny, T->nz, - T->stress_bounds_right[0], T->stress_bounds_ydir[0], - T->stress_bounds_right[1], T->stress_bounds_ydir[1]); - CUCHK(cudaGetLastError()); - } -} diff --git a/src/topography/velocity.cu b/src/topography/velocity.cu index c7b4c6b..ece9be4 100644 --- a/src/topography/velocity.cu +++ b/src/topography/velocity.cu @@ -2,10 +2,137 @@ #include #include -#include -#include +#include #include +#include + + +// Kernel naming convention +// 110: Bottom boundary (only used in debug mode) +// 111: Interior +// 112: Top boundary + +// Number of threads per block to use for interior velocity kernel +#ifndef VEL_INT_X +#define VEL_INT_X 64 +#endif +#ifndef VEL_INT_Y +#define VEL_INT_Y 4 +#endif +#ifndef VEL_INT_Z +#define VEL_INT_Z 4 +#endif + +// Number of threads per block to use for boundary velocity kernel +#ifndef VEL_BND_X +#define VEL_BND_X 7 +#endif +#ifndef VEL_BND_Y +#define VEL_BND_Y 8 +#endif +#ifndef VEL_BND_Z +#define VEL_BND_Z 1 +#endif + +// Number of threads per block +// grid dimension (X, Y, Z) refers to CUDA grid indices +#ifndef DTOPO_VEL_110_X +#define DTOPO_VEL_110_X VEL_BND_X +#endif +#ifndef DTOPO_VEL_110_Y +#define DTOPO_VEL_110_Y VEL_BND_Y +#endif +#ifndef DTOPO_VEL_110_Z +#define DTOPO_VEL_110_Z VEL_BND_Z +#endif + +#ifndef DTOPO_VEL_111_X +#define DTOPO_VEL_111_X VEL_INT_X +#endif +#ifndef DTOPO_VEL_111_Y +#define DTOPO_VEL_111_Y VEL_INT_Y +#endif +#ifndef DTOPO_VEL_111_Z +#define DTOPO_VEL_111_Z VEL_INT_Z +#endif + +#ifndef DTOPO_VEL_112_X +#define DTOPO_VEL_112_X VEL_BND_X +#endif +#ifndef DTOPO_VEL_112_Y +#define DTOPO_VEL_112_Y VEL_BND_Y +#endif +#ifndef DTOPO_VEL_112_Z +#define DTOPO_VEL_112_Z VEL_BND_Z +#endif + +#ifndef DTOPO_BUF_VEL_111_X +#define DTOPO_BUF_VEL_111_X VEL_INT_X +#endif +#ifndef DTOPO_BUF_VEL_111_Y +#define DTOPO_BUF_VEL_111_Y VEL_INT_Y +#endif +#ifndef DTOPO_BUF_VEL_111_Z +#define DTOPO_BUF_VEL_111_Z VEL_INT_Z +#endif + +#ifndef DTOPO_BUF_VEL_112_X +#define DTOPO_BUF_VEL_112_X VEL_BND_X +#endif +#ifndef DTOPO_BUF_VEL_112_Y +#define DTOPO_BUF_VEL_112_Y VEL_BND_Y +#endif +#ifndef DTOPO_BUF_VEL_112_Z +#define DTOPO_BUF_VEL_112_Z VEL_BND_Z +#endif + +#ifndef DTOPO_BUF_VEL_110_X +#define DTOPO_BUF_VEL_110_X VEL_BND_X +#endif +#ifndef DTOPO_BUF_VEL_110_Y +#define DTOPO_BUF_VEL_110_Y VEL_BND_Y +#endif +#ifndef DTOPO_BUF_VEL_110_Z +#define DTOPO_BUF_VEL_110_Z VEL_BND_Z +#endif + + +#ifndef DTOPO_VEL_110_MAX_THREADS_PER_BLOCK +#define DTOPO_VEL_110_MAX_THREADS_PER_BLOCK 32 +#endif + +#ifndef DTOPO_VEL_111_MAX_THREADS_PER_BLOCK +#define DTOPO_VEL_111_MAX_THREADS_PER_BLOCK 1024 +#endif + +#ifndef DTOPO_VEL_112_MAX_THREADS_PER_BLOCK +#define DTOPO_VEL_112_MAX_THREADS_PER_BLOCK 64 +#endif + +#ifndef DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK +#define DTOPO_BUF_VEL_110_MAX_THREADS_PER_BLOCK 1024 +#endif + +#ifndef DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK +#define DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK 1024 +#endif + +#ifndef DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK +#define DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK 1024 +#endif + +// Apply loop in kernel +// This option must be compatible with the kernel. If there is no loop in the +// kernel, turn off this option, and vice versa. +#define DTOPO_VEL_110_LOOP_Z 1 +#define DTOPO_VEL_111_LOOP_Z 0 +#define DTOPO_VEL_112_LOOP_Z 0 +#define DTOPO_BUF_VEL_110_LOOP_Z 1 +#define DTOPO_BUF_VEL_111_LOOP_Z 0 +#define DTOPO_BUF_VEL_112_LOOP_Z 0 + #include "kernels/velocity_unroll.cu" +#include "kernels/velocity.cu" inline dim3 set_grid(const dim3 block, const int3_t size, const dim3 loop) { diff --git a/src/vtk/vtk.c b/src/vtk/vtk.c index 18cee13..8b01a93 100644 --- a/src/vtk/vtk.c +++ b/src/vtk/vtk.c @@ -3,7 +3,7 @@ #include #include -#include +#include #include size_t vtk_write_grid(const char *fname, diff --git a/test111/Makefile b/test111/Makefile index 2c2dcae..6bf95eb 100644 --- a/test111/Makefile +++ b/test111/Makefile @@ -3,9 +3,9 @@ nx=512 ny=512 nz=512 nt=10 -arch=sm_70 +arch=sm_75 log=prof.txt -args= +args=-lineinfo all: c p exe=test111.x diff --git a/test111/stress.cu b/test111/stress.cu index 007766c..9e13ecf 100644 --- a/test111/stress.cu +++ b/test111/stress.cu @@ -1,4 +1,4 @@ -#define CURVILINEAR +//#define CURVILINEAR #define _f(i, j) f[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] #define _f_1(i, j) f_1[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] #define _f_2(i, j) f_2[(j) + align + (i) * (2 * align + 2 * ngsl + ny + 4)] @@ -676,3 +676,4 @@ __global__ void dtopo_str_111(_prec* RSTRCT xx, _prec* RSTRCT yy, _prec* RSTR #undef _g_c #undef _g #undef _g3 + diff --git a/test111/test111.cu b/test111/test111.cu index cc4cba9..2c1e425 100644 --- a/test111/test111.cu +++ b/test111/test111.cu @@ -45,6 +45,10 @@ #ifndef USE_STRESS_MACRO_PLANES #define USE_STRESS_MACRO_PLANES 1 #endif + +#ifndef USE_STRESS_CARTESIAN +#define USE_STRESS_CARTESIAN 1 +#endif //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- @@ -52,11 +56,11 @@ // Threads in x, y, z #ifndef STR_TX -#define STR_TX 64 +#define STR_TX 32 #endif #ifndef STR_TY -#define STR_TY 8 +#define STR_TY 2 #endif #ifndef STR_TZ @@ -1780,6 +1784,7 @@ __global__ void chknan(const float *RSTRCT u1, #include "stress_macro_planes.cu" #include "stress_index.cu" #include "stress_index_unroll.cu" +//#include "stress_cartesian.cu" #undef RSTRCT // ***************************************************************************** @@ -2338,6 +2343,7 @@ int main (int argc, char **argv) { dim3 blocks ((nz-4)/(threads.x)+1, (ny-1)/(threads.y)+1, 1); + cudaFuncSetCacheConfig(dtopo_str_111, cudaFuncCachePreferL1); dtopo_str_111<<>>( s11, s22, s33, s12, s13, s23, r1, r2, r3, r4, r5, r6, u1, u2, u3, f, f1_1, f1_2, f1_c, f2_1, f2_2, f2_c, f_1, f_2, f_c, g, g3, g3_c, g_c, @@ -2595,6 +2601,8 @@ int main (int argc, char **argv) { dim3 blocks((nz - 4) / (na * threads.x) + 1, (ny - 1) / (nb * threads.y) + 1, (nx - 1) / (threads.z) + 1); + + cudaFuncSetCacheConfig(dtopo_str_111_index_unroll, cudaFuncCachePreferL1); dtopo_str_111_index_unroll<<>>( t11, t22, t33, t12, t13, t23, p1, p2, p3, p4, p5, p6, u1, u2, u3, f, f1_1, f1_2, f1_c, f2_1, f2_2, f2_c, f_1, f_2, f_c, g, g3, g3_c, g_c, @@ -2652,6 +2660,7 @@ int main (int argc, char **argv) { #endif + } CUCHK(cudaDeviceSynchronize()); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f065e17..926c867 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -24,38 +24,13 @@ set(OPT_LIBRARIES ${LIBRARIES} ) -# Unoptimized version -add_executable(test_unoptimized_kernels topography_kernels.cu) - -target_link_libraries(test_unoptimized_kernels - ${UNOPT_LIBRARIES} - ) - -target_include_directories(test_unoptimized_kernels - PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ - ) -target_compile_definitions(test_unoptimized_kernels - PUBLIC USE_OPTIMIZED_KERNELS=0) - -# Optimized version -add_executable(test_optimized_kernels topography_kernels.cu) - -target_link_libraries(test_optimized_kernels - ${LIBRARIES} - opt_topography_attenuation - ) - -target_compile_definitions(test_optimized_kernels - PUBLIC USE_OPTIMIZED_KERNELS=1) - # Attenuation test add_executable(test_attenuation test_attenuation.cu) target_link_libraries(test_attenuation ${LIBRARIES} awp - opt_topography_attenuation + topography ) target_include_directories(test_attenuation diff --git a/tests/fixtures/source_dm.txt b/tests/fixtures/source_dm.txt index 234ba22..0e7298d 100644 --- a/tests/fixtures/source_dm.txt +++ b/tests/fixtures/source_dm.txt @@ -13,6 +13,6 @@ num_writes=2 # * the second source should map to i=0 j=0 in block 1 (bottom block) coordinates -0 4.5 1.5 -2.0 -0 4.5 1.5 -11.0 -0 4.5 1.5 -34.0 +0 9.0 9.0 -2.0 +0 9.0 9.0 -11.0 +0 9.0 9.0 -34.0 diff --git a/tests/fixtures/source_x.txt b/tests/fixtures/source_x.txt new file mode 100644 index 0000000..23430a1 --- /dev/null +++ b/tests/fixtures/source_x.txt @@ -0,0 +1,14 @@ +2.1.0 +file=source +length=3 +steps=600 +stride=1 +degree=0 +gpu_buffer_size=2 +cpu_buffer_size=3 +num_writes=2 + +coordinates +0 9.0 8.5 -2.0 +0 9.0 8.5 -11.0 +0 9.0 8.5 -34.0 diff --git a/tests/fixtures/source_xx.txt b/tests/fixtures/source_xx.txt new file mode 100644 index 0000000..91feabc --- /dev/null +++ b/tests/fixtures/source_xx.txt @@ -0,0 +1,18 @@ +2.1.0 +file=source +length=3 +steps=600 +stride=1 +degree=0 +gpu_buffer_size=2 +cpu_buffer_size=3 +num_writes=2 +# If the finest grid has grid spacing h = 1.0 (top block), +# then: +# * the first source should map to i=1 j=2 in block 0 (top block) +# * the second source should map to i=0 j=0 in block 1 (bottom block) + +coordinates +0 9.5 8.5 -2.0 +0 9.5 8.5 -11.0 +0 9.5 8.5 -34.0 diff --git a/tests/fixtures/source_xy.txt b/tests/fixtures/source_xy.txt new file mode 100644 index 0000000..0e7298d --- /dev/null +++ b/tests/fixtures/source_xy.txt @@ -0,0 +1,18 @@ +2.1.0 +file=source +length=3 +steps=600 +stride=1 +degree=0 +gpu_buffer_size=2 +cpu_buffer_size=3 +num_writes=2 +# If the finest grid has grid spacing h = 1.0 (top block), +# then: +# * the first source should map to i=1 j=2 in block 0 (top block) +# * the second source should map to i=0 j=0 in block 1 (bottom block) + +coordinates +0 9.0 9.0 -2.0 +0 9.0 9.0 -11.0 +0 9.0 9.0 -34.0 diff --git a/tests/fixtures/source_xz.txt b/tests/fixtures/source_xz.txt new file mode 100644 index 0000000..23430a1 --- /dev/null +++ b/tests/fixtures/source_xz.txt @@ -0,0 +1,14 @@ +2.1.0 +file=source +length=3 +steps=600 +stride=1 +degree=0 +gpu_buffer_size=2 +cpu_buffer_size=3 +num_writes=2 + +coordinates +0 9.0 8.5 -2.0 +0 9.0 8.5 -11.0 +0 9.0 8.5 -34.0 diff --git a/tests/fixtures/source_y.txt b/tests/fixtures/source_y.txt new file mode 100644 index 0000000..7d1d18c --- /dev/null +++ b/tests/fixtures/source_y.txt @@ -0,0 +1,14 @@ +2.1.0 +file=source +length=3 +steps=600 +stride=1 +degree=0 +gpu_buffer_size=2 +cpu_buffer_size=3 +num_writes=2 + +coordinates +0 9.5 9.0 -2.0 +0 9.5 9.0 -11.0 +0 9.5 9.0 -34.0 diff --git a/tests/fixtures/source_yz.txt b/tests/fixtures/source_yz.txt new file mode 100644 index 0000000..7d1d18c --- /dev/null +++ b/tests/fixtures/source_yz.txt @@ -0,0 +1,14 @@ +2.1.0 +file=source +length=3 +steps=600 +stride=1 +degree=0 +gpu_buffer_size=2 +cpu_buffer_size=3 +num_writes=2 + +coordinates +0 9.5 9.0 -2.0 +0 9.5 9.0 -11.0 +0 9.5 9.0 -34.0 diff --git a/tests/fixtures/source_z.txt b/tests/fixtures/source_z.txt new file mode 100644 index 0000000..9dbcc78 --- /dev/null +++ b/tests/fixtures/source_z.txt @@ -0,0 +1,14 @@ +2.1.0 +file=source +length=3 +steps=600 +stride=1 +degree=0 +gpu_buffer_size=2 +cpu_buffer_size=3 +num_writes=2 + +coordinates +0 9.5 8.5 -2.0 +0 9.5 8.5 -11.0 +0 9.5 8.5 -34.0 diff --git a/tests/grid/CMakeLists.txt b/tests/grid/CMakeLists.txt index 884941d..868de62 100644 --- a/tests/grid/CMakeLists.txt +++ b/tests/grid/CMakeLists.txt @@ -12,4 +12,3 @@ target_include_directories(test_grid_3d ) add_test(NAME test_grid_3d COMMAND test_grid_3d) - diff --git a/tests/grid/test_grid_3d.c b/tests/grid/test_grid_3d.c index 7f9a251..b20e2c9 100644 --- a/tests/grid/test_grid_3d.c +++ b/tests/grid/test_grid_3d.c @@ -17,6 +17,11 @@ int test_grid_xyz(int rank, int size); int test_grid3_xyz(int rank, int size); int test_grid3_reduce(int rank, int size); int test_shift(int rank, int size); +int test_global_to_local(int rank, int size); + + +int test_global_to_local(int rank, int size); + int main(int argc, char **argv) { @@ -40,6 +45,7 @@ int main(int argc, char **argv) err |= test_grid3_xyz(rank, size); err |= test_grid3_reduce(rank, size); err |= test_shift(rank, size); + err |= test_global_to_local(rank, size); if (rank == 0) { printf("Testing completed.\n"); @@ -64,7 +70,7 @@ int test_grid_fill(int rank, int size) .boundary1 = 0, .boundary2 = 0}; x = malloc(sizeof(x) * grid.size); - grid_fill1(x, grid); + grid_fill1(x, grid, 1); err |= mpi_assert(!err, rank); err |= mpi_assert(fabs(x[0] - (0.0 + rank * n)) < FLTOL, rank); err |= mpi_assert(fabs(x[1] - (1.0 + rank * n)) < FLTOL, rank); @@ -78,7 +84,7 @@ int test_grid_fill(int rank, int size) grid1_t grid = {.id = rank, .shift = 0, .size = n, .gridspacing = h, .boundary1 = 1, .boundary2 = 0}; - grid_fill1(x, grid); + grid_fill1(x, grid, 1); err |= mpi_assert(!err, rank); err |= mpi_assert(fabs(x[0] - (0.0 + rank * n)) < FLTOL, rank); err |= mpi_assert(fabs(x[1] - (1.0 + rank * n)) < FLTOL, rank); @@ -92,7 +98,7 @@ int test_grid_fill(int rank, int size) grid1_t grid = {.id = rank, .shift = 0, .size = n, .gridspacing = h, .boundary1 = 0, .boundary2 = 1}; - grid_fill1(x, grid); + grid_fill1(x, grid, 1); err |= mpi_assert(!err, rank); err |= mpi_assert(fabs(x[0] - (0.0 + rank * n)) < FLTOL, rank); err |= mpi_assert(fabs(x[1] - (1.0 + rank * n)) < FLTOL, rank); @@ -106,11 +112,11 @@ int test_grid_fill(int rank, int size) grid1_t grid = {.id = rank, .shift = 1, .size = n, .gridspacing = h, .boundary1 = 0, .boundary2 = 0}; - grid_fill1(x, grid); + grid_fill1(x, grid, 1); err |= mpi_assert(!err, rank); - err |= mpi_assert(fabs(x[0] - (-0.5 + rank * n)) < FLTOL, rank); - err |= mpi_assert(fabs(x[1] - (+0.5 + rank * n)) < FLTOL, rank); - err |= mpi_assert(fabs(x[n-1] - (n - 1 - 0.5 + rank * n) ) < FLTOL, + err |= mpi_assert(fabs(x[0] - (0.5 + rank * n)) < FLTOL, rank); + err |= mpi_assert(fabs(x[1] - (1.5 + rank * n)) < FLTOL, rank); + err |= mpi_assert(fabs(x[n-1] - (n - 1 + 0.5 + rank * n) ) < FLTOL, rank); err |= test_finalize(&test, err); @@ -121,7 +127,7 @@ int test_grid_fill(int rank, int size) grid1_t grid = {.id = rank, .shift = 1, .size = n, .gridspacing = h, .boundary1 = 1, .boundary2 = 0}; - grid_fill1(x, grid); + grid_fill1(x, grid, 0); err |= mpi_assert(!err, rank); err |= mpi_assert(fabs(x[0] - (0.0 + rank * n)) < FLTOL, rank); err |= mpi_assert(fabs(x[1] - (0.5 + rank * n)) < FLTOL, rank); @@ -136,7 +142,7 @@ int test_grid_fill(int rank, int size) grid1_t grid = {.id = rank, .shift = 1, .size = n, .gridspacing = h, .boundary1 = 0, .boundary2 = 1}; - grid_fill1(x, grid); + grid_fill1(x, grid, 0); err |= mpi_assert(!err, rank); err |= mpi_assert(fabs(x[0] - (-0.5 + rank * n)) < FLTOL, rank); err |= mpi_assert(fabs(x[1] - (+0.5 + rank * n)) < FLTOL, rank); @@ -159,7 +165,7 @@ int test_grid_in_bounds(int rank, int size) x = malloc(sizeof(x) * n); - int3_t shift = grid_yz(); + int3_t shift = {0, 0, 0}; int3_t coord = {.x = 0, .y = 0, .z = 0}; int3_t asize = {gsize[0], gsize[1], gsize[2]}; @@ -173,7 +179,7 @@ int test_grid_in_bounds(int rank, int size) .alignment = 2 + ngsl, .padding = 0, .gridspacing = 1.0}; - grid_fill1(x, grid1); + grid_fill1(x, grid1, 0); test_t test = test_init(" * grid_in_bounds", rank, size); err |= mpi_assert( @@ -193,7 +199,7 @@ int test_grid_in_bounds(int rank, int size) .alignment = 1 + ngsl, .padding = 1, .gridspacing = 1.0}; - grid_fill1(x, grid1); + grid_fill1(x, grid1, 0); test_t test = test_init(" * grid_in_bounds", rank, size); err |= mpi_assert( @@ -237,7 +243,7 @@ int test_grid_xyz(int rank, int size) test_t test = test_init(" * grid_fill_x", rank, size); grid1_t grid1 = grid_grid1_x(grid); - grid_fill1(ans, grid1); + grid_fill1(ans, grid1, 1); grid_fill_x(x, grid); for (int i = 0; i < n; ++i) { @@ -251,7 +257,7 @@ int test_grid_xyz(int rank, int size) test_t test = test_init(" * grid_fill_y", rank, size); grid1_t grid1 = grid_grid1_y(grid); - grid_fill1(ans, grid1); + grid_fill1(ans, grid1, 0); grid_fill_y(x, grid); for (int i = 0; i < n; ++i) { @@ -265,7 +271,7 @@ int test_grid_xyz(int rank, int size) test_t test = test_init(" * grid_fill_z", rank, size); grid1_t grid1 = grid_grid1_z(grid); - grid_fill1(ans, grid1); + grid_fill1(ans, grid1, 0); grid_fill_z(x, grid); for (int i = 0; i < n; ++i) { @@ -492,3 +498,69 @@ int test_shift(int rank, int size) return test_last_error(); } +int test_global_to_local(int rank, int size) { + + int err = 0; + + + test_t test = test_init(" * global_to_local", rank, size); + const int num_grids = 3; + int nz[3] = {20, 10, 12}; + _prec h = 1.0; + const prec H[3] = {grid_height(nz[0], h, 1), grid_height(nz[1], 3 * h, 0), + grid_height(nz[2], 9 * h, 0)}; + + // Above free surface (in topo block) + { + _prec zglb = 0.2; + _prec zloc = 0.0; + int block_index = -1; + int istopo = 1; + global_to_local(&zloc, &block_index, zglb, h, nz, num_grids, istopo); + err |= mpi_assert(block_index == 0, rank); + err |= mpi_assert(fabs(zloc - (zglb + H[0])) < FLTOL, rank); + } + + // Below free surface (in topo block) + { + _prec zglb = -0.2; + _prec zloc = 0.0; + int block_index = -1; + int istopo = 1; + global_to_local(&zloc, &block_index, zglb, h, nz, num_grids, istopo); + err |= mpi_assert(block_index == 0, rank); + err |= mpi_assert(fabs(zloc - (zglb + H[0]) ) < FLTOL, rank); + } + + // In the overlap zone (belongs to the second block) + { + _prec zglb = -15.0; + _prec zloc = 0.0; + int block_index = -1; + int istopo = 1; + global_to_local(&zloc, &block_index, zglb, h, nz, num_grids, istopo); + err |= mpi_assert(block_index == 1, rank); + + _prec zs = (zglb + H[0] + H[1] - grid_overlap(h) ); + err |= mpi_assert(fabs(zloc - zs) < FLTOL, rank); + } + + + // In the overlap zone (belongs to the third block) + { + _prec zglb = -19.0; + _prec zloc = 0.0; + int block_index = -1; + int istopo = 1; + global_to_local(&zloc, &block_index, zglb, h, nz, num_grids, istopo); + err |= mpi_assert(block_index == 2, rank); + + _prec zs = (zglb + H[0] + H[1] + H[2] - grid_overlap(h) - grid_overlap(3 * h) ); + err |= mpi_assert(fabs(zloc - zs) < FLTOL, rank); + } + + err |= test_finalize(&test, err); + + return test_last_error(); + +} diff --git a/tests/interpolation/test_interpolation.c b/tests/interpolation/test_interpolation.c index 2609fea..d31b951 100644 --- a/tests/interpolation/test_interpolation.c +++ b/tests/interpolation/test_interpolation.c @@ -84,7 +84,7 @@ int test_argnearest(void) // Grid with closed right boundary grid1_t grid = {.id = 0, .shift = 0, .size = n, .gridspacing = 1, .boundary1 = 0, .boundary2 = 1}; - grid_fill1(x, grid); + grid_fill1(x, grid, 1); test_t test = test_init(" * grid_argnearest:bounds_except", 0, 0); int nearest = -1; err |= s_no_except(interp_grid_argnearest(&nearest, x, -1, grid) == @@ -303,7 +303,7 @@ int test_lagrange3(void) prec *x3, *y3, *z3, *fcn3; int gsize[3] = {n, n, n}; - int3_t shift = grid_yz(); + int3_t shift = {0, 0, 0}; int3_t coord = {.x = 0, .y = 0, .z = 0}; int3_t asize = {gsize[0], gsize[1], gsize[2]}; int3_t bnd1 = {1, 1, 1}; @@ -328,11 +328,11 @@ int test_lagrange3(void) grid_fill_z(z1, grid); int m = 4; - prec qx[4] = {0.0, 0.2, 0.4, 0.9}; + prec qx[4] = {0.0, 0.4, 0.6, 0.9}; prec qy[4] = {0.0, 0.7, 0.4, 0.7}; prec qz[4] = {0.0, 0.2, 0.3, 0.8}; - prec ax[4] = {0.0, 0.2, 0.4, 0.9}; + prec ax[4] = {0.0, 0.4, 0.6, 0.9}; prec ay[4] = {0.0, 0.7, 0.4, 0.7}; prec az[4] = {0.0, 0.2, 0.3, 0.8}; prec out[4]; diff --git a/tests/mpi/test_distribute.c b/tests/mpi/test_distribute.c index 7a9a92b..c10cb75 100644 --- a/tests/mpi/test_distribute.c +++ b/tests/mpi/test_distribute.c @@ -112,8 +112,8 @@ int test_indices(int rank, int size, enum eshift shifttype) prec *x = malloc(sizeof(x) * grid_x.size); prec *y = malloc(sizeof(y) * grid_y.size); - grid_fill1(x, grid_x); - grid_fill1(y, grid_y); + grid_fill1(x, grid_x, 1); + grid_fill1(y, grid_y, 0); grid_x = grid_grid1_x(grid); grid_y = grid_grid1_y(grid); @@ -122,8 +122,8 @@ int test_indices(int rank, int size, enum eshift shifttype) prec *xloc = malloc(sizeof(x) * grid_x.size); prec *yloc = malloc(sizeof(y) * grid_y.size); - grid_fill1(xloc, grid_x); - grid_fill1(yloc, grid_y); + grid_fill1(xloc, grid_x, 1); + grid_fill1(yloc, grid_y, 0); h = grid.gridspacing; diff --git a/tests/readers/test_input.c b/tests/readers/test_input.c index a22ebfd..f7bab8c 100644 --- a/tests/readers/test_input.c +++ b/tests/readers/test_input.c @@ -5,7 +5,7 @@ #include #include -#include +#include #define STR_LEN 2048 diff --git a/tests/readers/test_version.c b/tests/readers/test_version.c index e67bd30..434b42f 100644 --- a/tests/readers/test_version.c +++ b/tests/readers/test_version.c @@ -5,7 +5,7 @@ #include #include -#include +#include int check_version(void); diff --git a/tests/test_attenuation.cu b/tests/test_attenuation.cu index d5c2b90..7a6febf 100644 --- a/tests/test_attenuation.cu +++ b/tests/test_attenuation.cu @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include diff --git a/tests/topography/CMakeLists.txt b/tests/topography/CMakeLists.txt index 3dabd7c..65cfb85 100644 --- a/tests/topography/CMakeLists.txt +++ b/tests/topography/CMakeLists.txt @@ -3,3 +3,4 @@ add_subdirectory(readers) add_subdirectory(geometry) add_subdirectory(sources) add_subdirectory(receivers) +add_subdirectory(accuracy) diff --git a/tests/topography/accuracy/CMakeLists.txt b/tests/topography/accuracy/CMakeLists.txt new file mode 100644 index 0000000..29461d4 --- /dev/null +++ b/tests/topography/accuracy/CMakeLists.txt @@ -0,0 +1,8 @@ +add_executable(test_convergence test_convergence.cu) +target_link_libraries( + test_convergence topography_no_bc awp geometry grid functions) +target_include_directories(test_convergence + PUBLIC + ${PROJECT_SOURCE_DIR}/include/ + ) +add_test(NAME test_convergence COMMAND test_convergence ${PROJECT_SOURCE_DIR}/tests/topography/accuracy/data/) diff --git a/tests/topography/accuracy/README.md b/tests/topography/accuracy/README.md new file mode 100644 index 0000000..87a3bd6 --- /dev/null +++ b/tests/topography/accuracy/README.md @@ -0,0 +1,23 @@ +# README + +This directory contains some additional tests that ensures that topography kernels are correctly +implemented. + +## Truncation error test +The convergence test modifies the velocity kernels so that the free surface boundary condition is no +longer imposed. This change makes it possible to check the rate at which the truncation errors go to +zero everywhere in the domain. The idea is to take the discretized spatial elastic operator and apply it to a +set of known trigonometric functions and compare it against an exact solution. The exact solution +comes from symbolically evaluating the spatial derivatives in the elastic wave equation for the +given test functions. + +Since all calculations are performed in single precision, it is quite difficult to assess if the +implementation is correct. To improve the confidence, I tested not only with trigonometric functions +but also with polynomials. These polynomials get differentiated to machine precision as long as +their degree is below one, or two, depending on if the geometry is flat or not. Note that the +last boundary point for some of the field components is always zero. This is because this point is +not part of the actual computation. + +To run the test, the program expects a topography profile for each grid. The directory `data` +contains topography profiles for a Gaussian hill geometry. By modifying the script `topopgraphy.py` +you can investigate the truncation errors for a different geometry. diff --git a/tests/topography/accuracy/build_topography.sh b/tests/topography/accuracy/build_topography.sh new file mode 100755 index 0000000..0f0024e --- /dev/null +++ b/tests/topography/accuracy/build_topography.sh @@ -0,0 +1,8 @@ +x=16 +h=1.0 +for i in 0 1 2 3; +do +python3 topography.py data/topography_$i.bin $x $x $h +let x=x*2; +h=`python3 -c "print(${h}/2)"`; +done diff --git a/tests/topography/accuracy/cupolynomial.cu b/tests/topography/accuracy/cupolynomial.cu new file mode 100644 index 0000000..732d323 --- /dev/null +++ b/tests/topography/accuracy/cupolynomial.cu @@ -0,0 +1,102 @@ +#include "cupolynomial.cuh" + +__global__ void poly_xy(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2) +{ + // Indices used for output + const int wk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + if ( wk >= wkn) return; + const int wj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + if ( wj >= wjn) return; + const int wi = threadIdx.z + blockIdx.z*blockDim.z + wi0; + if ( wi >= win) return; + + // Indices used for input + const int rk = threadIdx.x + blockIdx.x*blockDim.x + rk0; + if ( rk >= rkn) return; + const int rj = threadIdx.y + blockIdx.y*blockDim.y + rj0; + if ( rj >= rjn) return; + const int ri = threadIdx.z + blockIdx.z*blockDim.z + ri0; + if ( ri >= rin) return; + + const int pos = wk + wj*line + wi*slice; + out[pos] = a0*pow(ri + nx*rx - 0.5*s0, p0) + + a1*pow(rj + ny*ry - 0.5*s1, p1) + + a2*pow(rk - 0.5*s2, p2); +} + + +__global__ void poly_z(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2) +{ + // Indices used for output + const int wk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + if ( wk >= wkn) return; + const int wj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + if ( wj >= wjn) return; + const int wi = threadIdx.z + blockIdx.z*blockDim.z + wi0; + if ( wi >= win) return; + + // Indices used for input + const int rk = threadIdx.x + blockIdx.x*blockDim.x + rk0; + if ( rk >= rkn) return; + const int rj = threadIdx.y + blockIdx.y*blockDim.y + rj0; + if ( rj >= rjn) return; + const int ri = threadIdx.z + blockIdx.z*blockDim.z + ri0; + if ( ri >= rin) return; + + + +/* + * n-4 n-3 n-2 n-1 + * z ------o-----o-|---o-----o--|---o----o-----o---* + * | | + * | | + * zh ---o-----o----|o-----o-----|^----o-----o--o + * | |n-4 n-3 n-2 n-1 + * + * Bottom Interior Top + */ + + + _prec zkp = 0.0; + if (rk == rkn - 1 && s2 == 1) { + zkp = pow(rkn - 2, p2); + } + else if (rk == rk0) { + zkp = pow(rk, p2); + } + else if (rk == rkn - 1 && s2 == 0) { + zkp = 0; + } + else { + zkp = pow(rk- 0.5*s2, p2); + } + + const int pos = wk + wj*line + wi*slice; + out[pos] = a0*pow(ri + nx*rx - 0.5*s0, p0) + + a1*pow(rj + ny*ry - 0.5*s1, p1) + + a2*zkp; +} diff --git a/tests/topography/accuracy/cupolynomial.cuh b/tests/topography/accuracy/cupolynomial.cuh new file mode 100644 index 0000000..3bf6c6a --- /dev/null +++ b/tests/topography/accuracy/cupolynomial.cuh @@ -0,0 +1,39 @@ +#ifndef _POLYNOMIAL_H +#define _POLYNOMIAL_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif +__global__ void poly_xy(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2); + +__global__ void poly_z(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2); +#ifdef __cplusplus +} +#endif diff --git a/src/topography/kernels/unoptimized.cu b/tests/topography/accuracy/cutopography_kernel.cu similarity index 97% rename from src/topography/kernels/unoptimized.cu rename to tests/topography/accuracy/cutopography_kernel.cu index 28feb48..7e9ce60 100644 --- a/src/topography/kernels/unoptimized.cu +++ b/tests/topography/accuracy/cutopography_kernel.cu @@ -1,24 +1,15 @@ -#include -#include -#include +#include "cutopography_kernel.cuh" -__global__ void -dtopo_vel_110(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej) { +__global__ void dtopo_vel_110( + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *rho, + const float *s11, const float *s12, const float *s13, const float *s22, + const float *s23, const float *s33, const float a, const float nu, + const int nx, const int ny, const int nz, const int bi, const int bj, + const int ei, const int ej) { const float phzl[6][7] = { {0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, 0.0000000000000000, @@ -143,76 +134,76 @@ dtopo_vel_110(float *__restrict__ u1, float *__restrict__ u2, const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= 6) return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _rho(i, j, k) \ + rho[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_c(i, j) \ f_c[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] #define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _rho(i, j, k) \ - rho[(k) + align + \ +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] +#define _f(i, j) \ + f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _s13(i, j, k) \ + s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ +#define _g_c(k) g_c[(k) + align] +#define _s23(i, j, k) \ + s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s22(i, j, k) \ s22[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s33(i, j, k) \ s33[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] @@ -485,52 +476,45 @@ dtopo_vel_110(float *__restrict__ u1, float *__restrict__ u2, phy[1] * _s23(i, j - 1, 8) + phy[3] * _s23(i, j + 1, 8))))) * f_dcrj; -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c +#undef _rho #undef _f_1 +#undef _g3_c #undef _f_2 #undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c -#undef _rho +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy +#undef _f +#undef _s13 +#undef _u1 #undef _s11 +#undef _f2_1 +#undef _f1_1 #undef _s12 -#undef _s13 -#undef _s22 +#undef _g_c #undef _s23 -#undef _s33 -#undef _u1 +#undef _f2_2 +#undef _s22 +#undef _f1_2 #undef _u2 +#undef _g +#undef _s33 +#undef _f2_c +#undef _f1_c #undef _u3 } -__global__ void -dtopo_vel_111(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej) { +__global__ void dtopo_vel_111( + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *rho, + const float *s11, const float *s12, const float *s13, const float *s22, + const float *s23, const float *s33, const float a, const float nu, + const int nx, const int ny, const int nz, const int bi, const int bj, + const int ei, const int ej) { const float phz[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; const float phy[4] = {-0.0625000000000000, 0.5625000000000000, @@ -574,76 +558,76 @@ dtopo_vel_111(float *__restrict__ u1, float *__restrict__ u2, const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= nz - 12) return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _rho(i, j, k) \ + rho[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_c(i, j) \ f_c[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] #define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _rho(i, j, k) \ - rho[(k) + align + \ +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] +#define _f(i, j) \ + f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _s13(i, j, k) \ + s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ +#define _g_c(k) g_c[(k) + align] +#define _s23(i, j, k) \ + s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s22(i, j, k) \ s22[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s33(i, j, k) \ s33[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] @@ -945,52 +929,45 @@ dtopo_vel_111(float *__restrict__ u1, float *__restrict__ u2, phy[1] * _s23(i, j - 1, k + 9) + phy[3] * _s23(i, j + 1, k + 9))))) * f_dcrj; -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c +#undef _rho #undef _f_1 +#undef _g3_c #undef _f_2 #undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c -#undef _rho +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy +#undef _f +#undef _s13 +#undef _u1 #undef _s11 +#undef _f2_1 +#undef _f1_1 #undef _s12 -#undef _s13 -#undef _s22 +#undef _g_c #undef _s23 -#undef _s33 -#undef _u1 +#undef _f2_2 +#undef _s22 +#undef _f1_2 #undef _u2 +#undef _g +#undef _s33 +#undef _f2_c +#undef _f1_c #undef _u3 } -__global__ void -dtopo_vel_112(float *__restrict__ u1, float *__restrict__ u2, - float *__restrict__ u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float a, const float nu, - const int nx, const int ny, const int nz, const int bi, - const int bj, const int ei, const int ej) { +__global__ void dtopo_vel_112( + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *rho, + const float *s11, const float *s12, const float *s13, const float *s22, + const float *s23, const float *s33, const float a, const float nu, + const int nx, const int ny, const int nz, const int bi, const int bj, + const int ei, const int ej) { const float phzr[6][8] = { {0.0000000000000000, 0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, @@ -1115,76 +1092,76 @@ dtopo_vel_112(float *__restrict__ u1, float *__restrict__ u2, const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= 6) return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _rho(i, j, k) \ + rho[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_c(i, j) \ f_c[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] #define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _rho(i, j, k) \ - rho[(k) + align + \ +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] +#define _f(i, j) \ + f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _s13(i, j, k) \ + s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ +#define _g_c(k) g_c[(k) + align] +#define _s23(i, j, k) \ + s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s22(i, j, k) \ s22[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s33(i, j, k) \ s33[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] @@ -1596,53 +1573,46 @@ dtopo_vel_112(float *__restrict__ u1, float *__restrict__ u2, phy[1] * _s23(i, j - 1, nz - 1) + phy[3] * _s23(i, j + 1, nz - 1))))) * f_dcrj; -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c +#undef _rho #undef _f_1 +#undef _g3_c #undef _f_2 #undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c -#undef _rho +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy +#undef _f +#undef _s13 +#undef _u1 #undef _s11 +#undef _f2_1 +#undef _f1_1 #undef _s12 -#undef _s13 -#undef _s22 +#undef _g_c #undef _s23 -#undef _s33 -#undef _u1 +#undef _f2_2 +#undef _s22 +#undef _f1_2 #undef _u2 +#undef _g +#undef _s33 +#undef _f2_c +#undef _f1_c #undef _u3 } __global__ void dtopo_buf_vel_110( - float *__restrict__ buf_u1, float *__restrict__ buf_u2, - float *__restrict__ buf_u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float *__restrict__ u1, - const float *__restrict__ u2, const float *__restrict__ u3, const float a, - const float nu, const int nx, const int ny, const int nz, const int bj, - const int ej, const int rj0) { + float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, + const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, + const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, + const float *f2_c, const float *f_1, const float *f_2, const float *f_c, + const float *g, const float *g3, const float *g3_c, const float *g_c, + const float *rho, const float *s11, const float *s12, const float *s13, + const float *s22, const float *s23, const float *s33, const float *u1, + const float *u2, const float *u3, const float a, const float nu, + const int nx, const int ny, const int nz, const int bj, const int ej, + const int rj0) { const float phzl[6][7] = { {0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, 0.0000000000000000, @@ -1765,88 +1735,88 @@ __global__ void dtopo_buf_vel_110( const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= 6) return; -#define _buf_u1(i, j, k) \ - buf_u1[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _buf_u2(i, j, k) \ - buf_u2[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _buf_u3(i, j, k) \ - buf_u3[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _rho(i, j, k) \ + rho[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_c(i, j) \ f_c[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] #define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _rho(i, j, k) \ - rho[(k) + align + \ +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] +#define _f(i, j) \ + f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _s13(i, j, k) \ + s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _s22(i, j, k) \ - s22[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _g_c(k) g_c[(k) + align] #define _s23(i, j, k) \ s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _s22(i, j, k) \ + s22[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s33(i, j, k) \ s33[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _buf_u1(i, j, k) \ + buf_u1[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] +#define _buf_u2(i, j, k) \ + buf_u2[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] +#define _buf_u3(i, j, k) \ + buf_u3[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] float rho1 = phzl[k][0] * (phy[2] * _rho(i, j + rj0, 0) + phy[0] * _rho(i, j + rj0 - 2, 0) + @@ -2250,56 +2220,49 @@ __global__ void dtopo_buf_vel_110( phy[1] * _s23(i, j + rj0 - 1, 8) + phy[3] * _s23(i, j + rj0 + 1, 8))))) * f_dcrj; -#undef _buf_u1 -#undef _buf_u2 -#undef _buf_u3 -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c +#undef _rho #undef _f_1 +#undef _g3_c #undef _f_2 #undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c -#undef _rho +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy +#undef _f +#undef _s13 +#undef _u1 #undef _s11 +#undef _f2_1 +#undef _f1_1 #undef _s12 -#undef _s13 -#undef _s22 +#undef _g_c #undef _s23 -#undef _s33 -#undef _u1 +#undef _f2_2 +#undef _s22 +#undef _f1_2 #undef _u2 +#undef _g +#undef _s33 +#undef _f2_c +#undef _f1_c #undef _u3 +#undef _buf_u1 +#undef _buf_u2 +#undef _buf_u3 } __global__ void dtopo_buf_vel_111( - float *__restrict__ buf_u1, float *__restrict__ buf_u2, - float *__restrict__ buf_u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float *__restrict__ u1, - const float *__restrict__ u2, const float *__restrict__ u3, const float a, - const float nu, const int nx, const int ny, const int nz, const int bj, - const int ej, const int rj0) { + float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, + const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, + const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, + const float *f2_c, const float *f_1, const float *f_2, const float *f_c, + const float *g, const float *g3, const float *g3_c, const float *g_c, + const float *rho, const float *s11, const float *s12, const float *s13, + const float *s22, const float *s23, const float *s33, const float *u1, + const float *u2, const float *u3, const float a, const float nu, + const int nx, const int ny, const int nz, const int bj, const int ej, + const int rj0) { const float phz[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; const float phy[4] = {-0.0625000000000000, 0.5625000000000000, @@ -2341,88 +2304,88 @@ __global__ void dtopo_buf_vel_111( const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= nz - 12) return; -#define _buf_u1(i, j, k) \ - buf_u1[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _buf_u2(i, j, k) \ - buf_u2[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _buf_u3(i, j, k) \ - buf_u3[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _rho(i, j, k) \ + rho[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_c(i, j) \ f_c[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] #define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _rho(i, j, k) \ - rho[(k) + align + \ +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] +#define _f(i, j) \ + f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _s13(i, j, k) \ + s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ +#define _g_c(k) g_c[(k) + align] +#define _s23(i, j, k) \ + s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s22(i, j, k) \ s22[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s33(i, j, k) \ s33[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _buf_u1(i, j, k) \ + buf_u1[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] +#define _buf_u2(i, j, k) \ + buf_u2[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] +#define _buf_u3(i, j, k) \ + buf_u3[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] float rho1 = phz[0] * (phy[2] * _rho(i, j + rj0, k + 4) + phy[0] * _rho(i, j + rj0 - 2, k + 4) + phy[1] * _rho(i, j + rj0 - 1, k + 4) + @@ -2752,56 +2715,49 @@ __global__ void dtopo_buf_vel_111( phy[1] * _s23(i, j + rj0 - 1, k + 9) + phy[3] * _s23(i, j + rj0 + 1, k + 9))))) * f_dcrj; -#undef _buf_u1 -#undef _buf_u2 -#undef _buf_u3 -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c +#undef _rho #undef _f_1 +#undef _g3_c #undef _f_2 #undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c -#undef _rho +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy +#undef _f +#undef _s13 +#undef _u1 #undef _s11 +#undef _f2_1 +#undef _f1_1 #undef _s12 -#undef _s13 -#undef _s22 +#undef _g_c #undef _s23 -#undef _s33 -#undef _u1 +#undef _f2_2 +#undef _s22 +#undef _f1_2 #undef _u2 +#undef _g +#undef _s33 +#undef _f2_c +#undef _f1_c #undef _u3 +#undef _buf_u1 +#undef _buf_u2 +#undef _buf_u3 } __global__ void dtopo_buf_vel_112( - float *__restrict__ buf_u1, float *__restrict__ buf_u2, - float *__restrict__ buf_u3, const float *__restrict__ dcrjx, - const float *__restrict__ dcrjy, const float *__restrict__ dcrjz, - const float *__restrict__ f, const float *__restrict__ f1_1, - const float *__restrict__ f1_2, const float *__restrict__ f1_c, - const float *__restrict__ f2_1, const float *__restrict__ f2_2, - const float *__restrict__ f2_c, const float *__restrict__ f_1, - const float *__restrict__ f_2, const float *__restrict__ f_c, - const float *__restrict__ g, const float *__restrict__ g3, - const float *__restrict__ g3_c, const float *__restrict__ g_c, - const float *__restrict__ rho, const float *__restrict__ s11, - const float *__restrict__ s12, const float *__restrict__ s13, - const float *__restrict__ s22, const float *__restrict__ s23, - const float *__restrict__ s33, const float *__restrict__ u1, - const float *__restrict__ u2, const float *__restrict__ u3, const float a, - const float nu, const int nx, const int ny, const int nz, const int bj, - const int ej, const int rj0) { + float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, + const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, + const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, + const float *f2_c, const float *f_1, const float *f_2, const float *f_c, + const float *g, const float *g3, const float *g3_c, const float *g_c, + const float *rho, const float *s11, const float *s12, const float *s13, + const float *s22, const float *s23, const float *s33, const float *u1, + const float *u2, const float *u3, const float a, const float nu, + const int nx, const int ny, const int nz, const int bj, const int ej, + const int rj0) { const float phzr[6][8] = { {0.0000000000000000, 0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, @@ -2912,100 +2868,100 @@ __global__ void dtopo_buf_vel_112( 0.0000000000000000}, {0.0000000000000000, 0.0000000000000000, 0.0000000000000000, -0.0416666666666667, 1.1250000000000000, -1.1250000000000000, - 0.0416666666666667}}; - const int i = threadIdx.x + blockIdx.x * blockDim.x; - if (i >= nx) - return; - const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; - if (j >= ny) - return; - if (j >= ej) - return; - const int k = threadIdx.z + blockIdx.z * blockDim.z; - if (k >= 6) - return; -#define _buf_u1(i, j, k) \ - buf_u1[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _buf_u2(i, j, k) \ - buf_u2[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _buf_u3(i, j, k) \ - buf_u3[(j) * (2 * align + nz) + (k) + align + \ - ngsl * (2 * align + nz) * ((i) + ngsl + 2)] -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] -#define _f(i, j) \ - f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] + 0.0416666666666667}}; + const int i = threadIdx.x + blockIdx.x * blockDim.x; + if (i >= nx) + return; + const int j = threadIdx.y + blockIdx.y * blockDim.y + bj; + if (j >= ny) + return; + if (j >= ej) + return; + const int k = threadIdx.z + blockIdx.z * blockDim.z; + if (k >= 6) + return; +#define _rho(i, j, k) \ + rho[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_c(i, j) \ f_c[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] #define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] -#define _rho(i, j, k) \ - rho[(k) + align + \ +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] +#define _f(i, j) \ + f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _s13(i, j, k) \ + s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s13(i, j, k) \ - s13[(k) + align + \ +#define _g_c(k) g_c[(k) + align] +#define _s23(i, j, k) \ + s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s22(i, j, k) \ s22[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s23(i, j, k) \ - s23[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s33(i, j, k) \ s33[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _u3(i, j, k) \ u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _buf_u1(i, j, k) \ + buf_u1[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] +#define _buf_u2(i, j, k) \ + buf_u2[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] +#define _buf_u3(i, j, k) \ + buf_u3[(j) * (2 * align + nz) + (k) + align + \ + ngsl * (2 * align + nz) * ((i) + ngsl + 2)] float rho1 = phzr[k][7] * (phy[2] * _rho(i, j + rj0, nz - 8) + phy[0] * _rho(i, j + rj0 - 2, nz - 8) + phy[1] * _rho(i, j + rj0 - 1, nz - 8) + @@ -3447,54 +3403,47 @@ __global__ void dtopo_buf_vel_112( phy[1] * _s23(i, j + rj0 - 1, nz - 1) + phy[3] * _s23(i, j + rj0 + 1, nz - 1))))) * f_dcrj; -#undef _buf_u1 -#undef _buf_u2 -#undef _buf_u3 -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz -#undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c +#undef _rho #undef _f_1 +#undef _g3_c #undef _f_2 #undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c -#undef _rho +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy +#undef _f +#undef _s13 +#undef _u1 #undef _s11 +#undef _f2_1 +#undef _f1_1 #undef _s12 -#undef _s13 -#undef _s22 +#undef _g_c #undef _s23 -#undef _s33 -#undef _u1 +#undef _f2_2 +#undef _s22 +#undef _f1_2 #undef _u2 +#undef _g +#undef _s33 +#undef _f2_c +#undef _f1_c #undef _u3 +#undef _buf_u1 +#undef _buf_u2 +#undef _buf_u3 } __global__ void dtopo_str_110( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej) { + float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *lami, + const float *mui, const float a, const float nu, const int nx, const int ny, + const int nz, const int bi, const int bj, const int ei, const int ej) { const float phzl[6][7] = { {0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, 0.0000000000000000, @@ -3619,42 +3568,19 @@ __global__ void dtopo_str_110( const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= 6) return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] +#define _f_c(i, j) \ + f_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f(i, j) \ f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3(k) g3[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_c(i, j) \ - f_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] -#define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] #define _lami(i, j, k) \ lami[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ @@ -3663,39 +3589,62 @@ __global__ void dtopo_str_110( mui[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u3(i, j, k) \ + u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g_c(k) g_c[(k) + align] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _s22(i, j, k) \ + s22[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _s33(i, j, k) \ + s33[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s13(i, j, k) \ s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s22(i, j, k) \ - s22[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s23(i, j, k) \ s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s33(i, j, k) \ - s33[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u3(i, j, k) \ - u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] float Jii = _f_c(i, j) * _g3_c(k); Jii = 1.0 * 1.0 / Jii; float J12i = _f(i, j) * _g3_c(k); @@ -4280,52 +4229,45 @@ __global__ void dtopo_str_110( pdhzl[k][7] * _u3(i, j + 2, 7) + pdhzl[k][8] * _u3(i, j + 2, 8))))) * f_dcrj; -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz +#undef _f_c +#undef _g3_c #undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c #undef _f_1 -#undef _f_2 -#undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c +#undef _f_2 #undef _lami #undef _mui +#undef _u2 +#undef _f2_2 +#undef _u3 +#undef _g_c +#undef _f1_1 +#undef _u1 +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy #undef _s11 +#undef _s22 +#undef _s33 +#undef _f1_2 +#undef _f2_1 #undef _s12 +#undef _g #undef _s13 -#undef _s22 +#undef _f1_c #undef _s23 -#undef _s33 -#undef _u1 -#undef _u2 -#undef _u3 +#undef _f2_c } __global__ void dtopo_str_111( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej) { + float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *lami, + const float *mui, const float a, const float nu, const int nx, const int ny, + const int nz, const int bi, const int bj, const int ei, const int ej) { const float phz[4] = {-0.0625000000000000, 0.5625000000000000, 0.5625000000000000, -0.0625000000000000}; const float phy[4] = {-0.0625000000000000, 0.5625000000000000, @@ -4369,43 +4311,19 @@ __global__ void dtopo_str_111( const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= nz - 12) return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] - +#define _f_c(i, j) \ + f_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f(i, j) \ f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3(k) g3[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_c(i, j) \ - f_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] -#define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] #define _lami(i, j, k) \ lami[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ @@ -4414,40 +4332,62 @@ __global__ void dtopo_str_111( mui[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u3(i, j, k) \ + u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g_c(k) g_c[(k) + align] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _s22(i, j, k) \ + s22[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _s33(i, j, k) \ + s33[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s13(i, j, k) \ s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s22(i, j, k) \ - s22[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s23(i, j, k) \ s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s33(i, j, k) \ - s33[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u3(i, j, k) \ - u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] - +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] float Jii = _f_c(i, j) * _g3_c(k + 6); Jii = 1.0 * 1.0 / Jii; float J12i = _f(i, j) * _g3_c(k + 6); @@ -4884,53 +4824,45 @@ __global__ void dtopo_str_111( pdhz[5] * _u3(i, j + 2, k + 8) + pdhz[6] * _u3(i, j + 2, k + 9))))) * f_dcrj; - -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz +#undef _f_c +#undef _g3_c #undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c #undef _f_1 -#undef _f_2 -#undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c +#undef _f_2 #undef _lami #undef _mui +#undef _u2 +#undef _f2_2 +#undef _u3 +#undef _g_c +#undef _f1_1 +#undef _u1 +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy #undef _s11 +#undef _s22 +#undef _s33 +#undef _f1_2 +#undef _f2_1 #undef _s12 +#undef _g #undef _s13 -#undef _s22 +#undef _f1_c #undef _s23 -#undef _s33 -#undef _u1 -#undef _u2 -#undef _u3 +#undef _f2_c } __global__ void dtopo_str_112( - float *__restrict__ s11, float *__restrict__ s12, float *__restrict__ s13, - float *__restrict__ s22, float *__restrict__ s23, float *__restrict__ s33, - float *__restrict__ u1, float *__restrict__ u2, float *__restrict__ u3, - const float *__restrict__ dcrjx, const float *__restrict__ dcrjy, - const float *__restrict__ dcrjz, const float *__restrict__ f, - const float *__restrict__ f1_1, const float *__restrict__ f1_2, - const float *__restrict__ f1_c, const float *__restrict__ f2_1, - const float *__restrict__ f2_2, const float *__restrict__ f2_c, - const float *__restrict__ f_1, const float *__restrict__ f_2, - const float *__restrict__ f_c, const float *__restrict__ g, - const float *__restrict__ g3, const float *__restrict__ g3_c, - const float *__restrict__ g_c, const float *__restrict__ lami, - const float *__restrict__ mui, const float a, const float nu, const int nx, - const int ny, const int nz, const int bi, const int bj, const int ei, - const int ej) { + float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *lami, + const float *mui, const float a, const float nu, const int nx, const int ny, + const int nz, const int bi, const int bj, const int ei, const int ej) { const float phzr[6][8] = { {0.0000000000000000, 0.8338228784688313, 0.1775123316429260, 0.1435067013076542, -0.1548419114194114, 0.0000000000000000, @@ -5055,42 +4987,19 @@ __global__ void dtopo_str_112( const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= 6) return; -#define _dcrjx(i) dcrjx[(i) + ngsl + 2] -#define _dcrjy(j) dcrjy[(j) + ngsl + 2] -#define _dcrjz(k) dcrjz[(k) + align] +#define _f_c(i, j) \ + f_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3_c(k) g3_c[(k) + align] #define _f(i, j) \ f[(j) + align + ngsl + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_1(i, j) \ - f1_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_2(i, j) \ - f1_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f1_c(i, j) \ - f1_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_1(i, j) \ - f2_1[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_2(i, j) \ - f2_2[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f2_c(i, j) \ - f2_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _f_1(i, j) \ f_1[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _g3(k) g3[(k) + align] #define _f_2(i, j) \ f_2[(j) + align + ngsl + \ ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _f_c(i, j) \ - f_c[(j) + align + ngsl + \ - ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] -#define _g(k) g[(k) + align] -#define _g3(k) g3[(k) + align] -#define _g3_c(k) g3_c[(k) + align] -#define _g_c(k) g_c[(k) + align] #define _lami(i, j, k) \ lami[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ @@ -5099,39 +5008,62 @@ __global__ void dtopo_str_112( mui[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _u2(i, j, k) \ + u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_2(i, j) \ + f2_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u3(i, j, k) \ + u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _g_c(k) g_c[(k) + align] +#define _f1_1(i, j) \ + f1_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _u1(i, j, k) \ + u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _dcrjx(i) dcrjx[(i) + ngsl + 2] +#define _dcrjz(k) dcrjz[(k) + align] +#define _dcrjy(j) dcrjy[(j) + ngsl + 2] #define _s11(i, j, k) \ s11[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _s22(i, j, k) \ + s22[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _s33(i, j, k) \ + s33[(k) + align + \ + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ + (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_2(i, j) \ + f1_2[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] +#define _f2_1(i, j) \ + f2_1[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s12(i, j, k) \ s12[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] +#define _g(k) g[(k) + align] #define _s13(i, j, k) \ s13[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s22(i, j, k) \ - s22[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f1_c(i, j) \ + f1_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] #define _s23(i, j, k) \ s23[(k) + align + \ (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ (2 * align + nz) * ((j) + ngsl + 2)] -#define _s33(i, j, k) \ - s33[(k) + align + \ - (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u1(i, j, k) \ - u1[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u2(i, j, k) \ - u2[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] -#define _u3(i, j, k) \ - u3[(k) + align + (2 * align + nz) * ((i) + ngsl + 2) * (2 * ngsl + ny + 4) + \ - (2 * align + nz) * ((j) + ngsl + 2)] +#define _f2_c(i, j) \ + f2_c[(j) + align + ngsl + \ + ((i) + ngsl + 2) * (2 * align + 2 * ngsl + ny + 4) + 2] float Jii = _f_c(i, j) * _g3_c(nz - 1 - k); Jii = 1.0 * 1.0 / Jii; float J12i = _f(i, j) * _g3_c(nz - 1 - k); @@ -5807,41 +5739,39 @@ __global__ void dtopo_str_112( pdhzr[k][1] * _u3(i, j + 2, nz - 2) + pdhzr[k][0] * _u3(i, j + 2, nz - 1))))) * f_dcrj; - -#undef _dcrjx -#undef _dcrjy -#undef _dcrjz +#undef _f_c +#undef _g3_c #undef _f -#undef _f1_1 -#undef _f1_2 -#undef _f1_c -#undef _f2_1 -#undef _f2_2 -#undef _f2_c #undef _f_1 -#undef _f_2 -#undef _f_c -#undef _g #undef _g3 -#undef _g3_c -#undef _g_c +#undef _f_2 #undef _lami #undef _mui +#undef _u2 +#undef _f2_2 +#undef _u3 +#undef _g_c +#undef _f1_1 +#undef _u1 +#undef _dcrjx +#undef _dcrjz +#undef _dcrjy #undef _s11 +#undef _s22 +#undef _s33 +#undef _f1_2 +#undef _f2_1 #undef _s12 +#undef _g #undef _s13 -#undef _s22 +#undef _f1_c #undef _s23 -#undef _s33 -#undef _u1 -#undef _u2 -#undef _u3 +#undef _f2_c } -__global__ void dtopo_init_material_111(float *__restrict__ lami, - float *__restrict__ mui, - float *__restrict__ rho, const int nx, - const int ny, const int nz) { +__global__ void dtopo_init_material_111(float *lami, float *mui, float *rho, + const int nx, const int ny, + const int nz) { const int i = threadIdx.x + blockIdx.x * blockDim.x; if (i >= nx) return; @@ -5851,13 +5781,13 @@ __global__ void dtopo_init_material_111(float *__restrict__ lami, const int k = threadIdx.z + blockIdx.z * blockDim.z; if (k >= nz) return; +#define _rho(i, j, k) rho[(i)*ny * nz + (j)*nz + (k)] #define _lami(i, j, k) lami[(i)*ny * nz + (j)*nz + (k)] #define _mui(i, j, k) mui[(i)*ny * nz + (j)*nz + (k)] -#define _rho(i, j, k) rho[(i)*ny * nz + (j)*nz + (k)] _rho(i, j, k) = 1.0; _lami(i, j, k) = 1.0; _mui(i, j, k) = 1.0; +#undef _rho #undef _lami #undef _mui -#undef _rho } diff --git a/tests/topography/accuracy/cutopography_kernel.cuh b/tests/topography/accuracy/cutopography_kernel.cuh new file mode 100644 index 0000000..1ae8395 --- /dev/null +++ b/tests/topography/accuracy/cutopography_kernel.cuh @@ -0,0 +1,99 @@ +#ifndef CUTOPOGRAPHY_KERNEL_H +#define CUTOPOGRAPHY_KERNEL_H +#include "definitions.h" +#include + +__global__ void dtopo_vel_110( + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *rho, + const float *s11, const float *s12, const float *s13, const float *s22, + const float *s23, const float *s33, const float a, const float nu, + const int nx, const int ny, const int nz, const int bi, const int bj, + const int ei, const int ej); +__global__ void dtopo_vel_111( + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *rho, + const float *s11, const float *s12, const float *s13, const float *s22, + const float *s23, const float *s33, const float a, const float nu, + const int nx, const int ny, const int nz, const int bi, const int bj, + const int ei, const int ej); +__global__ void dtopo_vel_112( + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *rho, + const float *s11, const float *s12, const float *s13, const float *s22, + const float *s23, const float *s33, const float a, const float nu, + const int nx, const int ny, const int nz, const int bi, const int bj, + const int ei, const int ej); +__global__ void dtopo_buf_vel_110( + float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, + const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, + const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, + const float *f2_c, const float *f_1, const float *f_2, const float *f_c, + const float *g, const float *g3, const float *g3_c, const float *g_c, + const float *rho, const float *s11, const float *s12, const float *s13, + const float *s22, const float *s23, const float *s33, const float *u1, + const float *u2, const float *u3, const float a, const float nu, + const int nx, const int ny, const int nz, const int bj, const int ej, + const int rj0); +__global__ void dtopo_buf_vel_111( + float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, + const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, + const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, + const float *f2_c, const float *f_1, const float *f_2, const float *f_c, + const float *g, const float *g3, const float *g3_c, const float *g_c, + const float *rho, const float *s11, const float *s12, const float *s13, + const float *s22, const float *s23, const float *s33, const float *u1, + const float *u2, const float *u3, const float a, const float nu, + const int nx, const int ny, const int nz, const int bj, const int ej, + const int rj0); +__global__ void dtopo_buf_vel_112( + float *buf_u1, float *buf_u2, float *buf_u3, const float *dcrjx, + const float *dcrjy, const float *dcrjz, const float *f, const float *f1_1, + const float *f1_2, const float *f1_c, const float *f2_1, const float *f2_2, + const float *f2_c, const float *f_1, const float *f_2, const float *f_c, + const float *g, const float *g3, const float *g3_c, const float *g_c, + const float *rho, const float *s11, const float *s12, const float *s13, + const float *s22, const float *s23, const float *s33, const float *u1, + const float *u2, const float *u3, const float a, const float nu, + const int nx, const int ny, const int nz, const int bj, const int ej, + const int rj0); +__global__ void dtopo_str_110( + float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *lami, + const float *mui, const float a, const float nu, const int nx, const int ny, + const int nz, const int bi, const int bj, const int ei, const int ej); +__global__ void dtopo_str_111( + float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *lami, + const float *mui, const float a, const float nu, const int nx, const int ny, + const int nz, const int bi, const int bj, const int ei, const int ej); +__global__ void dtopo_str_112( + float *s11, float *s12, float *s13, float *s22, float *s23, float *s33, + float *u1, float *u2, float *u3, const float *dcrjx, const float *dcrjy, + const float *dcrjz, const float *f, const float *f1_1, const float *f1_2, + const float *f1_c, const float *f2_1, const float *f2_2, const float *f2_c, + const float *f_1, const float *f_2, const float *f_c, const float *g, + const float *g3, const float *g3_c, const float *g_c, const float *lami, + const float *mui, const float a, const float nu, const int nx, const int ny, + const int nz, const int bi, const int bj, const int ei, const int ej); +__global__ void dtopo_init_material_111(float *lami, float *mui, float *rho, + const int nx, const int ny, + const int nz); +#endif \ No newline at end of file diff --git a/tests/topography/accuracy/cutopography_test.cu b/tests/topography/accuracy/cutopography_test.cu new file mode 100644 index 0000000..dd8007a --- /dev/null +++ b/tests/topography/accuracy/cutopography_test.cu @@ -0,0 +1,595 @@ +#include +#include + + +#include "cutopography_test.cuh" + +#define BLOCK_SIZE_X 1 +#define BLOCK_SIZE_Y 1 +#define BLOCK_SIZE_Z 32 +#define TBX 1 +#define TBY 1 +#define TBZ 32 + + +void topo_test_diffx_H(topo_t *T, _prec *out, const _prec *in) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + dtopo_test_diffx<<stream_i>>>( + out, in, + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->line, T->slice, + T->line, T->slice + ); + CUCHK(cudaGetLastError()); + + return; +} + +void topo_test_cgdiffx_H(topo_t *T, _prec *out, const _prec *in) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (TBX, TBY, TBZ); + dim3 grid ((T->nx+TBX-1)/TBX, + (T->ny+TBY-1)/TBY, + (T->nz+TBZ-1)/TBZ); + CUCHK(cudaGetLastError()); + if (TOPO_DBG > 1) { + printf("Grid: %d %d %d \n", grid.x, grid.y, grid.z); + } + dtopo_test_diffx_111<<stream_i>>>( + out, in, + T->nx, T->ny, T->nz); + CUCHK(cudaGetLastError()); + + return; +} + +void topo_test_diffy_H(topo_t *T, _prec *out, const _prec *in) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + dtopo_test_diffy<<stream_i>>>( + out, in, + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->line, T->slice, + T->line, T->slice + ); + CUCHK(cudaGetLastError()); + + return; +} + +void topo_test_diffz_H(topo_t *T, _prec *out, const _prec *in) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (TBX, TBY, TBZ); + dim3 grid ((T->nx+TBX-1)/TBX, + (T->ny+TBY-1)/TBY, + (T->nz+TBZ-1)/TBZ); + CUCHK(cudaGetLastError()); + dtopo_test_diffz_111<<stream_i>>>( + out, in, + T->nx, T->ny, T->nz); + dtopo_test_diffz_112<<stream_i>>>( + out, in, + T->nx, T->ny, T->nz); + CUCHK(cudaGetLastError()); + + return; +} + +void topo_test_poly_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + + CUCHK(cudaGetLastError()); + + // Initialize the end result (yy) to something else than zero to make + // sure that the test is not trivially passed + dtopo_test_poly<<>>( + out, + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); +} + +void topo_test_polystr_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+ngsl+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+ngsl+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + + CUCHK(cudaGetLastError()); + + // Initialize the end result (yy) to something else than zero to make + // sure that the test is not trivially passed + dtopo_test_poly<<>>( + out, + T->off_x[1]-ngsl/2, T->off_x[2]+ngsl/2, + T->off_y[1]-ngsl/2, T->off_y[2]+ngsl/2, + T->off_z[1], T->off_z[2], + T->off_x[1]-ngsl/2, T->off_x[2]+ngsl/2, + T->off_y[1]-ngsl/2, T->off_y[2]+ngsl/2, + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); +} + +void topo_test_polyzbnd_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + + CUCHK(cudaGetLastError()); + + dtopo_test_polyzbnd<<>>( + out, + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[2], + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); +} + +void topo_test_polystrzbnd_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+ngsl+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+ngsl+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + + CUCHK(cudaGetLastError()); + + dtopo_test_polyzbnd<<>>( + out, + T->off_x[1]-ngsl/2, T->off_x[2]+ngsl/2, + T->off_y[1]-ngsl/2, T->off_y[2]+ngsl/2, + T->off_z[1], T->off_z[2], + T->off_x[1]-ngsl/2, T->off_x[2]+ngsl/2, + T->off_y[1]-ngsl/2, T->off_y[2]+ngsl/2, + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); +} + +void topo_test_polyf_H(topo_t *T, _prec *out, const _prec *coef, const _prec + *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + dtopo_test_poly<<stream_1>>>( + out, + T->off_x[1], T->off_x[2], + 0, ngsl, + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[1] + ngsl, + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice_gl, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); + + return; +} + +void topo_test_polyzbndf_H(topo_t *T, _prec *out, const _prec *coef, const _prec + *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + dtopo_test_polyzbnd<<stream_1>>>( + out, + T->off_x[1], T->off_x[2], + 0, ngsl, + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[1], T->off_y[1] + ngsl, + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice_gl, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); + + return; +} + +void topo_test_polyb_H(topo_t *T, _prec *out, const _prec *coef, const _prec + *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + //Differentiate (`sxx = 0`) + dtopo_test_poly<<stream_2>>>( + out, + T->off_x[1], T->off_x[2], + 0, ngsl, + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[2] - ngsl, T->off_y[2], + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice_gl, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); + + return; +} + +void topo_test_polyzbndb_H(topo_t *T, _prec *out, const _prec *coef, const _prec + *deg, const int *shift) +{ + if (TOPO_DBG) { + printf("launching %s(%d)\n", __func__, T->rank); + } + dim3 block (BLOCK_SIZE_Z, BLOCK_SIZE_Y, BLOCK_SIZE_X); + dim3 grid ((T->nz+BLOCK_SIZE_Z-1)/BLOCK_SIZE_Z, + (T->ny+BLOCK_SIZE_Y-1)/BLOCK_SIZE_Y, + (T->nx+BLOCK_SIZE_X-1)/BLOCK_SIZE_X); + //Differentiate (`sxx = 0`) + dtopo_test_polyzbnd<<stream_2>>>( + out, + T->off_x[1], T->off_x[2], + 0, ngsl, + T->off_z[1], T->off_z[2], + T->off_x[1], T->off_x[2], + T->off_y[2] - ngsl, T->off_y[2], + T->off_z[1], T->off_z[2], + T->nx, T->ny, T->nz, + T->line, T->slice_gl, + T->coord[0], T->coord[1], + coef[0], coef[1], coef[2], + deg[0], deg[1], deg[2], + shift[0], shift[1], shift[2] + ); + CUCHK(cudaGetLastError()); + + return; +} + +__global__ void dtopo_test_diffx(_prec *xx, const _prec *u1, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int wline, const int wslice, + const int rline, const int rslice) + +{ + const _prec dx[2] = {-0.0416666666666667, 1.1250000000000000}; + + const int wk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + const int wj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + const int wi = threadIdx.z + blockIdx.z*blockDim.z + wi0; + const int rk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + const int rj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + const int ri = threadIdx.z + blockIdx.z*blockDim.z + wi0; + if (wk >= wkn || wj >= wjn || wi >= win) { + return; + } + if (rk >= rkn || rj >= rjn || ri >= rin) { + return; + } + + int pos = wk + wline*wj + wslice*wi; + xx[pos] = dx[0]*( u1[rk + rline*rj + rslice*(ri + 2)] + - u1[rk + rline*rj + rslice*(ri - 1)] + ) + + dx[1]*( u1[rk + rline*rj + rslice*(ri + 1)] + - u1[rk + rline*rj + rslice*(ri + 0)] + ); +} + +__global__ void dtopo_test_diffx_111(_prec *xx, const _prec *u1, const int nx, const int ny, const int nz) +{ + const _prec dx[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; + const int i = threadIdx.x + blockIdx.x*blockDim.x; + if ( i >= nx) return; + const int j = threadIdx.y + blockIdx.y*blockDim.y; + if ( j >= ny) return; + const int k = threadIdx.z + blockIdx.z*blockDim.z; + if ( k >= nz) return; + xx[align + k + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2)] = + + dx[0]*u1[align + k + (2*align + nz)*(i + ngsl + 1)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2)] + + dx[1]*u1[align + k + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2)] + + dx[2]*u1[align + k + (2*align + nz)*(i + ngsl + 3)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2)] + + dx[3]*u1[align + k + (2*align + nz)*(i + ngsl + 4)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2)]; + +} + + +__global__ void dtopo_test_diffy(_prec *yy, const _prec *v1, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int wline, const int wslice, + const int rline, const int rslice) + +{ + const _prec dy[2] = {-0.0416666666666667, 1.1250000000000000}; + + const int wk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + const int wj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + const int wi = threadIdx.z + blockIdx.z*blockDim.z + wi0; + const int rk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + const int rj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + const int ri = threadIdx.z + blockIdx.z*blockDim.z + wi0; + if (wk >= wkn || wj >= wjn || wi >= win) { + return; + } + if (rk >= rkn || rj >= rjn || ri >= rin) { + return; + } + + int pos = wk + wline*wj + wslice*wi; + yy[pos] = dy[0]*( v1[rk + rline*(rj + 2) + rslice*ri] + - v1[rk + rline*(rj - 1) + rslice*ri] + ) + + dy[1]*( v1[rk + rline*(rj + 1) + rslice*ri] + - v1[rk + rline*(rj + 0) + rslice*ri] + ); +} +__global__ void dtopo_test_diffz_111(_prec *xz, const _prec *u1, const int nx, const int ny, const int nz) +{ + const _prec dz[4] = {0.0416666666666667, -1.1250000000000000, 1.1250000000000000, -0.0416666666666667}; + const int i = threadIdx.x + blockIdx.x*blockDim.x; + if ( i >= nx) return; + const int j = threadIdx.y + blockIdx.y*blockDim.y; + if ( j >= ny) return; + const int k = threadIdx.z + blockIdx.z*blockDim.z; + if ( k >= nz - 5) return; + // Hack used to only update the interior point for which there is data. + if ( k <= 2) return; + #define _xz(p,q,r) xz[align + (r) + (2*align + nz)*((p) + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*((q) + ngsl + 2)] + #define _u1(p,q,r) u1[align + (r) + (2*align + nz)*((p) + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*((q) + ngsl + 2)] + + _xz(i,j,k) = dz[0]*_u1(i,j,k-1) + dz[1]*_u1(i,j,k) \ + + dz[2]*_u1(i,j,k+1) + dz[3]*_u1(i,j,k+2); + + #undef _xz + #undef _u1 + +} + +__global__ void dtopo_test_diffz_112(_prec *xz, const _prec *u1, const int nx, const int ny, const int nz) +{ + const _prec dzr[5][6] = {{0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 0.0000000000000000}, {2.4843703320382104, -2.6581943725716441, 0.1054629150477628, 0.0683611254856712, 0.0000000000000000, 0.0000000000000000}, {0.0788758473205719, 0.8521077862739277, -0.9014051908492852, -0.0295784427452145, 0.0000000000000000, 0.0000000000000000}, {-0.0147185348696016, -0.0162224835422866, 1.1130610406813668, -1.1259397586922681, 0.0438197364227896, 0.0000000000000000}, {-0.0040598373854470, 0.0051290309438727, -0.0391885057638776, 1.1187625510387915, -1.1222064403269296, 0.0415632014935900}}; + const int i = threadIdx.x + blockIdx.x*blockDim.x; + if ( i >= nx) return; + const int j = threadIdx.y + blockIdx.y*blockDim.y; + if ( j >= ny) return; + const int k = threadIdx.z + blockIdx.z*blockDim.z; + if ( k >= 5) return; + xz[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 1 - k] = + dzr[k][5]*u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 6] + dzr[k][4]*u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 5] + dzr[k][3]*u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 4] + dzr[k][2]*u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 3] + dzr[k][1]*u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 2] + dzr[k][0]*u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 1]; + + _prec out = xz[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 1 - k]; + if (TOPO_DBG > 1 && i == 10 && j == 10) { + printf("out[%d] = %g in = %g %g %g %g %g %g \n", k, out, + u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 6], + u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 5], + u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 4], + u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 3], + u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 2], + u1[align + nz + (2*align + nz)*(i + ngsl + 2)*(2*ngsl + ny + 4) + (2*align + nz)*(j + ngsl + 2) - 1] + ); + } + +} + +__global__ void dtopo_test_poly(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2) +{ + // Indices used for output + const int wk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + if ( wk >= wkn) return; + const int wj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + if ( wj >= wjn) return; + const int wi = threadIdx.z + blockIdx.z*blockDim.z + wi0; + if ( wi >= win) return; + + // Indices used for input + const int rk = threadIdx.x + blockIdx.x*blockDim.x + rk0; + if ( rk >= rkn) return; + const int rj = threadIdx.y + blockIdx.y*blockDim.y + rj0; + if ( rj >= rjn) return; + const int ri = threadIdx.z + blockIdx.z*blockDim.z + ri0; + if ( ri >= rin) return; + + const int pos = wk + wj*line + wi*slice; + out[pos] = a0*pow((_prec)(ri + nx*rx - 0.5*s0), (_prec)p0) + + a1*pow((_prec)(rj + ny*ry - 0.5*s1), (_prec)p1) + + a2*pow((_prec)(rk - 0.5*s2), (_prec)p2); +} + + +__global__ void dtopo_test_polyzbnd(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2) +{ + // Indices used for output + const int wk = threadIdx.x + blockIdx.x*blockDim.x + wk0; + if ( wk >= wkn) return; + const int wj = threadIdx.y + blockIdx.y*blockDim.y + wj0; + if ( wj >= wjn) return; + const int wi = threadIdx.z + blockIdx.z*blockDim.z + wi0; + if ( wi >= win) return; + + // Indices used for input + const int rk = threadIdx.x + blockIdx.x*blockDim.x + rk0; + if ( rk >= rkn) return; + const int rj = threadIdx.y + blockIdx.y*blockDim.y + rj0; + if ( rj >= rjn) return; + const int ri = threadIdx.z + blockIdx.z*blockDim.z + ri0; + if ( ri >= rin) return; + + + +/* + * n-4 n-3 n-2 n-1 + * z ------o-----o-|---o-----o--|---o----o-----o---* + * | | + * | | + * zh ---o-----o----|o-----o-----|^----o-----o--o + * | |n-4 n-3 n-2 n-1 + * + * Bottom Interior Top + */ + + + _prec zkp = 0.0; + if (rk == rkn - 1 && s2 == 1) { + zkp = pow((_prec)(rkn - 2), (_prec)p2); + } + else if (rk == rk0) { + zkp = pow((_prec)rk, (_prec)p2); + } + else if (rk == rkn - 1 && s2 == 0) { + zkp = 0; + } + else { + zkp = pow((_prec)(rk- 0.5*s2), (_prec)p2); + } + + const int pos = wk + wj*line + wi*slice; + out[pos] = a0*pow((_prec)(ri + nx*rx - 0.5*s0),(_prec)p0) + + a1*pow((_prec)(rj + ny*ry - 0.5*s1),(_prec)p1) + + a2*zkp; +} diff --git a/tests/topography/accuracy/cutopography_test.cuh b/tests/topography/accuracy/cutopography_test.cuh new file mode 100644 index 0000000..7c82dee --- /dev/null +++ b/tests/topography/accuracy/cutopography_test.cuh @@ -0,0 +1,93 @@ +#ifndef _TOPOGRAPHY_TEST_H +#define _TOPOGRAPHY_TEST_H + +#include +#include + + +#ifdef __cplusplus +extern "C" { +#endif +void topo_test_diffx_H(topo_t *T, _prec *out, const _prec *in); +//This function differs from the previous in that it calls an auto-generated +// compute kernel +void topo_test_cgdiffx_H(topo_t *T, _prec *out, const _prec *in); +void topo_test_diffy_H(topo_t *T, _prec *out, const _prec *in); +void topo_test_diffz_H(topo_t *T, _prec *out, const _prec *in); +// Construct polynomial on velocity grid +void topo_test_poly_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +// Construct polynomial on stress grid +void topo_test_polystr_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +void topo_test_polyzbnd_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +void topo_test_polyf_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +void topo_test_polyzbndf_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +void topo_test_polyb_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +void topo_test_polyzbndb_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +void topo_test_polystrzbnd_H(topo_t *T, _prec *out, const _prec *coef, + const _prec *deg, const int *shift); +#ifdef __cplusplus +} +#endif + +__global__ void dtopo_test_diffx(_prec *xx, const _prec *u1, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int wline, const int wslice, + const int rline, const int rslice); + +__global__ void dtopo_test_diffx_111(_prec *xx, const _prec *u1, + const int nx, const int ny, const int nz); + +__global__ void dtopo_test_diffy(_prec *xx, const _prec *u1, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int wline, const int wslice, + const int rline, const int rslice); + +__global__ void dtopo_test_diffz_111(_prec *xz, const _prec *u1, const int nx, const int ny, const int nz); +__global__ void dtopo_test_diffz_112(_prec *xz, const _prec *u1, const int nx, const int ny, const int nz); + +__global__ void dtopo_test_poly(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2); + +__global__ void dtopo_test_polyzbnd(_prec *out, + const int wi0, const int win, + const int wj0, const int wjn, + const int wk0, const int wkn, + const int ri0, const int rin, + const int rj0, const int rjn, + const int rk0, const int rkn, + const int nx, const int ny, const int nz, + const int line, const int slice, + const int rx, const int ry, + const _prec a0, const _prec a1, const _prec a2, + const _prec p0, const _prec p1, const _prec p2, + const _prec s0, const _prec s1, const _prec s2); + +#endif diff --git a/tests/topography/accuracy/data/topography_0.bin b/tests/topography/accuracy/data/topography_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..6b9bfc609d6ca60a3014d1d8a966437085ce094a GIT binary patch literal 4108 zcmc)N>x-3D6bA6gPzNtKBPeB-7Lr(A7<9t(zVAL{);Ol3X2gs}Q- z3th~iR3yvFOcNU$VuliLq!?;wCQ@l7sfd|fG(TkLxBrRv!(pAh_gc@h*L9y$QC3z~ zQTmjZKAl^ZkF06@b>z?wh8Lz>Sz5?u9VjfhR*}rA9htrDFn#im zg$HT}Bu5{5HhF&9dr9@TCzF=?9%=EO>U2@3$I_Ogi_)g{=CrD2Q#z+}YufYhS84sR zT~S)wcTSH!JN9tk!G(_pA71zHz2oC&3Y$+2O@1r9oNTz|i)8Kmvh?)1!O_od%T}g) zHf~J^%{Y|a(0VcLKd@u=@6{gJzSF(4uJ_#>rL}$M^ysq_7dY_X!pDOTuUNQ`z4C{f zl2cvxCcFA~PY?e-I{LBZ(&lu;)Dw~Og?_hXtFBjPo65&!gO^UrYAR=Bd$-Mu(%Qar zdhWuGy?DTb3m*?Yyz(I??&WOFn#!2R&-T9-V>_kqf9Zv_{j-Jp?~h!U=Pk}gm#@yU z!iH>ghmW)OKm8=ixGwEGcPIMn*vk<-^#LCbKD=r|Uc|=z=sei?R*YfUvaZn|eir^% zo-JzlFdMdUXEy%aciHKNv)S&&e`ZaOUWwA$zH@r?*@*`nIe`lw4?eu=Qfr{eRgEa?#Nl$)-hZg)+;njygdx*J}7Me{O%~N?K^iD`s~=lfd>~p z9(;K9hWb<^@+4O7%Vtac!WdhAP59`>aH6hnnEco9aA9X{xL#2o4$XZs{8I5$l-Bm0 z)1%K$j^IRJO1SXx;KQpw^@uuEEAka%R=PLawzeO#E_Zf|eiqM<3o~1u2@B3I3`bV1 z2xse7g}=A1j?&t`b9&;!jy)W4fD0cFKD=gxKGiGgRn5qo*ttK9o9?QL{+|7LLFAh7 z(#CM+()KWMNn4mS_sb})?Yk2_@nFXu4m`N<@!-R2PMH<@RnMqfwIhFG$PZX!uDuef z&#wz(cI^mb_8bUl@nraV_nFY6@m!SF_MJz)l0G~3aNxm(j|U%Kvr<0PhQ8H1>Q@cP zqge6>CVzW=e>}W%;8NH(q(iaq?DArtH@ie>ZQnUP`s~=lfd>~p9(;JsYctc_k{|u6 zht#oJl20+^7wq~uR|C$rW4($iJKb7rp5HG@Yx~aW(PzgV4m`N<@!-R&AI)tsF~7_f z`O-`3Sxw2S*zym@Bh7t^0|pK(whbOuym+xHN^ASh>CtD$9uBBh`_AdnXU856Jh<@j;KS?vHWR#KYQsD? zQ`N26qQCW+Iu~2{7IS{%{^sELD6Q=~r$?V1dpPjm!pDOTZ{Ggro&UV+Kkxp}d;aA; j|MPzT@_zsG{{55p@4vi%|K|PsKkxrPdH?^*`~UC%A)?8Z literal 0 HcmV?d00001 diff --git a/tests/topography/accuracy/data/topography_1.bin b/tests/topography/accuracy/data/topography_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..97538a68c3d6acecebdb645edf74fde1fa29fe43 GIT binary patch literal 9228 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 z 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 K!A{r?yZL`XxX(HO literal 0 HcmV?d00001 diff --git a/tests/topography/accuracy/functions.c b/tests/topography/accuracy/functions.c new file mode 100644 index 0000000..cf0f686 --- /dev/null +++ b/tests/topography/accuracy/functions.c @@ -0,0 +1,261 @@ +#include +#include +#include +#include + +#include +#include "functions.h" + +/* + * Fill a grid with grid point values for a given axis. + * + * Example: + * `fcn_fill_grid(grid, 0)` constructs the x-axis. + */ +void fcn_fill_grid(_prec *out, const fcn_grid_t grid, const int3_t shift, + const int axis) { + int i1 = grid.offset1.x; + int j1 = grid.offset1.y; + int k1 = grid.offset1.z; + int i2 = grid.offset2.x; + int j2 = grid.offset2.y; + int k2 = grid.offset2.z; + + _prec a[3]; + for (int i = 0; i < 3; ++i) { + a[i] = 0.0; + } + a[axis] = 1; + _prec h = grid.gridspacing; + int xshift = (axis == 0 && shift.x) ? 1 : 0; + + for (int i = i1; i < i2; ++i) { + for (int j = j1; j < j2; ++j) { + for (int k = k1; k < k2; ++k) { + _prec zkp = 0.0; + if (k == k2 - 1 && shift.z == 1) { + zkp = k2 - 2; + } + else if ( k == grid.offset1.z) { + zkp = k1; + } + else if ( k == k2 - 1 && shift.z == 0) { + zkp = k1; + } + else { + zkp = k - 0.5*shift.z; + } + + int pos = k + j*grid.line + i*grid.slice; + out[pos] = + h * a[0] * (i - i1 + grid.coordinate.x * grid.inner_size.x - + 0.5 * shift.x + xshift) + + h * a[1] * (j - j1 + grid.coordinate.y * grid.inner_size.y - + 0.5 * shift.y) + + h * a[2] * (zkp - k1); + } + } + } +} + + +void fcn_shift(_prec *out, _prec *in, const fcn_grid_t grid, const _prec shift) +{ + for (int i = 0; i < grid.size.x; ++i) { + for (int j = 0; j < grid.size.y; ++j) { + for (int k = 0; k < grid.size.z; ++k) { + int pos = grid.offset1.z + k + + (grid.offset1.y + j) * grid.line + + (grid.offset1.x + i) * grid.slice; + out[pos] = in[pos] + shift; + } + } + } +} + +void fcn_power(_prec *out, _prec *in, const fcn_grid_t grid, + const _prec exponent) { + for (int i = 0; i < grid.size.x; ++i) { + for (int j = 0; j < grid.size.y; ++j) { + for (int k = 0; k < grid.size.z; ++k) { + int pos = grid.offset1.z + k + + (grid.offset1.y + j) * grid.line + + (grid.offset1.x + i) * grid.slice; + out[pos] = pow(in[pos], exponent); + } + } + } +} + +void fcn_normalize(_prec *out, _prec *in, const fcn_grid_t grid) +{ + + int i1 = grid.offset1.x; + int j1 = grid.offset1.y; + int k1 = grid.offset1.z; + int i2 = grid.offset2.x; + int j2 = grid.offset2.y; + int k2 = grid.offset2.z - grid.exclude_top_row; + int pos1 = k1 + j1 * grid.line + i1 * grid.slice; + int pos2 = (k2 - 1) + (j2 - 1) * grid.line + (i2 - 1) * grid.slice; + + _prec normalization = 1.0/(in[pos2] - in[pos1]); + for (int i = i1; i < i2; ++i) { + for (int j = j1; j < j2; ++j) { + for (int k = k1; k < k2; ++k) { + int pos = k + j * grid.line + i * grid.slice; + out[pos] = (in[pos] - in[pos1])*normalization; + } + } + } +} + + +void fcn_difference(_prec *out, _prec *in1, _prec *in2, const fcn_grid_t grid) +{ + + int i1 = grid.offset1.x; + int j1 = grid.offset1.y; + int k1 = grid.offset1.z; + int i2 = grid.offset2.x; + int j2 = grid.offset2.y; + int k2 = grid.offset2.z - grid.exclude_top_row; + + for (int i = i1; i < i2; ++i) { + for (int j = j1; j < j2; ++j) { + for (int k = k1; k < k2; ++k) { + int pos = k + j * grid.line + i * grid.slice; + out[pos] = in1[pos] - in2[pos]; + } + } + } +} + +void fcn_apply(_prec *out, fcn_gridp fcn, const _prec *x, const _prec *y, + const _prec *z, const _prec *properties, const fcn_grid_t grid) { + for (int i = 0; i < grid.size.x; ++i) { + for (int j = 0; j < grid.size.y; ++j) { + for (int k = 0; k < grid.size.z; ++k) { + int pos = grid.offset1.z + k + + (grid.offset1.y + j) * grid.line + + (grid.offset1.x + i) * grid.slice; + out[pos] = fcn(x[pos], y[pos], z[pos], properties); + } + } + } +} + +void fcn_abs(_prec *out, _prec *in, const fcn_grid_t grid) +{ + + int i1 = grid.offset1.x; + int j1 = grid.offset1.y; + int k1 = grid.offset1.z; + int i2 = grid.offset2.x; + int j2 = grid.offset2.y; + int k2 = grid.offset2.z - grid.exclude_top_row; + + for (int i = i1; i < i2; ++i) { + for (int j = j1; j < j2; ++j) { + for (int k = k1; k < k2; ++k) { + int pos = k + j * grid.line + i * grid.slice; + out[pos] = fabs(in[pos]); + } + } + } +} + +void fcn_constant(_prec *out, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice, + const _prec *args) +{ + for (int i = i0; i < in; ++i) { + for (int j = j0; j < jn; ++j) { + for (int k = k0; k < kn; ++k) { + int pos = k + j*line + i*slice; + out[pos] = args[0]; + } + } + } + +} +void fcn_poly(_prec *out, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice, + const _prec *args) +{ + const _prec a0 = args[0]; + const _prec a1 = args[1]; + const _prec a2 = args[2]; + const _prec p0 = args[3]; + const _prec p1 = args[4]; + const _prec p2 = args[5]; + const _prec s0 = args[6]; + const _prec s1 = args[7]; + const _prec s2 = args[8]; + const int nx = (int)args[9]; + const int ny = (int)args[10]; + const int rx = (int)args[11]; + const int ry = (int)args[12]; + for (int i = i0; i < in; ++i) { + for (int j = j0; j < jn; ++j) { + for (int k = k0; k < kn; ++k) { + int pos = k + j*line + i*slice; + out[pos] = a0*pow(i + rx*nx - 0.5*s0, p0) + + a1*pow(j + ry*ny - 0.5*s1, p1) + + a2*pow(k - 0.5*s2, p2); + } + } + } +} + +//TODO: Deprecate this function. Use `fcn_polynomial` instead. +void fcn_polybndz(_prec *out, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice, + const _prec *args) +{ + const _prec a0 = args[0]; + const _prec a1 = args[1]; + const _prec a2 = args[2]; + const _prec p0 = args[3]; + const _prec p1 = args[4]; + const _prec p2 = args[5]; + const _prec s0 = args[6]; + const _prec s1 = args[7]; + const _prec s2 = args[8]; + const int nx = (int)args[9]; + const int ny = (int)args[10]; + const int rx = (int)args[11]; + const int ry = (int)args[12]; + for (int i = i0; i < in; ++i) { + for (int j = j0; j < jn; ++j) { + for (int k = k0; k < kn; ++k) { + _prec zkp = 0.0; + if (k == kn - 1 && s2 == 1) { + zkp = pow(kn - 2, p2); + } + else if ( k == k0) { + zkp = pow(k0, p2); + } + else if ( k == kn - 1 && s2 == 0) { + zkp = 0; + } + else { + zkp = pow(k - 0.5*s2, p2); + } + int pos = k + j*line + i*slice; + out[pos] = a0*pow(i + rx*nx + 0.5*s0, p0) + + a1*pow(j + ry*ny + 0.5*s1, p1) + + a2*zkp; + } + } + } +} diff --git a/tests/topography/accuracy/functions.h b/tests/topography/accuracy/functions.h new file mode 100644 index 0000000..f83aaa0 --- /dev/null +++ b/tests/topography/accuracy/functions.h @@ -0,0 +1,71 @@ +#ifndef FUNCTIONS_H +#define FUNCTIONS_H + +#include "cuda.h" + +typedef void (*fcnp)(_prec *, + const int, const int, + const int, const int, + const int, const int, + const int, const int, + const _prec *); + +typedef _prec (*fcn_gridp)(const _prec, const _prec, const _prec, const _prec *); + +//FIXME: remove +//typedef struct +//{ +// int3_t size; +// int3_t inner_size; +// int3_t mem; +// int3_t coordinate; +// int3_t offset1; +// int3_t offset2; +// int3_t alignment; +// _prec gridspacing; +// int num_bytes; +// int line; +// int slice; +// int exclude_top_row; +//} fcn_grid_t; + + +void fcn_fill_grid(_prec *out, const fcn_grid_t grid, const int3_t shift, const int axis); + +void fcn_shift(_prec *out, _prec *in, const fcn_grid_t grid, const _prec shift); +void fcn_power(_prec *out, _prec *in, const fcn_grid_t grid, + const _prec exponent); +void fcn_normalize(_prec *out, _prec *in, const fcn_grid_t grid); +void fcn_difference(_prec *out, _prec *in1, _prec *in2, const fcn_grid_t grid); +void fcn_apply(_prec *out, fcn_gridp fcn, const _prec *x, const _prec *y, + const _prec *z, const _prec *properties, const fcn_grid_t grid); +void fcn_abs(_prec *out, _prec *in, const fcn_grid_t grid); + +void fcn_constant(_prec *out, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice, + const _prec *args); + +void fcn_poly(_prec *out, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice, + const _prec *args); + +void fcn_polynomial(_prec *out, const fcn_grid_t grid, const _prec *coef, + const _prec *deg, const int *shift, const int i0, + const int in, const int j0, const int jn, const int k0, + const int kn); + +void fcn_polybndz(_prec *out, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice, + const _prec *args); + + +#endif diff --git a/tests/topography/accuracy/grid_check.c b/tests/topography/accuracy/grid_check.c new file mode 100644 index 0000000..a362a2e --- /dev/null +++ b/tests/topography/accuracy/grid_check.c @@ -0,0 +1,161 @@ +#include +#include +#include +#include "grid_check.h" + +double check_fl1err(const _prec *u, const _prec *v, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice) +{ + double err = 0.0; + int num = 0; + for (int i = i0; i < in; ++i) { + for (int j = j0; j < jn; ++j) { + for (int k = k0; k < kn; ++k) { + int pos = k + j*line + i*slice; + err += fabs(u[pos] - v[pos]); + num++; + } + } + } + return err; + +} + +double check_fl2err(const _prec *u, const _prec *v, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice) +{ + double err = 0.0; + int num = 0; + for (int i = i0; i < in; ++i) { + for (int j = j0; j < jn; ++j) { + for (int k = k0; k < kn; ++k) { + int pos = k + j*line + i*slice; + err += pow(u[pos] - v[pos], 2); + num++; + } + } + } + return sqrt(err/num); + +} + +double check_flinferr(const _prec *u, const _prec *v, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice) +{ + double err = 0.0; + for (int i = i0; i < in; ++i) { + for (int j = j0; j < jn; ++j) { + for (int k = k0; k < kn; ++k) { + int pos = k + j*line + i*slice; + err = err > fabs(u[pos] - v[pos]) ? err : fabs(u[pos] - v[pos]); + } + } + } + return err; + +} + +int check_all(check_fun fp, + const _prec *field, const _prec *result, + const int *off_x, const int *off_y, const int *off_z, + const int nx, const int ny, + const int line, const int slice, + const _prec tol, + const int *regions, + _prec *regions_out + ) +{ + int err = 0; + double errs[25] = {0}; + + for (int i = 0; i < nx; ++i) { + for (int j = 0; j < ny; ++j) { + int pos = i + nx * j; + if (!regions[pos]) { + continue; + } + errs[pos] = + fp(field, result, off_x[i], off_x[i + 1], off_y[j], + off_y[j + 1], off_z[1], off_z[2], line, slice); + if (errs[pos] > tol) { + err = 1; + } + if(regions_out) regions_out[pos] = errs[pos]; + } + } + + return err; +} + +void check_printerr(const char *fcn, const int rank, const char *field_str, + const _prec *err) +{ + + char buf[512]; + fflush(stdout); + sprintf(buf, + "%s(%d) Errors for %s.\n" + "%e \t %e \t %e \n" + "%e \t %e \t %e \n" + "%e \t %e \t %e \n", + fcn, rank, field_str, + err[6], err[7], err[8], + err[3], err[4], err[5], + err[0], err[1], err[2] + ); + fprintf(stdout,"%s",buf); + fflush(stdout); +} + +void check_printerr53(const char *fcn, const int rank, const char *field_str, + const _prec *err) +{ + + char buf[512]; + fflush(stdout); + sprintf(buf, + "%s(%d) Errors for %s.\n" + "%e \t %e \t %e \t %e \t %e \n" + "%e \t %e \t %e \t %e \t %e \n" + "%e \t %e \t %e \t %e \t %e \n", + fcn, rank, field_str, + err[10], err[11], err[12], err[13], err[14], + err[5], err[6], err[7], err[8], err[9], + err[0], err[1], err[2], err[3], err[4] + ); + fprintf(stdout,"%s",buf); + fflush(stdout); +} + +void check_printerr55(const char *fcn, const int rank, const char *field_str, + const _prec *err) +{ + + char buf[512]; + fflush(stdout); + sprintf(buf, + "%s(%d) Errors for %s.\n" + "%e \t %e \t %e \t %e \t %e \n" + "%e \t %e \t %e \t %e \t %e \n" + "%e \t %e \t %e \t %e \t %e \n" + "%e \t %e \t %e \t %e \t %e \n" + "%e \t %e \t %e \t %e \t %e \n", + fcn, rank, field_str, + err[20], err[21], err[22], err[23], err[24], + err[15], err[16], err[17], err[18], err[19], + err[10], err[11], err[12], err[13], err[14], + err[5], err[6], err[7], err[8], err[9], + err[0], err[1], err[2], err[3], err[4] + ); + fprintf(stdout,"%s",buf); + fflush(stdout); +} diff --git a/tests/topography/accuracy/grid_check.h b/tests/topography/accuracy/grid_check.h new file mode 100644 index 0000000..0e115a4 --- /dev/null +++ b/tests/topography/accuracy/grid_check.h @@ -0,0 +1,91 @@ +#ifndef GRID_CHECK_H +#define GRID_CHECK_H +/* + * This module is used to compare two arrays that are allocated on the host that + * have a memory layout that matches the 2D grid decomposition of a grid. In + * map view, this layout can be represented by: + * + * back + * + * | 0 | 1 | 2 | + * | |---| | + * left | 3 | 4 | 5 | right + * | |---| | + * | 6 | 7 | 8 | + * + * front + * + * All sections except for section `4` are ghost regions. + * + * To use this module, first prepare two arrays that you want to compare. Then + * call any of the comparison functions to compute the error between the arrays + * and specify where you want the error to be computed. + * The comparison functions are: + * - check_fl1err : L1-error (sum of absolute value of all terms) + * - check_fl2err : L2-error + * - check_finferr : L-infinity-error (maximum absolute value) + * + * Where you want the error to be computed is specified by the offsets `off_x`, + * `off_y`, and `off_z`, one for each direction. Each offset contains two + * values: the starting index and the exclusive ending index. + * + * Use `check_all` to compute the error for each region in the above figure. If + * there is an error in a particular region, it will be flagged as `1`. The + * index of the error array maps to indices in the figure above. Pass + * `check_fl2err` as the `fcn` argument if you want to use this function for the + * comparison. + * + * The function `check_printerr` can be used to print a figure, like the one + * shown above, that shows what region contain errors and what the errors are. + * + * The function `check_printerr53` includes 2 additional regions in the + * x-direction. + * + * The function `check_printerr55` includes 2 additional regions in both the + * x and y-directions. + * + * + */ + +typedef double (*check_fun)(const _prec *, const _prec *, + const int, const int, + const int, const int, + const int, const int, + const int, const int); + +double check_fl1err(const _prec *u, const _prec *v, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice); + +double check_fl2err(const _prec *u, const _prec *v, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice); + +double check_flinferr(const _prec *u, const _prec *v, + const int i0, const int in, + const int j0, const int jn, + const int k0, const int kn, + const int line, const int slice); + +int check_all(check_fun fp, + const _prec *field, const _prec *result, + const int *off_x, const int *off_y, const int *off_z, + const int nx, const int ny, + const int line, const int slice, + const _prec tol, + const int *regions, + _prec *regions_out); + +void check_printerr(const char *fcn, const int rank, const char *field_str, + const _prec *err); +void check_printerr53(const char *fcn, const int rank, const char *field_str, + const _prec *err); +void check_printerr55(const char *fcn, const int rank, const char *field_str, + const _prec *err); + + +#endif diff --git a/tests/topography/accuracy/mms.c b/tests/topography/accuracy/mms.c new file mode 100644 index 0000000..6a5bbd4 --- /dev/null +++ b/tests/topography/accuracy/mms.c @@ -0,0 +1,109 @@ +#include "mms.h" +_prec mms_init_vx(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 1.2)/k; +} + +_prec mms_init_vy(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.25)/k; +} + +_prec mms_init_vz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.40000000000000002)/k; +} + +_prec mms_init_sxx(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.69999999999999996)/k; +} + +_prec mms_init_syy(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.29999999999999999)/k; +} + +_prec mms_init_szz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.12)/k; +} + +_prec mms_init_sxy(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.02)/k; +} + +_prec mms_init_sxz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.46999999999999997)/k; +} + +_prec mms_init_syz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*sin(k*z + 0.33000000000000002)/k; +} + +_prec mms_final_vx(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*cos(k*z + 0.46999999999999997) + sin(k*x)*sin(k*z + 0.02)*cos(k*y) + sin(k*y)*sin(k*z + 0.69999999999999996)*cos(k*x); +} + +_prec mms_final_vy(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*cos(k*z + 0.33000000000000002) + sin(k*x)*sin(k*z + 0.29999999999999999)*cos(k*y) + sin(k*y)*sin(k*z + 0.02)*cos(k*x); +} + +_prec mms_final_vz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*cos(k*z + 0.12) + sin(k*x)*sin(k*z + 0.33000000000000002)*cos(k*y) + sin(k*y)*sin(k*z + 0.46999999999999997)*cos(k*x); +} + +_prec mms_final_sxx(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*cos(k*z + 0.40000000000000002) + sin(k*x)*sin(k*z + 0.25)*cos(k*y) + 3*sin(k*y)*sin(k*z + 1.2)*cos(k*x); +} + +_prec mms_final_syy(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*cos(k*z + 0.40000000000000002) + 3*sin(k*x)*sin(k*z + 0.25)*cos(k*y) + sin(k*y)*sin(k*z + 1.2)*cos(k*x); +} + +_prec mms_final_szz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return 3*sin(k*x)*sin(k*y)*cos(k*z + 0.40000000000000002) + sin(k*x)*sin(k*z + 0.25)*cos(k*y) + sin(k*y)*sin(k*z + 1.2)*cos(k*x); +} + +_prec mms_final_sxy(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*z + 1.2)*cos(k*y) + sin(k*y)*sin(k*z + 0.25)*cos(k*x); +} + +_prec mms_final_sxz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*cos(k*z + 1.2) + sin(k*y)*sin(k*z + 0.40000000000000002)*cos(k*x); +} + +_prec mms_final_syz(const _prec x, const _prec y, const _prec z, const _prec *properties) +{ + _prec k = properties[0]; + return sin(k*x)*sin(k*y)*cos(k*z + 0.25) + sin(k*x)*sin(k*z + 0.40000000000000002)*cos(k*y); +} + diff --git a/tests/topography/accuracy/mms.h b/tests/topography/accuracy/mms.h new file mode 100644 index 0000000..2c8b40a --- /dev/null +++ b/tests/topography/accuracy/mms.h @@ -0,0 +1,27 @@ +#ifndef MMS_H +#define MMS_H +#include +#include +#include +#include + +_prec mms_init_vx(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_vy(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_vz(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_sxx(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_syy(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_szz(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_sxy(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_sxz(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_init_syz(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_vx(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_vy(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_vz(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_sxx(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_syy(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_szz(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_sxy(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_sxz(const _prec x, const _prec y, const _prec z, const _prec *properties); +_prec mms_final_syz(const _prec x, const _prec y, const _prec z, const _prec *properties); + +#endif diff --git a/tests/topography/accuracy/test_accuracy.cu b/tests/topography/accuracy/test_accuracy.cu new file mode 100644 index 0000000..e9e8848 --- /dev/null +++ b/tests/topography/accuracy/test_accuracy.cu @@ -0,0 +1,313 @@ +#include + +#include +#include +#include +#include +#include +#include +#include "cupolynomial.cu" +#include "cutopography_test.cu" +#include "grid_check.c" +#include "functions.c" +#include +using _prec=float; + +typedef struct +{ + _prec tol; + int verbose; + int deg[3]; + int coef[3]; + int num_bytes; + int size[3]; + int mem[3]; + int3_t shift; + _prec *output; + _prec *answer; + _prec *error; + fcn_grid_t velocity_grid; + fcn_grid_t interior_grid; + fcn_grid_t stress_grid; + fcn_grid_t topography_grid; + topo_t T; + int velocity_offset_x[2]; + int velocity_offset_y[2]; + int stress_offset_x[2]; + int stress_offset_y[2]; + int offset_z[2]; +} testdata_t; + +void copy_output_to_host(testdata_t *test, const _prec *input) +{ + cudaMemcpy(test->output, input, test->num_bytes, + cudaMemcpyDeviceToHost); +} + +void copy_answer_to_host(testdata_t *test, const _prec *input) +{ + cudaMemcpy(test->answer, input, test->num_bytes, + cudaMemcpyDeviceToHost); +} + +double check_answer(const testdata_t *test, const int *shift, const int *offset_x, + const int *offset_y, const int *offset_z) { + // Do not check the ghost point on the nodal grid + int skip = 0; + if (shift[2] == 0) { + skip = 1; + } + + double err = check_flinferr(test->output, test->answer, + offset_x[0], offset_x[1], + offset_y[0], offset_y[1], + offset_z[0], offset_z[1] - skip, + test->T.line, + test->T.slice); + return err; +} + +void test_free(testdata_t *test) +{ + topo_free(&test->T); + free(test->output); + free(test->answer); + cudaStreamDestroy(test->T.stream_1); + cudaStreamDestroy(test->T.stream_2); + cudaStreamDestroy(test->T.stream_i); + topo_d_free(&test->T); +} + +void write_vtk(const testdata_t *test) +{ + + _prec *x = (_prec*)malloc(test->topography_grid.num_bytes); + _prec *y = (_prec*)malloc(test->topography_grid.num_bytes); + _prec *z = (_prec*)malloc(test->topography_grid.num_bytes); + + fcn_fill_grid(x, test->topography_grid, test->shift, 0); + fcn_fill_grid(y, test->topography_grid, test->shift, 1); + fcn_fill_grid(z, test->topography_grid, test->shift, 2); + + fcn_grid_t grid = test->interior_grid; + const char *vtk_file = "output.vtk"; + vtk_write_grid(vtk_file, x, y, z, grid); + size_t count = vtk_append_scalar(vtk_file, "output", test->output, grid); + + const char *vtk_file2 = "answer.vtk"; + vtk_write_grid(vtk_file2, x, y, z, grid); + count = vtk_append_scalar(vtk_file2, "answer", test->answer, grid); + + const char *vtk_file3 = "error.vtk"; + fcn_difference(test->error, test->answer, test->output, grid); + fcn_abs(test->error, test->error, grid); + vtk_write_grid(vtk_file3, x, y, z, grid); + count = vtk_append_scalar(vtk_file3, "error", test->error, grid); + +} + +void test_initialize(testdata_t *test) +{ + int rank = 0; + int x_rank_l = -1; + int x_rank_r = -1; + int y_rank_f = -1; + int y_rank_b = -1; + int coord[2] = {0, 0}; + int size[3] = {132, 132, 32}; + cudaStream_t stream_1, stream_2, stream_i; + cudaStreamCreate(&stream_1); + cudaStreamCreate(&stream_2); + cudaStreamCreate(&stream_i); + test->tol = 1e-6; + _prec dt = 1.0; + _prec h = 1.0; + int px = 1; + int py = 1; + test->T = topo_init(1, "topography.bin", rank, x_rank_l, x_rank_r, y_rank_f, + y_rank_b, coord, px, py, size[0], size[1], size[2], dt, h, + stream_1, stream_2, stream_i); + test->size[0] = test->T.nx; + test->size[1] = test->T.ny; + test->size[2] = test->T.nz; + test->mem[0] = test->T.mx; + test->mem[1] = test->T.my; + test->mem[2] = test->T.mz; + topo_d_malloc(&test->T); + + topo_init_metrics(&test->T); + topo_init_grid(&test->T); + topo_init_geometry(&test->T); + topo_build(&test->T); + + test->velocity_offset_x[0] = test->T.off_x[1]; + test->velocity_offset_x[1] = test->T.off_x[2]; + test->velocity_offset_y[0] = test->T.off_y[1]; + test->velocity_offset_y[1] = test->T.off_y[2]; + test->stress_offset_x[0] = test->T.off_x[1] - ngsl/2; + test->stress_offset_x[1] = test->T.off_x[3] + ngsl/2; + test->stress_offset_y[0] = test->T.off_y[1] - ngsl/2; + test->stress_offset_y[1] = test->T.off_y[3] + ngsl/2; + test->offset_z[0] = test->T.off_z[1]; + test->offset_z[1] = test->T.off_z[2]; + + int num_bytes = sizeof(_prec)*test->T.gridsize; + test->num_bytes = num_bytes; + test->output = (prec*)malloc(num_bytes); + test->answer = (prec*)malloc(num_bytes); + test->error = (prec*)malloc(num_bytes); + + if (test->verbose) { + //metrics_print_info_f(&test->T.metrics_f); + printf("offset x: %d %d \n", test->velocity_offset_x[0], + test->velocity_offset_x[1]); + printf("offset y: %d %d \n", test->velocity_offset_y[0], + test->velocity_offset_y[1]); + printf("offset z: %d %d \n", test->offset_z[0], + test->offset_z[1]); + } + + int3_t sizet = {.x = test->size[0], + .y = test->size[1], + .z = test->size[2]}; + int3_t coordt = {0, 0, 0}; + int3_t shift = {0, 0, 1}; + + test->shift = shift; + test->velocity_grid = fcn_init_grid(sizet, coordt, shift, 0, h); + test->interior_grid = fcn_init_grid(sizet, coordt, shift, -ngsl/2, h); + test->stress_grid = fcn_init_grid(sizet, coordt, shift, ngsl/2, h); + test->topography_grid = fcn_init_grid(sizet, coordt, shift, ngsl, h); +} + +double test_velocity_kernel(testdata_t *test, _prec *input, const _prec *input_coef, + const _prec *input_deg, const int *input_shift, + _prec *output, _prec *answer, + const _prec *answer_coef, _prec *answer_deg, + const int *answer_shift) { + topo_test_polystrzbnd_H(&test->T, input, input_coef, input_deg, + input_shift); + topo_velocity_interior_H(&test->T); + topo_test_polystrzbnd_H(&test->T, answer, answer_coef, answer_deg, + answer_shift); + cudaDeviceSynchronize(); + + copy_output_to_host(test, output); + copy_answer_to_host(test, answer); + + int offset_x[2] = {test->velocity_offset_x[0], + test->velocity_offset_x[1]}; + int offset_y[2] = {test->velocity_offset_y[0], + test->velocity_offset_y[1]}; + int offset_z[2] = {test->offset_z[0]+8, test->offset_z[1]}; + + double err = check_answer(test, answer_shift, offset_x, offset_y, offset_z); + return err; + + +} + +void test_velocity_mod(testdata_t *test) +{ + printf("Testing velocity update kernel (kernels must be generated with debug=1, debug_ops=1... \n"); + printf(" * Testing u1 update equation. \n"); + { + printf(" -- Testing DczPx*s11. \n"); + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 1}; + int input_shift[3]; + shift_xx(input_shift); + + _prec answer_coef[3] = {0, 0, 1}; + _prec answer_deg[3] = {0, 0, 0}; + int answer_shift[3]; + shift_u1(answer_shift); + test_initialize(test); + double err = test_velocity_kernel( + test, test->T.xx, input_coef, input_deg, input_shift, test->T.u1, + test->T.yy, answer_coef, answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + { + printf(" -- Testing DczPy*s12. \n"); + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 1}; + int input_shift[3]; + shift_xy(input_shift); + + _prec answer_coef[3] = {0, 0, 1}; + _prec answer_deg[3] = {0, 0, 0}; + int answer_shift[3]; + shift_u1(answer_shift); + test_initialize(test); + double err = test_velocity_kernel(test, test->T.xy, input_coef, input_deg, + input_shift, test->T.u1, test->T.yy, answer_coef, + answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + + + + return; + + printf(" * Testing u2 update equation. \n"); + { + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 2}; + int input_shift[3]; + shift_xy(input_shift); + + _prec answer_coef[3] = {0, 0, 2}; + _prec answer_deg[3] = {0, 0, 1}; + int answer_shift[3]; + shift_u2(answer_shift); + test_initialize(test); + test_velocity_kernel(test, test->T.xy, input_coef, input_deg, + input_shift, test->T.v1, test->T.yy, answer_coef, + answer_deg, answer_shift); + + write_vtk(test); + test_free(test); + } + + printf(" * Testing u3 update equation. \n"); + { + printf(" -- Testing quadratic function in x-direction. \n"); + // Only linear functions can be used in the test because interpolation + // operators is only first order accurate near boundary + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 2}; + int input_shift[3]; + shift_xz(input_shift); + + _prec answer_coef[3] = {0, 0, 2}; + _prec answer_deg[3] = {0, 0, 1}; + int answer_shift[3]; + shift_u3(answer_shift); + test_initialize(test); + double err = test_velocity_kernel( + test, test->T.xz, input_coef, input_deg, input_shift, test->T.w1, + test->T.yy, answer_coef, answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } +} + +int main(int argc, char **argv) { + + + printf("Testing topography.c, cutopography.c, cutopography_kernels.cu\n"); + testdata_t test; + test.verbose = 1; + test_initialize(&test); + test_velocity_mod(&test); + return 0; +} diff --git a/tests/topography/accuracy/test_convergence.cu b/tests/topography/accuracy/test_convergence.cu new file mode 100644 index 0000000..60ab87c --- /dev/null +++ b/tests/topography/accuracy/test_convergence.cu @@ -0,0 +1,896 @@ +#include +#include +#include +#include +#include +#include + + +#define APPLY_BC 0 +#define ERROR_TOLERANCE 2.0 +#include +#include +#include +#include +#include +#include +#include "functions.c" +#include "grid_check.c" +#include "mms.c" + +using _prec=float; + +void geom_mapping_z(_prec *out, const fcn_grid_t grid, const int3_t shift, + const f_grid_t *metrics_f, + const g_grid_t *metrics_g) { + _prec *g; + if (shift.z == 0) { + g = metrics_g->g; + } + else { + g = metrics_g->g_c; + } + + int3_t nodes = grid_node(); + int3_t u1 = grid_u1(); + int3_t u2 = grid_u2(); + _prec *f; + if (shift.x == nodes.x && shift.y == nodes.y) { + f = metrics_f->f; + } + else if(shift.x == u1.x && shift.y == u1.y) { + f = metrics_f->f_1; + } + else if(shift.x == u2.x && shift.y == u2.y) { + f = metrics_f->f_2; + } + else { + f = metrics_f->f_c; + } + + int f_offset_x = metrics_f->offset[0] + metrics_f->bounds_stress_x[0]; + int f_offset_y = metrics_f->offset[1] + metrics_f->bounds_stress_y[0]; + + // Error: `grid` cannot be larger than the stress grid. + //assert(f_offset_x + grid.size.x <= metrics_f->mem[0]); + //assert(f_offset_y + grid.size.y <= metrics_f->mem[1]); + + for (int i = 0; i < grid.size.x; ++i) { + for (int j = 0; j < grid.size.y; ++j) { + for (int k = 0; k < grid.size.z; ++k) { + int pos = grid.offset1.z + k + + (grid.offset1.y + j) * grid.line + + (grid.offset1.x + i) * grid.slice; + int pos_g = k + metrics_g->offset; + int pos_f = f_offset_y + j + + (i + f_offset_x) * metrics_f->slice; + out[pos] = g[pos_g] * f[pos_f]; + } + } + } +} + + +typedef struct +{ + _prec *vx; + _prec *vy; + _prec *vz; + _prec *sxx; + _prec *syy; + _prec *szz; + _prec *sxy; + _prec *sxz; + _prec *syz; + _prec *rho; + _prec *lami; + _prec *mui; + _prec *qpi; + _prec *qsi; + _prec *r1; + _prec *r2; + _prec *r3; + _prec *r4; + _prec *r5; + _prec *r6; + _prec *wwo; + _prec *vx1, *vx2, *coeff; + int *ww; + int num_bytes; +} variables_t; + +typedef struct +{ + _prec tol; + _prec grid_spacing; + int write_vtk; + int verbose; + int num_bytes; + int3_t size; + int3_t coord3; + topo_t T; + variables_t input; + variables_t output; + variables_t answer; + _prec mms_wavenumber; +} testdata_t; + +typedef struct +{ + // parameter coordinates + _prec *x, *y, *z; + // physical coordinate + _prec *zp; +} grid_t; + +typedef struct +{ + _prec interior; + _prec boundary[TOP_BOUNDARY_SIZE]; +} err_t; + +typedef struct +{ + err_t vx; + err_t vy; + err_t vz; + err_t sxx; + err_t syy; + err_t szz; + err_t sxy; + err_t sxz; + err_t syz; +} vars_err_t; + + +int3_t refine(const int3_t initial_size, const int grid); +prec max_error(vars_err_t *err, const int num_refinements); +void convergence_rates(vars_err_t *rates, const vars_err_t *err, const _prec *h, + const int num_refinements); +_prec convergence_rate(const _prec err1, const _prec err2, const _prec h1, const _prec h2); +void test_initialize(testdata_t *test, const int grid, const char *topoography_dir); +void test_velocity(testdata_t *test, vars_err_t *err); +void test_stress(testdata_t *test, vars_err_t *err); +void test_free(testdata_t *test); +void vars_init(variables_t *vars, const int num_bytes); +void vars_copy_to_device(topo_t *topo, const variables_t *vars); +void vars_copy_to_host(variables_t *vars, const topo_t *topo); +void vars_free(variables_t *vars); +void test_grid_data_init(grid_t *data, const testdata_t *test, const fcn_grid_t grid, + const int3_t shift); +void test_grid_data_free(grid_t *data); +err_t check_answer(const _prec *u, const _prec *v, const fcn_grid_t grid); +void init_sponge(topo_t *topo, const int num_bytes); + + +int main(int argc, char **argv) +{ + int num_refinements = 4; + + testdata_t test; + int3_t initial_size = {16, 16, 16}; + + vars_err_t err[num_refinements]; + int grid_sizes[num_refinements]; + _prec grid_spacings[num_refinements]; + + const char *topography_dir = argv[1]; + + printf("Convergence rate test\n"); + printf("-----------------------------------------------------\n"); + for (int grid = 0; grid < num_refinements; ++grid) { + test.size = refine(initial_size, grid); + grid_sizes[grid] = test.size.x; + test_initialize(&test, grid, topography_dir); + grid_spacings[grid] = test.grid_spacing; + printf("Grid refinement: %d grid size: {%d, %d, %d} \n", + grid, test.size.x, test.size.y, test.size.z); + test_velocity(&test, &err[grid]); + printf("Testing stresses\n"); + test_free(&test); + test_initialize(&test, grid, topography_dir); + test_stress(&test, &err[grid]); + test_free(&test); + } + printf("-----------------------------------------------------\n"); + + vars_err_t rates[num_refinements - 1]; + for (int i = 0; i < num_refinements - 1; ++i) { + convergence_rates(rates, err, grid_spacings, num_refinements); + } + + const int show_velocity = 1; + const int show_stress = 1; + + + if (show_velocity) { + printf("Interior truncation errors\n"); + printf("N \t vx \t vy \t vz \n"); + for (int i = 0; i < num_refinements; ++i) { + printf("%d \t %e \t %e \t %e \n", grid_sizes[i], + err[i].vx.interior, err[i].vy.interior, + err[i].vz.interior); + } + + + printf("Interior error rates\n"); + printf("N \t vx \t vy \t vz \n"); + for (int i = 0; i < num_refinements - 1; ++i) { + printf("%d \t %e \t %e \t %e \n", grid_sizes[i+1], + rates[i].vx.interior, rates[i].vy.interior, + rates[i].vz.interior); + } + printf("\n"); + printf("\n"); + printf("Boundary truncation errors\n"); + printf("N \t z \t vx \t vy \t vz \n"); + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + for (int i = 0; i < num_refinements; ++i) { + printf("%d \t %d \t %e \t %e \t %e \n", grid_sizes[i], j , + err[i].vx.boundary[j], err[i].vy.boundary[j], + err[i].vz.boundary[j]); + } + printf("\n"); + } + + + printf("\n"); + printf("Boundary error rates\n"); + printf("N \t z \t vx \t vy \t vz \n"); + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + for (int i = 0; i < num_refinements - 1; ++i) { + printf("%d \t %d \t %e \t %e \t %e \n", grid_sizes[i+1], j, + rates[i].vx.boundary[j], rates[i].vy.boundary[j], + rates[i].vz.boundary[j]); + } + printf("\n"); + } + + + } + + if (show_stress) { + printf("Interior truncation error\n"); + printf("N \t sxx \t syy \t szz \n"); + for (int i = 0; i < num_refinements; ++i) { + printf("%d \t %e \t %e \t %e \n", grid_sizes[i], + err[i].sxx.interior, err[i].syy.interior, + err[i].szz.interior); + } + + printf("N \t sxy \t sxz \t syz \n"); + for (int i = 0; i < num_refinements; ++i) { + printf("%d \t %e \t %e \t %e \n", grid_sizes[i], + err[i].sxy.interior, err[i].sxz.interior, + err[i].syz.interior); + } + printf("\n"); + printf("\n"); + + printf("Interior error rates\n"); + + + printf("N \t sxx \t syy \t szz \n"); + for (int i = 0; i < num_refinements - 1; ++i) { + printf("%d \t %e \t %e \t %e \n", grid_sizes[i+1], + rates[i].sxx.interior, rates[i].syy.interior, + rates[i].szz.interior); + } + + printf("N \t sxy \t sxz \t syz \n"); + for (int i = 0; i < num_refinements - 1; ++i) { + printf("%d \t %e \t %e \t %e \n", grid_sizes[i+1], + rates[i].sxy.interior, rates[i].sxz.interior, + rates[i].syz.interior); + } + + printf("\n"); + printf("\n"); + + printf("Boundary truncation errors\n"); + + printf("N \t z \t sxx \t syy \t szz \n"); + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + for (int i = 0; i < num_refinements; ++i) { + printf("%d \t %d \t %e \t %e \t %e \n", grid_sizes[i], j, + err[i].sxx.boundary[j], err[i].syy.boundary[j], + err[i].szz.boundary[j]); + } + printf("\n"); + } + + printf("N \t sxy \t sxz \t syz \n"); + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + for (int i = 0; i < num_refinements; ++i) { + printf("%d \t %e \t %e \t %e \n", grid_sizes[i], + err[i].sxy.boundary[j], err[i].sxz.boundary[j], + err[i].syz.boundary[j]); + } + printf("\n"); + } + + printf("Boundary error rates\n"); + + + printf("N \t z \t sxx \t syy \t szz \n"); + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + for (int i = 0; i < num_refinements - 1; ++i) { + printf("%d \t %d \t %e \t %e \t %e \n", grid_sizes[i+1], j, + rates[i].sxx.boundary[j], rates[i].syy.boundary[j], + rates[i].szz.boundary[j]); + } + printf("\n"); + } + + printf("N \t z \t sxy \t sxz \t syz \n"); + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + for (int i = 0; i < num_refinements - 1; ++i) { + printf("%d \t %d \t %e \t %e \t %e \n", grid_sizes[i+1], j, + rates[i].sxy.boundary[j], rates[i].sxz.boundary[j], + rates[i].syz.boundary[j]); + } + printf("\n"); + } + + + } + + + + return !(max_error(err, num_refinements) < ERROR_TOLERANCE); +} + +int3_t refine(const int3_t initial_size, const int grid) +{ + int3_t out; + out.x = initial_size.x*pow(2, grid); + out.y = initial_size.y*pow(2, grid); + out.z = initial_size.z*pow(2, grid); + return out; +} + +void convergence_rates(vars_err_t *rates, const vars_err_t *err, const _prec *h, + const int num_refinements) { + for (int i = 0; i < num_refinements - 1; ++i) { + rates[i].vx.interior = convergence_rate( + err[i].vx.interior, err[i + 1].vx.interior, h[i], h[i + 1]); + rates[i].vy.interior = convergence_rate( + err[i].vy.interior, err[i + 1].vy.interior, h[i], h[i + 1]); + rates[i].vz.interior = convergence_rate( + err[i].vz.interior, err[i + 1].vz.interior, h[i], h[i + 1]); + rates[i].sxx.interior = + convergence_rate(err[i].sxx.interior, + err[i + 1].sxx.interior, h[i], h[i + 1]); + rates[i].syy.interior = + convergence_rate(err[i].syy.interior, + err[i + 1].syy.interior, h[i], h[i + 1]); + rates[i].szz.interior = + convergence_rate(err[i].szz.interior, + err[i + 1].szz.interior, h[i], h[i + 1]); + rates[i].sxy.interior = + convergence_rate(err[i].sxy.interior, + err[i + 1].sxy.interior, h[i], h[i + 1]); + rates[i].sxz.interior = + convergence_rate(err[i].sxz.interior, + err[i + 1].sxz.interior, h[i], h[i + 1]); + rates[i].syz.interior = + convergence_rate(err[i].syz.interior, + err[i + 1].syz.interior, h[i], h[i + 1]); + + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + rates[i].vx.boundary[j] = convergence_rate( + err[i].vx.boundary[j], err[i + 1].vx.boundary[j], h[i], h[i + 1]); + rates[i].vy.boundary[j] = convergence_rate( + err[i].vy.boundary[j], err[i + 1].vy.boundary[j], h[i], h[i + 1]); + rates[i].vz.boundary[j] = convergence_rate( + err[i].vz.boundary[j], err[i + 1].vz.boundary[j], h[i], h[i + 1]); + rates[i].sxx.boundary[j] = + convergence_rate(err[i].sxx.boundary[j], + err[i + 1].sxx.boundary[j], h[i], h[i + 1]); + rates[i].syy.boundary[j] = + convergence_rate(err[i].syy.boundary[j], + err[i + 1].syy.boundary[j], h[i], h[i + 1]); + rates[i].szz.boundary[j] = + convergence_rate(err[i].szz.boundary[j], + err[i + 1].szz.boundary[j], h[i], h[i + 1]); + rates[i].sxy.boundary[j] = + convergence_rate(err[i].sxy.boundary[j], + err[i + 1].sxy.boundary[j], h[i], h[i + 1]); + rates[i].sxz.boundary[j] = + convergence_rate(err[i].sxz.boundary[j], + err[i + 1].sxz.boundary[j], h[i], h[i + 1]); + rates[i].syz.boundary[j] = + convergence_rate(err[i].syz.boundary[j], + err[i + 1].syz.boundary[j], h[i], h[i + 1]); + } + } +} + + +prec max_error(vars_err_t *err, const int num_refinements) { + + double err_max = 0.0; + for (int i = 0; i < num_refinements - 1; ++i) { + for (int j = 0; j < TOP_BOUNDARY_SIZE; ++j) { + err_max = max(err_max, err[i].vx.boundary[j]); + err_max = max(err_max, err[i].vy.boundary[j]); + err_max = max(err_max, err[i].vz.boundary[j]); + err_max = max(err_max, err[i].sxx.boundary[j]); + err_max = max(err_max, err[i].syy.boundary[j]); + err_max = max(err_max, err[i].szz.boundary[j]); + err_max = max(err_max, err[i].sxy.boundary[j]); + err_max = max(err_max, err[i].sxz.boundary[j]); + err_max = max(err_max, err[i].syz.boundary[j]); + } + } + return err_max; + +} + +_prec convergence_rate(const _prec err1, const _prec err2, const _prec h1, + const _prec h2) { + return log(err1/err2)/log(h1/h2); +} + +void test_initialize(testdata_t *test, const int grid, const char *topography_dir) +{ + int rank = 0; + int x_rank_l = -1; + int x_rank_r = -1; + int y_rank_f = -1; + int y_rank_b = -1; + int coord[2] = {0, 0}; + int px = 1; + int py = 1; + cudaStream_t stream_1, stream_2, stream_i; + cudaStreamCreate(&stream_1); + cudaStreamCreate(&stream_2); + cudaStreamCreate(&stream_i); + test->tol = 1e-6; + _prec dt = 1.0; + _prec h = 1.0/(test->size.x - 1); + printf("Test size: %d %d %d \n", test->size.x, test->size.y, test->size.z); + char gridname[2048]; + sprintf(gridname, "%s/topography_%d.bin", topography_dir, grid); + test->T = topo_init(1, gridname, rank, x_rank_l, x_rank_r, y_rank_f, + y_rank_b, coord, px, py, test->size.x, test->size.y, + test->size.z, dt, h, stream_1, stream_2, stream_i); + test->T.timestep = 0; + topo_d_malloc(&test->T); + test->coord3.x = coord[0]; + test->coord3.y = coord[1]; + test->grid_spacing = h; + test->write_vtk = 0; + test->mms_wavenumber = 2 * M_PI * 4; + + _prec amplitude = 0.0; + _prec3_t width = {.x = 0.1, .y = 0.1, .z = 0}; + _prec3_t center = {.x = 0.5, .y = 0.5, .z = 0}; + + topo_init_metrics(&test->T); + topo_init_geometry(&test->T); + topo_build(&test->T); + topo_set_constants(&test->T); + + int num_items = test->T.mx*test->T.my*test->T.mz; + vars_init(&test->input, num_items); + vars_init(&test->output,num_items); + vars_init(&test->answer,num_items); + + init_sponge(&test->T, sizeof(_prec)*num_items); +} + +void test_velocity(testdata_t *test, vars_err_t *err) +{ + + int3_t shift = {0, 0, 0}; + fcn_grid_t velocity_grid = fcn_init_grid( + test->size, shift, test->coord3, 0, test->grid_spacing); + fcn_grid_t stress_grid = fcn_init_grid(test->size, shift, test->coord3, + ngsl / 2, test->grid_spacing); + grid_t gvx; + grid_t gvy; + grid_t gvz; + grid_t gsxx; + grid_t gsyy; + grid_t gszz; + grid_t gsxy; + grid_t gsxz; + grid_t gsyz; + test_grid_data_init(&gvx, test, stress_grid, grid_u1()); + test_grid_data_init(&gvy, test, stress_grid, grid_u2()); + test_grid_data_init(&gvz, test, stress_grid, grid_u3()); + test_grid_data_init(&gsxx, test, stress_grid, grid_xx()); + test_grid_data_init(&gsyy, test, stress_grid, grid_yy()); + test_grid_data_init(&gszz, test, stress_grid, grid_zz()); + test_grid_data_init(&gsxy, test, stress_grid, grid_xy()); + test_grid_data_init(&gsxz, test, stress_grid, grid_xz()); + test_grid_data_init(&gsyz, test, stress_grid, grid_yz()); + + + // Input + _prec properties[2] = {test->mms_wavenumber, 0}; + fcn_apply(test->input.sxx, mms_init_sxx, gsxx.x, gsxx.y, gsxx.zp, + properties, stress_grid); + fcn_apply(test->input.syy, mms_init_syy, gsyy.x, gsyy.y, gsyy.zp, + properties, stress_grid); + fcn_apply(test->input.szz, mms_init_szz, gszz.x, gszz.y, gszz.zp, + properties, stress_grid); + fcn_apply(test->input.sxy, mms_init_sxy, gsxy.x, gsxy.y, gsxy.zp, + properties, stress_grid); + fcn_apply(test->input.sxz, mms_init_sxz, gsxz.x, gsxz.y, gsxz.zp, + properties, stress_grid); + fcn_apply(test->input.syz, mms_init_syz, gsyz.x, gsyz.y, gsyz.zp, + properties, stress_grid); + + vars_copy_to_device(&test->T, &test->input); + + topo_velocity_interior_H(&test->T); + + // Output + vars_copy_to_host(&test->output, &test->T); + + //Check answer + fcn_apply(test->answer.vx, mms_final_vx, gvx.x, gvx.y, gvx.zp, + properties, velocity_grid); + fcn_apply(test->answer.vy, mms_final_vy, gvy.x, gvy.y, gvy.zp, + properties, velocity_grid); + fcn_apply(test->answer.vz, mms_final_vz, gvz.x, gvz.y, gvz.zp, + properties, velocity_grid); + + + err_t tmp = check_answer(test->output.vx, test->answer.vx, velocity_grid); + err->vx = tmp; + + tmp = check_answer(test->output.vy, test->answer.vy, velocity_grid); + err->vy = tmp; + + tmp = check_answer(test->output.vz, test->answer.vz, velocity_grid); + err->vz = tmp; + // Exclude solution at ghost point + err->vz.boundary[TOP_BOUNDARY_SIZE-1] = 0.0; + + char vtk_file[128]; + if (test->write_vtk) { + sprintf(vtk_file, "input_sxx.vtk"); + vtk_write_grid(vtk_file, gsxx.x, gsxx.y, gsxx.zp, + velocity_grid); + vtk_append_scalar(vtk_file, "z", test->input.sxx, + velocity_grid); + + sprintf(vtk_file, "output_vx.vtk"); + vtk_write_grid(vtk_file, gvx.x, gvx.y, gvx.zp, velocity_grid); + vtk_append_scalar(vtk_file, "z", test->output.vx, + velocity_grid); + + sprintf(vtk_file, "answer_vx.vtk"); + vtk_write_grid(vtk_file, gvx.x, gvx.y, gvx.zp, velocity_grid); + vtk_append_scalar(vtk_file, "z", test->answer.vx, + velocity_grid); + } +} + +void test_stress(testdata_t *test, vars_err_t *err) +{ + + int3_t shift = {0, 0, 0}; + fcn_grid_t velocity_grid = fcn_init_grid( + test->size, shift, test->coord3, 0, test->grid_spacing); + fcn_grid_t stress_grid = fcn_init_grid(test->size, shift, test->coord3, + ngsl / 2, test->grid_spacing); + grid_t gvx; + grid_t gvy; + grid_t gvz; + grid_t gsxx; + grid_t gsyy; + grid_t gszz; + grid_t gsxy; + grid_t gsxz; + grid_t gsyz; + test_grid_data_init(&gvx, test, stress_grid, grid_u1()); + test_grid_data_init(&gvy, test, stress_grid, grid_u2()); + test_grid_data_init(&gvz, test, stress_grid, grid_u3()); + test_grid_data_init(&gsxx, test, stress_grid, grid_xx()); + test_grid_data_init(&gsyy, test, stress_grid, grid_yy()); + test_grid_data_init(&gszz, test, stress_grid, grid_zz()); + test_grid_data_init(&gsxy, test, stress_grid, grid_xy()); + test_grid_data_init(&gsxz, test, stress_grid, grid_xz()); + test_grid_data_init(&gsyz, test, stress_grid, grid_yz()); + + // Input + _prec properties[2] = {test->mms_wavenumber, 0}; + fcn_apply(test->input.vx, mms_init_vx, gvx.x, gvx.y, gvx.zp, + properties, stress_grid); + fcn_apply(test->input.vy, mms_init_vy, gvy.x, gvy.y, gvy.zp, + properties, stress_grid); + fcn_apply(test->input.vz, mms_init_vz, gvz.x, gvz.y, gvz.zp, + properties, stress_grid); + + vars_copy_to_device(&test->T, &test->input); + + topo_stress_interior_H(&test->T); + + // Output + vars_copy_to_host(&test->output, &test->T); + + // Answer + fcn_apply(test->answer.sxx, mms_final_sxx, gsxx.x, gsxx.y, gsxx.zp, + properties, velocity_grid); + fcn_apply(test->answer.syy, mms_final_syy, gsyy.x, gsyy.y, gsyy.zp, + properties, velocity_grid); + fcn_apply(test->answer.szz, mms_final_szz, gszz.x, gszz.y, gszz.zp, + properties, velocity_grid); + fcn_apply(test->answer.sxy, mms_final_sxy, gsxy.x, gsxy.y, gsxy.zp, + properties, velocity_grid); + fcn_apply(test->answer.sxz, mms_final_sxz, gsxz.x, gsxz.y, gsxz.zp, + properties, velocity_grid); + fcn_apply(test->answer.syz, mms_final_syz, gsyz.x, gsyz.y, gsyz.zp, + properties, velocity_grid); + + + // Exclude solution at ghost point + err->vz.boundary[TOP_BOUNDARY_SIZE-1] = 0.0; + err_t tmp; + tmp = check_answer(test->output.sxx, test->answer.sxx, velocity_grid); + err->sxx = tmp; + tmp = check_answer(test->output.syy, test->answer.syy, velocity_grid); + err->syy = tmp; + tmp = check_answer(test->output.szz, test->answer.szz, velocity_grid); + err->szz = tmp; + tmp = check_answer(test->output.sxy, test->answer.sxy, velocity_grid); + err->sxy = tmp; + tmp = check_answer(test->output.sxz, test->answer.sxz, velocity_grid); + err->sxz = tmp; + tmp = check_answer(test->output.syz, test->answer.syz, velocity_grid); + err->syz = tmp; + + // Exclude solution at ghost point + err->sxz.boundary[TOP_BOUNDARY_SIZE-1] = 0.0; + err->syz.boundary[TOP_BOUNDARY_SIZE-1] = 0.0; +} + +void test_free(testdata_t *test) +{ + topo_free(&test->T); + cudaStreamDestroy(test->T.stream_1); + cudaStreamDestroy(test->T.stream_2); + cudaStreamDestroy(test->T.stream_i); + vars_free(&test->input); + vars_free(&test->output); + vars_free(&test->answer); +} + +void vars_init(variables_t *vars, const int num_items) +{ + int item_size = sizeof(_prec); + vars->vx = (_prec*)calloc(num_items, item_size); + vars->vy = (_prec*)calloc(num_items, item_size); + vars->vz = (_prec*)calloc(num_items, item_size); + vars->sxx =(_prec*) calloc(num_items, item_size); + vars->syy =(_prec*) calloc(num_items, item_size); + vars->szz =(_prec*) calloc(num_items, item_size); + vars->sxy =(_prec*) calloc(num_items, item_size); + vars->sxz =(_prec*) calloc(num_items, item_size); + vars->syz =(_prec*) calloc(num_items, item_size); + vars->rho =(_prec*) calloc(num_items, item_size); + vars->lami =(_prec*) calloc(num_items, item_size); + vars->mui =(_prec*) calloc(num_items, item_size); + vars->qpi =(_prec*) calloc(num_items, item_size); + vars->qsi =(_prec*) calloc(num_items, item_size); + vars->r1 =(_prec*) calloc(num_items, item_size); + vars->r2 =(_prec*) calloc(num_items, item_size); + vars->r3 =(_prec*) calloc(num_items, item_size); + vars->r4 =(_prec*) calloc(num_items, item_size); + vars->r5 =(_prec*) calloc(num_items, item_size); + vars->r6 =(_prec*) calloc(num_items, item_size); + vars->wwo =(_prec*) calloc(num_items, item_size); + vars->vx1 =(_prec*) calloc(num_items, item_size); + vars->vx2 =(_prec*) calloc(num_items, item_size); + vars->coeff =(_prec*) calloc(num_items, item_size); + vars->ww =(int*) calloc(num_items, item_size); + vars->num_bytes = num_items*item_size; + for (int i = 0; i < num_items; ++i) { + vars->rho[i] = 1.0; + vars->lami[i] = 1.0; + vars->mui[i] = 1.0; + vars->ww[i] = 1; + vars->wwo[i] = 1.0; + + } +} + +void vars_copy_to_device(topo_t *topo, const variables_t *vars) +{ + cudaMemcpy(topo->u1, vars->vx, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->v1, vars->vy, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->w1, vars->vz, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->xx, vars->sxx, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->yy, vars->syy, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->zz, vars->szz, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->xy, vars->sxy, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->xz, vars->sxz, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->yz, vars->syz, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->rho, vars->rho, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->lami, vars->lami, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->mui, vars->mui, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->qpi, vars->qpi, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->qsi, vars->qsi, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->r1, vars->r1, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->r2, vars->r2, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->r3, vars->r3, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->r4, vars->r4, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->r5, vars->r5, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->r6, vars->r6, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->wwo, vars->wwo, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->vx1, vars->vx1, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->vx2, vars->vx2, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->coeff, vars->coeff, vars->num_bytes, + cudaMemcpyHostToDevice); + cudaMemcpy(topo->ww, vars->ww, vars->num_bytes, + cudaMemcpyHostToDevice); +} + +void vars_copy_to_host(variables_t *vars, const topo_t *topo) +{ + cudaMemcpy(vars->vx, topo->u1, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->vy, topo->v1, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->vz, topo->w1, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->sxx, topo->xx, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->syy, topo->yy, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->szz, topo->zz, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->sxy, topo->xy, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->sxz, topo->xz, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->syz, topo->yz, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->rho, topo->rho, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->lami, topo->lami, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->mui, topo->mui, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->qpi, topo->qpi, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->qsi, topo->qsi, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->r1, topo->r1, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->r2, topo->r2, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->r3, topo->r3, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->r4, topo->r4, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->r5, topo->r5, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->r6, topo->r6, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->wwo, topo->wwo, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->vx1, topo->vx1, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->vx2, topo->vx2, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->coeff, topo->coeff, vars->num_bytes, + cudaMemcpyDeviceToHost); + cudaMemcpy(vars->ww, topo->ww, vars->num_bytes, + cudaMemcpyDeviceToHost); +} +void vars_free(variables_t *vars) +{ + free(vars->vx); + free(vars->vy); + free(vars->vz); + free(vars->sxx); + free(vars->syy); + free(vars->szz); + free(vars->sxy); + free(vars->sxz); + free(vars->syz); + free(vars->rho); + free(vars->lami); + free(vars->mui); + free(vars->qpi); + free(vars->qsi); + free(vars->r1); + free(vars->r2); + free(vars->r3); + free(vars->r4); + free(vars->r5); + free(vars->r6); +} + +void test_grid_data_init(grid_t *data, const testdata_t *test, const fcn_grid_t grid, + const int3_t shift) { + data->x = (_prec*)malloc(grid.num_bytes); + data->y = (_prec*)malloc(grid.num_bytes); + data->z = (_prec*)malloc(grid.num_bytes); + data->zp =(_prec*) malloc(grid.num_bytes); + + fcn_fill_grid(data->x, grid, shift, 0); + fcn_fill_grid(data->y, grid, shift, 1); + fcn_fill_grid(data->z, grid, shift, 2); + + fcn_shift(data->x, data->x, grid, -ngsl*grid.gridspacing); + fcn_shift(data->y, data->y, grid, -ngsl*grid.gridspacing); + + geom_mapping_z(data->zp, grid, shift, &test->T.metrics_f, + &test->T.metrics_g); +} + +void test_grid_data_free(grid_t *data) +{ + free(data->x); + free(data->y); + free(data->z); + free(data->zp); +} + +err_t check_answer(const _prec *u, const _prec *v, const fcn_grid_t grid) +{ + // Maximum truncation error at the boundary points + const int nb = TOP_BOUNDARY_SIZE; + err_t out; + for (int i = 0; i < nb; ++i) { + out.boundary[i] = check_flinferr(u, v, + grid.offset1.x + nb, grid.offset2.x - nb, + grid.offset1.y + nb, grid.offset2.y - nb, + grid.offset2.z - nb + i, grid.offset2.z - nb + i + 1, + grid.line, + grid.slice); + } + + // Maximum truncation error in the interior of the domain + out.interior = check_flinferr(u, v, + grid.offset1.x + nb, grid.offset2.x - nb, + grid.offset1.y + nb, grid.offset2.y - nb, + grid.offset1.z + nb, + grid.offset2.z - nb - grid.exclude_top_row, + grid.line, + grid.slice); + return out; +} + +void init_sponge(topo_t *topo, const int num_bytes) +{ + _prec *ones = (_prec*)malloc(num_bytes); + for (size_t i = 0; i < num_bytes/(sizeof(_prec)); ++i) { + ones[i] = 1.0; + } + + cudaMemcpy(topo->dcrjx, ones, num_bytes, cudaMemcpyHostToDevice); + cudaMemcpy(topo->dcrjy, ones, num_bytes, cudaMemcpyHostToDevice); + cudaMemcpy(topo->dcrjz, ones, num_bytes, cudaMemcpyHostToDevice); + free(ones); +} + diff --git a/tests/topography/accuracy/test_topography_kernels.c b/tests/topography/accuracy/test_topography_kernels.c new file mode 100644 index 0000000..6523494 --- /dev/null +++ b/tests/topography/accuracy/test_topography_kernels.c @@ -0,0 +1,490 @@ +#include +#include +#include +#include +#include +#include + +#include "topography.h" +#include "cutopography.cuh" +#include "cutopography_test.cuh" +#include "cutopography_test.cuh" +#include "check.h" +#include "grid_check.h" +#include "vtk.h" +#include "functions.h" +#include "metrics.h" +#include "geometry.h" +#include "shift.h" + +typedef struct +{ + _prec tol; + int verbose; + int deg[3]; + int coef[3]; + int num_bytes; + int size[3]; + int mem[3]; + int3_t shift; + _prec *output; + _prec *answer; + _prec *error; + fcn_grid_t velocity_grid; + fcn_grid_t interior_grid; + fcn_grid_t stress_grid; + fcn_grid_t topography_grid; + topo_t T; + int velocity_offset_x[2]; + int velocity_offset_y[2]; + int stress_offset_x[2]; + int stress_offset_y[2]; + int offset_z[2]; +} testdata_t; + +void test_initialize(testdata_t *test); +void test_velocity(testdata_t *test); +void test_velocity_mod(testdata_t *test); +void test_stress(testdata_t *test); +void test_free(testdata_t *test); +double test_velocity_kernel(testdata_t *test, _prec *input, const _prec *input_coef, + const _prec *input_deg, const int *input_shift, + _prec *output, _prec *answer, const _prec *answer_coef, + _prec *answer_deg, const int *answer_shift); +double test_stress_kernel(testdata_t *test, _prec *input, const _prec *input_coef, + const _prec *input_deg, const int *input_shift, + _prec *output, _prec *answer, const _prec *answer_coef, + _prec *answer_deg, const int *answer_shift); +void copy_output_to_host(testdata_t *test, const _prec *input); +void copy_answer_to_host(testdata_t *test, const _prec *input); +double check_answer(const testdata_t *test, const int *shift, const int *offset_x, + const int *offset_y, const int *offset_z); +void write_vtk(const testdata_t *test); + +int main(int argc, char **argv) +{ + printf("Testing topography.c, cutopography.c, cutopography_kernels.cu\n"); + testdata_t test; + test.verbose = 0; + //test_velocity(&test); + test_velocity_mod(&test); + test_stress(&test); +} + +void test_initialize(testdata_t *test) +{ + int rank = 0; + int x_rank_l = -1; + int x_rank_r = -1; + int y_rank_f = -1; + int y_rank_b = -1; + int coord[2] = {0, 0}; + int size[3] = {132, 132, 32}; + cudaStream_t stream_1, stream_2, stream_i; + cudaStreamCreate(&stream_1); + cudaStreamCreate(&stream_2); + cudaStreamCreate(&stream_i); + test->tol = 1e-6; + _prec dt = 1.0; + _prec h = 1.0; + test->T = topo_init(1, "topo", rank, x_rank_l, x_rank_r, y_rank_f, + y_rank_b, coord, size[0], size[1], size[2], dt, h, + stream_1, stream_2, stream_i); + test->size[0] = test->T.nx; + test->size[1] = test->T.ny; + test->size[2] = test->T.nz; + test->mem[0] = test->T.mx; + test->mem[1] = test->T.my; + test->mem[2] = test->T.mz; + topo_d_malloc(&test->T); + + topo_init_metrics(&test->T); + topo_init_grid(&test->T); + topo_build(&test->T); + + test->velocity_offset_x[0] = test->T.off_x[1]; + test->velocity_offset_x[1] = test->T.off_x[2]; + test->velocity_offset_y[0] = test->T.off_y[1]; + test->velocity_offset_y[1] = test->T.off_y[2]; + test->stress_offset_x[0] = test->T.off_x[1] - ngsl/2; + test->stress_offset_x[1] = test->T.off_x[3] + ngsl/2; + test->stress_offset_y[0] = test->T.off_y[1] - ngsl/2; + test->stress_offset_y[1] = test->T.off_y[3] + ngsl/2; + test->offset_z[0] = test->T.off_z[1]; + test->offset_z[1] = test->T.off_z[2]; + + int num_bytes = sizeof(_prec)*test->T.gridsize; + test->num_bytes = num_bytes; + test->output = malloc(num_bytes); + test->answer = malloc(num_bytes); + test->error = malloc(num_bytes); + + if (test->verbose) { + metrics_print_info_f(&test->T.metrics_f); + printf("offset x: %d %d \n", test->velocity_offset_x[0], + test->velocity_offset_x[1]); + printf("offset y: %d %d \n", test->velocity_offset_y[0], + test->velocity_offset_y[1]); + printf("offset z: %d %d \n", test->offset_z[0], + test->offset_z[1]); + } + + int3_t sizet = {.x = test->size[0], + .y = test->size[1], + .z = test->size[2]}; + int3_t coordt = {0, 0, 0}; + int3_t shift = {0, 0, 1}; + + test->shift = shift; + test->velocity_grid = fcn_init_grid(sizet, coordt, shift, 0, h); + test->interior_grid = fcn_init_grid(sizet, coordt, shift, -ngsl/2, h); + test->stress_grid = fcn_init_grid(sizet, coordt, shift, ngsl/2, h); + test->topography_grid = fcn_init_grid(sizet, coordt, shift, ngsl, h); +} + +void test_velocity(testdata_t *test) +{ + printf("Testing velocity update kernel... \n"); + printf(" * Testing u1 update equation. \n"); + { + printf(" -- Testing quadratic function in x-direction. \n"); + _prec input_coef[3] = {1, 0, 0}; + _prec input_deg[3] = {2, 0, 0}; + int input_shift[3]; + shift_xx(input_shift); + + _prec answer_coef[3] = {2, 0, 0}; + _prec answer_deg[3] = {1, 0, 0}; + int answer_shift[3]; + shift_u1(answer_shift); + test_initialize(test); + test_velocity_kernel(test, test->T.xx, input_coef, input_deg, + input_shift, test->T.u1, test->T.yy, answer_coef, + answer_deg, answer_shift); + test_free(test); + } +} + +void test_velocity_mod(testdata_t *test) +{ + printf("Testing velocity update kernel (kernels must be generated with debug=1, debug_ops=1... \n"); + printf(" * Testing u1 update equation. \n"); + { + printf(" -- Testing DczPx*s11. \n"); + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 1}; + int input_shift[3]; + shift_xx(input_shift); + + _prec answer_coef[3] = {0, 0, 1}; + _prec answer_deg[3] = {0, 0, 0}; + int answer_shift[3]; + shift_u1(answer_shift); + test_initialize(test); + double err = test_velocity_kernel( + test, test->T.xx, input_coef, input_deg, input_shift, test->T.u1, + test->T.yy, answer_coef, answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + { + printf(" -- Testing DczPy*s12. \n"); + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 1}; + int input_shift[3]; + shift_xy(input_shift); + + _prec answer_coef[3] = {0, 0, 1}; + _prec answer_deg[3] = {0, 0, 0}; + int answer_shift[3]; + shift_u1(answer_shift); + test_initialize(test); + double err = test_velocity_kernel(test, test->T.xy, input_coef, input_deg, + input_shift, test->T.u1, test->T.yy, answer_coef, + answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + + + + return; + + printf(" * Testing u2 update equation. \n"); + { + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 2}; + int input_shift[3]; + shift_xy(input_shift); + + _prec answer_coef[3] = {0, 0, 2}; + _prec answer_deg[3] = {0, 0, 1}; + int answer_shift[3]; + shift_u2(answer_shift); + test_initialize(test); + test_velocity_kernel(test, test->T.xy, input_coef, input_deg, + input_shift, test->T.v1, test->T.yy, answer_coef, + answer_deg, answer_shift); + + write_vtk(test); + test_free(test); + } + + printf(" * Testing u3 update equation. \n"); + { + printf(" -- Testing quadratic function in x-direction. \n"); + // Only linear functions can be used in the test because interpolation + // operators is only first order accurate near boundary + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 2}; + int input_shift[3]; + shift_xz(input_shift); + + _prec answer_coef[3] = {0, 0, 2}; + _prec answer_deg[3] = {0, 0, 1}; + int answer_shift[3]; + shift_u3(answer_shift); + test_initialize(test); + double err = test_velocity_kernel( + test, test->T.xz, input_coef, input_deg, input_shift, test->T.w1, + test->T.yy, answer_coef, answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } +} + +void test_stress(testdata_t *test) +{ + printf("Testing stress update kernel (kernels must be generated with debug=1, debug_ops=1... \n"); + printf(" * Testing s11 := PzDcx*u3. \n"); + { + _prec input_coef[3] = {1, 0, 0}; + _prec input_deg[3] = {2, 0, 0}; + int input_shift[3]; + shift_u3(input_shift); + + _prec answer_coef[3] = {2, 0, 0}; + _prec answer_deg[3] = {1, 0, 0}; + int answer_shift[3]; + shift_xx(answer_shift); + test_initialize(test); + double err = test_stress_kernel(test, test->T.w1, input_coef, input_deg, + input_shift, test->T.xx, test->T.yy, answer_coef, + answer_deg, answer_shift); + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + + printf(" * Testing s22 := PzDcy*u3. \n"); + { + _prec input_coef[3] = {0, 1, 0}; + _prec input_deg[3] = {0, 2, 0}; + int input_shift[3]; + shift_u3(input_shift); + + _prec answer_coef[3] = {0, 2, 0}; + _prec answer_deg[3] = {0, 1, 0}; + int answer_shift[3]; + shift_yy(answer_shift); + test_initialize(test); + double err = test_stress_kernel(test, test->T.w1, input_coef, input_deg, + input_shift, test->T.yy, test->T.xz, answer_coef, + answer_deg, answer_shift); + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + + printf(" * Testing s12 := PxDcz*u2. \n"); + { + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 2}; + int input_shift[3]; + shift_u2(input_shift); + + _prec answer_coef[3] = {0, 0, 2}; + _prec answer_deg[3] = {0, 0, 1}; + int answer_shift[3]; + shift_xy(answer_shift); + test_initialize(test); + double err = test_stress_kernel(test, test->T.v1, input_coef, input_deg, + input_shift, test->T.xy, test->T.yy, answer_coef, + answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + + printf(" * Testing s13 := PxDcz*u3. \n"); + { + _prec input_coef[3] = {0, 0, 1}; + _prec input_deg[3] = {0, 0, 2}; + int input_shift[3]; + shift_u3(input_shift); + + _prec answer_coef[3] = {0, 0, 2}; + _prec answer_deg[3] = {0, 0, 1}; + int answer_shift[3]; + shift_xz(answer_shift); + test_initialize(test); + double err = test_stress_kernel(test, test->T.w1, input_coef, input_deg, + input_shift, test->T.xz, test->T.yy, answer_coef, + answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + + + printf(" * Testing s23 := PyDcz*u3. \n"); + { + _prec input_coef[3] = {0, 1, 1}; + _prec input_deg[3] = {0, 1, 2}; + int input_shift[3]; + shift_u3(input_shift); + + _prec answer_coef[3] = {0, 0, 2}; + _prec answer_deg[3] = {0, 0, 1}; + int answer_shift[3]; + shift_yz(answer_shift); + test_initialize(test); + double err = test_stress_kernel(test, test->T.w1, input_coef, input_deg, + input_shift, test->T.yz, test->T.yy, answer_coef, + answer_deg, answer_shift); + + printf(" Error: %g \n", err); + write_vtk(test); + test_free(test); + } + +} + +double test_velocity_kernel(testdata_t *test, _prec *input, const _prec *input_coef, + const _prec *input_deg, const int *input_shift, + _prec *output, _prec *answer, + const _prec *answer_coef, _prec *answer_deg, + const int *answer_shift) { + topo_test_polystrzbnd_H(&test->T, input, input_coef, input_deg, + input_shift); + topo_velocity_interior_H(&test->T); + topo_test_polystrzbnd_H(&test->T, answer, answer_coef, answer_deg, + answer_shift); + cudaDeviceSynchronize(); + + copy_output_to_host(test, output); + copy_answer_to_host(test, answer); + + int offset_x[2] = {test->velocity_offset_x[0], + test->velocity_offset_x[1]}; + int offset_y[2] = {test->velocity_offset_y[0], + test->velocity_offset_y[1]}; + int offset_z[2] = {test->offset_z[0]+8, test->offset_z[1]}; + + double err = check_answer(test, answer_shift, offset_x, offset_y, offset_z); + return err; + +} + +double test_stress_kernel(testdata_t *test, _prec *input, const _prec *input_coef, + const _prec *input_deg, const int *input_shift, + _prec *output, _prec *answer, + const _prec *answer_coef, _prec *answer_deg, + const int *answer_shift) { + topo_test_polystrzbnd_H(&test->T, input, input_coef, input_deg, + input_shift); + topo_stress_interior_H(&test->T); + topo_test_polystrzbnd_H(&test->T, answer, answer_coef, answer_deg, + answer_shift); + cudaDeviceSynchronize(); + + copy_output_to_host(test, output); + copy_answer_to_host(test, answer); + + //FIXME: should be stress_offset + int offset_x[2] = {test->velocity_offset_x[0]+8, + test->velocity_offset_x[1]-8}; + int offset_y[2] = {test->velocity_offset_y[0]+8, + test->velocity_offset_y[1]-8}; + int offset_z[2] = {test->offset_z[0]+8, test->offset_z[1]}; + + double err = check_answer(test, answer_shift, offset_x, offset_y, offset_z); + return err; + +} + +void test_free(testdata_t *test) +{ + topo_free(&test->T); + free(test->output); + free(test->answer); + cudaStreamDestroy(test->T.stream_1); + cudaStreamDestroy(test->T.stream_2); + cudaStreamDestroy(test->T.stream_i); + topo_d_free(&test->T); +} + +void copy_output_to_host(testdata_t *test, const _prec *input) +{ + cudaMemcpy(test->output, input, test->num_bytes, + cudaMemcpyDeviceToHost); +} + +void copy_answer_to_host(testdata_t *test, const _prec *input) +{ + cudaMemcpy(test->answer, input, test->num_bytes, + cudaMemcpyDeviceToHost); +} + +double check_answer(const testdata_t *test, const int *shift, const int *offset_x, + const int *offset_y, const int *offset_z) { + // Do not check the ghost point on the nodal grid + int skip = 0; + if (shift[2] == 0) { + skip = 1; + } + + double err = check_flinferr(test->output, test->answer, + offset_x[0], offset_x[1], + offset_y[0], offset_y[1], + offset_z[0], offset_z[1] - skip, + test->T.line, + test->T.slice); + return err; +} + +void write_vtk(const testdata_t *test) +{ + + _prec *x = malloc(test->topography_grid.num_bytes); + _prec *y = malloc(test->topography_grid.num_bytes); + _prec *z = malloc(test->topography_grid.num_bytes); + + fcn_fill_grid(x, test->topography_grid, test->shift, 0); + fcn_fill_grid(y, test->topography_grid, test->shift, 1); + fcn_fill_grid(z, test->topography_grid, test->shift, 2); + + fcn_grid_t grid = test->interior_grid; + const char *vtk_file = "output.vtk"; + vtk_write_grid(vtk_file, x, y, z, grid); + size_t count = vtk_append_scalar(vtk_file, "output", test->output, grid); + + const char *vtk_file2 = "answer.vtk"; + vtk_write_grid(vtk_file2, x, y, z, grid); + count = vtk_append_scalar(vtk_file2, "answer", test->answer, grid); + + const char *vtk_file3 = "error.vtk"; + fcn_difference(test->error, test->answer, test->output, grid); + fcn_abs(test->error, test->error, grid); + vtk_write_grid(vtk_file3, x, y, z, grid); + count = vtk_append_scalar(vtk_file3, "error", test->error, grid); + +} diff --git a/tests/topography/accuracy/topography.bin b/tests/topography/accuracy/topography.bin new file mode 100644 index 0000000000000000000000000000000000000000..88ea8b60c0fe218b093fb541d8ebd2f7d469f72e GIT binary patch literal 87628 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 +#include +#include + +#include "topography_test.h" +#include "cutopography.cuh" +#include "cutopography_test.cuh" +#include "topography.h" +#include "functions.h" +#include "grid_check.h" + + +topo_test_t topo_test_init(topo_t *T) +{ + topo_test_t Tt = {.use = TOPO_TEST, .tol = TOPO_TEST_TOLERANCE}; + + if (Tt.use && T->rank == 0) printf("Topography:: testing enabled\n"); + +#if TOPO_TEST_CONSTX || TOPO_TEST_CONSTY + Tt.out = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->su1[i]; + } + Tt.cu1[0] = 1; + Tt.cv1[0] = 2; + Tt.cw1[0] = 3; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, Tt.out_shift); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, Tt.out_shift); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_LINX + Tt.coef[0] = 1.0; + Tt.deg[0] = 1.0; + Tt.out = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->su1[i]; + } + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_LINY + Tt.coef[1] = 1.0; + Tt.deg[1] = 1.0; + Tt.out = T->u1; + Tt.velf = T->f_u1; + Tt.velb = T->b_u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->su1[i]; + Tt.in_shift[i] = T->su1[i]; + } + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFCONSTX + Tt.coef[0] = 1.0; + Tt.out = T->xx; + Tt.in = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->sxx[i]; + Tt.in_shift[i] = T->su1[i]; + } + topo_test_poly_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFCONSTY + Tt.coef[1] = 1.0; + Tt.out = T->yy; + Tt.velf = T->f_v1; + Tt.velb = T->b_v1; + Tt.in = T->v1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->syy[i]; + Tt.in_shift[i] = T->sv1[i]; + } + topo_test_poly_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFCONSTZ + Tt.coef[2] = 1.0; + Tt.out = T->xz; + Tt.in = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->sxz[i]; + Tt.in_shift[i] = T->su1[i]; + } + topo_test_polyzbnd_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); +#endif + +#if TOPO_TEST_DIFFLINX + Tt.coef[0] = 1.0; + Tt.deg[0] = 1.0; + Tt.out = T->xx; + Tt.in = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->sxx[i]; + Tt.in_shift[i] = T->su1[i]; + } + topo_test_poly_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFLINY + Tt.coef[1] = 1.0; + Tt.deg[1] = 1.0; + Tt.out = T->yy; + Tt.in = T->v1; + Tt.velf = T->f_v1; + Tt.velb = T->b_v1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->syy[i]; + Tt.in_shift[i] = T->sv1[i]; + } + topo_test_poly_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFLINZ + Tt.coef[2] = 1.0; + Tt.deg[2] = 1.0; + Tt.out = T->xz; + Tt.in = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->sxz[i]; + Tt.in_shift[i] = T->su1[i]; + } + topo_test_polyzbnd_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + // Plug in answer in advance to make sure that points that do + // not get updated have the correct answer (instead of adjusting + // bounds of test function) + _prec deg[3] = {0, 0, 0}; + _prec coef[3] = {0, 0, 1}; + topo_test_polyzbnd_H(T, Tt.out, coef, deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFQUADX || TOPO_TEST_CGDIFFQUADX + Tt.coef[0] = 1.0; + Tt.deg[0] = 2.0; + Tt.out = T->xx; + Tt.in = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->sxx[i]; + Tt.in_shift[i] = T->su1[i]; + } + topo_test_poly_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFQUADY + Tt.coef[1] = 1.0; + Tt.deg[1] = 2.0; + Tt.out = T->yz; + Tt.in = T->w1; + Tt.velf = T->f_w1; + Tt.velb = T->b_w1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->syz[i]; + Tt.in_shift[i] = T->sw1[i]; + } + topo_test_poly_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + topo_test_poly_H(T, Tt.out, Tt.coef, Tt.deg, Tt.out_shift); +#endif + +#if TOPO_TEST_DIFFQUADZ + Tt.coef[2] = 1.0; + Tt.deg[2] = 2.0; + Tt.out = T->xz; + Tt.in = T->u1; + for (int i = 0; i < 3; ++i) { + Tt.out_shift[i] = T->sxz[i]; + Tt.in_shift[i] = T->su1[i]; + } + topo_test_polyzbnd_H(T, Tt.in, Tt.coef, Tt.deg, Tt.in_shift); + // Plug in answer in advance to make sure that points that do + // not get updated have the correct answer (instead of adjusting + // bounds of test function) + _prec deg[3] = {0, 0, 1}; + _prec coef[3] = {0, 0, 2}; + topo_test_polyzbnd_H(T, Tt.out, coef, deg, Tt.out_shift); +#endif + +#if TOPO_TEST_VELCONST + Tt.cxx[0] = 1.0; + Tt.cyy[0] = 1.0; + Tt.czz[0] = 1.0; + Tt.cxy[0] = 1.0; + Tt.cxz[0] = 1.0; + Tt.cyz[0] = 1.0; + // Input + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_VELLINX + Tt.cxx[0] = 1.0; + Tt.cyy[0] = 1.0; + Tt.czz[0] = 1.0; + Tt.cxy[0] = 1.0; + Tt.cxz[0] = 1.0; + Tt.cyz[0] = 1.0; + Tt.deg[0] = 1.0; + // Input + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + Tt.cu1[0] = 0.0; + Tt.cv1[0] = 0.0; + Tt.cw1[0] = 0.0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_VELLINY + Tt.cxx[1] = 1.0; + Tt.cyy[1] = 1.0; + Tt.czz[1] = 1.0; + Tt.cxy[1] = 1.0; + Tt.cxz[1] = 1.0; + Tt.cyz[1] = 1.0; + Tt.deg[1] = 1.0; + // Input + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + Tt.cu1[0] = 0.0; + Tt.cv1[0] = 0.0; + Tt.cw1[0] = 0.0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_VELLINZ + Tt.cxx[2] = 1.0; + Tt.cyy[2] = 1.0; + Tt.czz[2] = 1.0; + Tt.cxy[2] = 1.0; + Tt.cxz[2] = 1.0; + Tt.cyz[2] = 1.0; + Tt.deg[2] = 1.0; + // Input + topo_test_polystrzbnd_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystrzbnd_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystrzbnd_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystrzbnd_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystrzbnd_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystrzbnd_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + Tt.cu1[0] = 0; + Tt.cv1[0] = 0; + Tt.cw1[0] = 0; + topo_test_polyzbnd_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_polyzbnd_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_polyzbnd_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_VELQUADX + Tt.cxx[0] = 1.0; + Tt.cyy[0] = 1.0; + Tt.czz[0] = 1.0; + Tt.cxy[0] = 1.0; + Tt.cxz[0] = 1.0; + Tt.cyz[0] = 1.0; + Tt.deg[0] = 2.0; + // Input + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + Tt.cu1[0] = 0; + Tt.cv1[0] = 0; + Tt.cw1[0] = 0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_VELQUADY + Tt.cxx[1] = 1.0; + Tt.cyy[1] = 1.0; + Tt.czz[1] = 1.0; + Tt.cxy[1] = 1.0; + Tt.cxz[1] = 1.0; + Tt.cyz[1] = 1.0; + Tt.deg[1] = 2.0; + // Input + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + Tt.cu1[0] = 0; + Tt.cv1[0] = 0; + Tt.cw1[0] = 0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_VELQUADZ + Tt.cxx[2] = 1.0; + Tt.cyy[2] = 1.0; + Tt.czz[2] = 1.0; + Tt.cxy[2] = 1.0; + Tt.cxz[2] = 1.0; + Tt.cyz[2] = 1.0; + Tt.deg[2] = 2.0; + // Input + topo_test_polystrzbnd_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystrzbnd_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystrzbnd_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystrzbnd_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystrzbnd_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystrzbnd_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + Tt.cu1[0] = 0; + Tt.cv1[0] = 0; + Tt.cw1[0] = 0; + topo_test_polyzbnd_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_polyzbnd_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_polyzbnd_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_VELFRONTBACK + Tt.cxx[1] = 1.0; + Tt.cyy[1] = 1.0; + Tt.czz[1] = 1.0; + Tt.cxy[1] = 1.0; + Tt.cxz[1] = 1.0; + Tt.cyz[1] = 1.0; + Tt.deg[1] = 2.0; + // Input + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); + + // Output + Tt.cu1[0] = 0; + Tt.cv1[0] = 0; + Tt.cw1[0] = 0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); +#endif + +#if TOPO_TEST_STRCONST + // Input + Tt.cu1[0] = 0; + Tt.cv1[0] = 0; + Tt.cw1[0] = 0; + Tt.deg[0] = 0.0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); + +#endif + +#if TOPO_TEST_STRLINX + // Input + Tt.cu1[0] = 1; + Tt.cv1[0] = 1; + Tt.cw1[0] = 1; + Tt.deg[0] = 1.0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); + + // Output + Tt.cxx[0] = 0.0; + Tt.cyy[0] = 0.0; + Tt.czz[0] = 0.0; + Tt.cxy[0] = 0.0; + Tt.cxz[0] = 0.0; + Tt.cyz[0] = 0.0; + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); +#endif + +#if TOPO_TEST_STRLINY + // Input + Tt.cu1[1] = 1; + Tt.cv1[1] = 1; + Tt.cw1[1] = 1; + Tt.deg[1] = 1.0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); + + // Output + Tt.cxx[0] = 0.0; + Tt.cyy[0] = 0.0; + Tt.czz[0] = 0.0; + Tt.cxy[0] = 0.0; + Tt.cxz[0] = 0.0; + Tt.cyz[0] = 0.0; + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); +#endif + +#if TOPO_TEST_STRLINZ + // Input + Tt.cu1[2] = 1; + Tt.cv1[2] = 1; + Tt.cw1[2] = 1; + Tt.deg[2] = 1.0; + topo_test_polyzbnd_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_polyzbnd_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_polyzbnd_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); + + // Output + Tt.cxx[0] = 0.0; + Tt.cyy[0] = 0.0; + Tt.czz[0] = 0.0; + Tt.cxy[0] = 0.0; + Tt.cxz[0] = 0.0; + Tt.cyz[0] = 0.0; + topo_test_polystrzbnd_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystrzbnd_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystrzbnd_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystrzbnd_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystrzbnd_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystrzbnd_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); +#endif + +#if TOPO_TEST_STRQUADX + // Input + Tt.cu1[0] = 1; + Tt.cv1[0] = 1; + Tt.cw1[0] = 1; + Tt.deg[0] = 2.0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); + + // Output + Tt.cxx[0] = 0.0; + Tt.cyy[0] = 0.0; + Tt.czz[0] = 0.0; + Tt.cxy[0] = 0.0; + Tt.cxz[0] = 0.0; + Tt.cyz[0] = 0.0; + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); +#endif + +#if TOPO_TEST_STRQUADY + // Input + Tt.cu1[1] = 1; + Tt.cv1[1] = 1; + Tt.cw1[1] = 1; + Tt.deg[1] = 2.0; + topo_test_poly_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_poly_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_poly_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); + + // Output + Tt.cxx[0] = 0.0; + Tt.cyy[0] = 0.0; + Tt.czz[0] = 0.0; + Tt.cxy[0] = 0.0; + Tt.cxz[0] = 0.0; + Tt.cyz[0] = 0.0; + topo_test_polystr_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystr_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystr_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystr_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystr_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystr_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); +#endif + +#if TOPO_TEST_STRQUADZ + // Input + Tt.cu1[2] = 1; + Tt.cv1[2] = 1; + Tt.cw1[2] = 1; + Tt.deg[2] = 2.0; + topo_test_polyzbnd_H(T, T->u1, Tt.cu1, Tt.deg, T->su1); + topo_test_polyzbnd_H(T, T->v1, Tt.cv1, Tt.deg, T->sv1); + topo_test_polyzbnd_H(T, T->w1, Tt.cw1, Tt.deg, T->sw1); + + // Output + Tt.cxx[0] = 0.0; + Tt.cyy[0] = 0.0; + Tt.czz[0] = 0.0; + Tt.cxy[0] = 0.0; + Tt.cxz[0] = 0.0; + Tt.cyz[0] = 0.0; + topo_test_polystrzbnd_H(T, T->xx, Tt.cxx, Tt.deg, T->sxx); + topo_test_polystrzbnd_H(T, T->yy, Tt.cyy, Tt.deg, T->syy); + topo_test_polystrzbnd_H(T, T->zz, Tt.czz, Tt.deg, T->szz); + topo_test_polystrzbnd_H(T, T->xy, Tt.cxy, Tt.deg, T->sxy); + topo_test_polystrzbnd_H(T, T->xz, Tt.cxz, Tt.deg, T->sxz); + topo_test_polystrzbnd_H(T, T->yz, Tt.cyz, Tt.deg, T->syz); +#endif + + return Tt; +} + +void topo_test_velfront(topo_test_t *Tt, topo_t *T) +{ + if (T->y_rank_f < 0) { + return; + } + +#if TOPO_TEST_CONSTY + topo_test_polyf_H(T, T->f_u1, Tt->cu1, Tt->deg, Tt->in_shift); + topo_test_polyf_H(T, T->f_v1, Tt->cv1, Tt->deg, Tt->in_shift); + topo_test_polyf_H(T, T->f_w1, Tt->cw1, Tt->deg, Tt->in_shift); +#endif + +#if TOPO_TEST_STRLINY || TOPO_TEST_STRQUADY + topo_test_polyf_H(T, T->f_u1, Tt->cu1, Tt->deg, T->su1); + topo_test_polyf_H(T, T->f_v1, Tt->cv1, Tt->deg, T->sv1); + topo_test_polyf_H(T, T->f_w1, Tt->cw1, Tt->deg, T->sw1); +#endif + +#if TOPO_TEST_STRLINZ || TOPO_TEST_STRQUADZ + topo_test_polyzbndf_H(T, T->f_u1, Tt->cu1, Tt->deg, T->su1); + topo_test_polyzbndf_H(T, T->f_v1, Tt->cv1, Tt->deg, T->sv1); + topo_test_polyzbndf_H(T, T->f_w1, Tt->cw1, Tt->deg, T->sw1); +#endif + +#if TOPO_TEST_LINY || TOPO_TEST_DIFFCONSTY || TOPO_TEST_DIFFLINY || \ + TOPO_TEST_DIFFQUADY + topo_test_polyf_H(T, Tt->velf, Tt->coef, Tt->deg, Tt->in_shift); +#endif + +#if TOPO_TEST_VELFRONTBACK + topo_velocity_front_H(T); +#endif +} + +void topo_test_velback(topo_test_t *Tt, topo_t *T) +{ + if (T->y_rank_b < 0) { + return; + } + +#if TOPO_TEST_CONSTY + topo_test_polyb_H(T, T->b_u1, Tt->cu1, Tt->deg, Tt->in_shift); + topo_test_polyb_H(T, T->b_v1, Tt->cv1, Tt->deg, Tt->in_shift); + topo_test_polyb_H(T, T->b_w1, Tt->cw1, Tt->deg, Tt->in_shift); +#endif + +#if TOPO_TEST_STRLINY || TOPO_TEST_STRQUADY + topo_test_polyb_H(T, T->b_u1, Tt->cu1, Tt->deg, T->su1); + topo_test_polyb_H(T, T->b_v1, Tt->cv1, Tt->deg, T->sv1); + topo_test_polyb_H(T, T->b_w1, Tt->cw1, Tt->deg, T->sw1); +#endif + +#if TOPO_TEST_STRLINZ || TOPO_TEST_STRQUADZ + topo_test_polyzbndb_H(T, T->b_u1, Tt->cu1, Tt->deg, T->su1); + topo_test_polyzbndb_H(T, T->b_v1, Tt->cv1, Tt->deg, T->sv1); + topo_test_polyzbndb_H(T, T->b_w1, Tt->cw1, Tt->deg, T->sw1); +#endif + +#if TOPO_TEST_LINY || TOPO_TEST_DIFFCONSTY || TOPO_TEST_DIFFLINY || \ + TOPO_TEST_DIFFQUADY + topo_test_polyb_H(T, Tt->velb, Tt->coef, Tt->deg, Tt->in_shift); +#endif + +#if TOPO_TEST_VELFRONTBACK + topo_velocity_back_H(T); +#endif +} + +void topo_test_velx(const topo_test_t *Tt, topo_t *T) +{ +#if TOPO_TEST_VELCONST || TOPO_TEST_VELLINX || TOPO_TEST_VELLINY || \ + TOPO_TEST_VELLINZ || TOPO_TEST_VELQUADX || TOPO_TEST_VELQUADY || \ + TOPO_TEST_VELQUADZ + topo_velocity_interior_H(T); +#endif +} + +void topo_test_stress(const topo_test_t *Tt, topo_t *T) +{ +#if TOPO_TEST_DIFFCONSTX || TOPO_TEST_DIFFLINX || TOPO_TEST_DIFFQUADX + topo_test_diffx_H(T, T->xx, T->u1); +#endif + +#if TOPO_TEST_DIFFCONSTZ || TOPO_TEST_DIFFLINZ || TOPO_TEST_DIFFQUADZ + topo_test_diffz_H(T, Tt->out, Tt->in); +#endif + +#if TOPO_TEST_CGDIFFQUADX + topo_test_cgdiffx_H(T, T->xx, T->u1); +#endif + +#if TOPO_TEST_DIFFCONSTY || TOPO_TEST_DIFFLINY + topo_test_diffy_H(T, T->yy, T->v1); +#endif + +#if TOPO_TEST_DIFFQUADY + topo_test_diffy_H(T, T->yz, T->w1); +#endif +} + +void topo_test_stress_interior(const topo_test_t *Tt, topo_t *T) +{ +#if TOPO_TEST_STRCONST || TOPO_TEST_STRLINX || TOPO_TEST_STRLINY || \ + TOPO_TEST_STRLINZ || TOPO_TEST_STRQUADX || TOPO_TEST_STRQUADY || \ + TOPO_TEST_STRQUADZ + topo_stress_interior_H(T); +#endif +} + +void topo_test_stress_sides(const topo_test_t *Tt, topo_t *T) +{ +#if TOPO_TEST_STRCONST || TOPO_TEST_STRLINX || TOPO_TEST_STRLINY || \ + TOPO_TEST_STRLINZ || TOPO_TEST_STRQUADX || TOPO_TEST_STRQUADY || \ + TOPO_TEST_STRQUADZ + topo_stress_left_H(T); + topo_stress_right_H(T); +#endif +} + +int topo_test_finalize(const topo_test_t *Tt, topo_t *T) +{ + if (!Tt->use) return 0; + + int err = 0; + +#if TOPO_TEST_CONSTX + err |= topo_test_constx(Tt, T); +#endif + +#if TOPO_TEST_CONSTY + err |= topo_test_consty(Tt, T); +#endif + +#if TOPO_TEST_LINX + err |= topo_test_linx(Tt, T); +#endif + +#if TOPO_TEST_LINY + err |= topo_test_liny(Tt, T); +#endif + +#if TOPO_TEST_DIFFCONSTX + err |= topo_test_diffconstx(Tt, T); +#endif + +#if TOPO_TEST_DIFFCONSTY + err |= topo_test_diffconsty(Tt, T); +#endif + +#if TOPO_TEST_DIFFCONSTZ + err |= topo_test_diffconstz(Tt, T); +#endif + +#if TOPO_TEST_DIFFLINX + err |= topo_test_difflinx(Tt, T); +#endif + +#if TOPO_TEST_DIFFLINY + err |= topo_test_diffliny(Tt, T); +#endif + +#if TOPO_TEST_DIFFLINZ + err |= topo_test_difflinz(Tt, T); +#endif + +#if TOPO_TEST_DIFFQUADX || TOPO_TEST_CGDIFFQUADX + err |= topo_test_diffquadx(Tt, T); +#endif + +#if TOPO_TEST_DIFFQUADY + err |= topo_test_diffquady(Tt, T); +#endif + +#if TOPO_TEST_DIFFQUADZ + err |= topo_test_diffquadz(Tt, T); +#endif + +#if TOPO_TEST_VELCONST + err |= topo_test_velconst(Tt, T); +#endif + +#if TOPO_TEST_VELLINX + err |= topo_test_vellinx(Tt, T); +#endif + +#if TOPO_TEST_VELLINY + err |= topo_test_velliny(Tt, T); +#endif + +#if TOPO_TEST_VELLINZ + err |= topo_test_vellinz(Tt, T); +#endif + +#if TOPO_TEST_VELQUADX + err |= topo_test_velquadx(Tt, T); +#endif + +#if TOPO_TEST_VELQUADY + err |= topo_test_velquady(Tt, T); +#endif + +#if TOPO_TEST_VELQUADZ + err |= topo_test_velquadz(Tt, T); +#endif + +#if TOPO_TEST_VELFRONTBACK + err |= topo_test_velfrontback(Tt, T); +#endif + +#if TOPO_TEST_STRCONST + err |= topo_test_strconst(Tt, T); +#endif + +#if TOPO_TEST_STRLINX + err |= topo_test_strlinx(Tt, T); +#endif + +#if TOPO_TEST_STRLINY + err |= topo_test_strliny(Tt, T); +#endif + +#if TOPO_TEST_STRLINZ + err |= topo_test_strlinz(Tt, T); +#endif + +#if TOPO_TEST_STRQUADX + err |= topo_test_strquadx(Tt, T); +#endif + +#if TOPO_TEST_STRQUADY + err |= topo_test_strquady(Tt, T); +#endif + +#if TOPO_TEST_STRQUADZ + err |= topo_test_strquadz(Tt, T); +#endif + + return err; +} + +int topo_test_constx(const topo_test_t *Tt, const topo_t *T) +{ + // Select regions to test + // 1 : region will be tested + // 0 : region will not be tested + // There are only two processes in this test, so MPI send-recv only + // takes place in the x-direction. + int regions[9] = {0, 0, 0, + 1, 1, 1, + 0, 0, 0}; + + if (T->rank == 0) { + regions[3] = 0; + } + if (T->rank == 1) { + regions[5] = 0; + } + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + char *fields_str[3] = {"u1", "v1", "w1"}; + _prec ans[3] = {1.0, 2.0, 3.0}; + + int err = 0; + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[1] = {(_prec)ans[i]}; + err |= topo_test_fcn(fcn_constant, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_consty(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 1, 0, + 0, 1, 0, + 0, 1, 0}; + + if (T->rank == 0) { + regions[7] = 0; + } + if (T->rank == 1) { + regions[1] = 0; + } + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + char *fields_str[3] = {"u1", "v1", "w1"}; + _prec ans[3] = {1.0, 2.0, 3.0}; + + int err = 0; + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[1] = {(_prec)ans[i]}; + err |= topo_test_fcn(fcn_constant, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_linx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 1, 1, 1, + 0, 0, 0}; + + if (T->rank == 0) { + regions[3] = 0; + } + if (T->rank == 1) { + regions[5] = 0; + } + + _prec *fields[3] = {T->u1}; + char *fields_str[3] = {"u1"}; + + int err = 0; + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {1.0, 0.0, 0.0, + 1.0, 0.0, 0.0, + T->su1[0], T->su1[1], T->su1[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_liny(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 1, 0, + 0, 1, 0, + 0, 1, 0}; + + if (T->rank == 0) { + regions[7] = 0; + } + if (T->rank == 1) { + regions[1] = 0; + } + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 1.0, 0.0, + 0.0, 1.0, 0.0, + T->su1[0], T->su1[1], T->su1[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_diffconstx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 1, 1, 1, + 0, 0, 0}; + + _prec *fields[1] = {T->xx}; + char *fields_str[1] = {"xx"}; + + int err = 0; + + // Only check the rank in the middle because the ranks on the boundary + // will not correctly compute the stencil due to applying an interior + // stencil on the boundary + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[1] = {0.0}; + err |= topo_test_fcn(fcn_constant, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_diffconsty(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 1, 0, + 0, 1, 0, + 0, 1, 0}; + + _prec *fields[1] = {T->yy}; + char *fields_str[1] = {"yy"}; + + int err = 0; + + // Only check the rank in the middle because the ranks on the boundary + // will not correctly compute the stencil due to applying an interior + // stencil on the boundary + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[1] = {0.0}; + err |= topo_test_fcn(fcn_constant, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_diffconstz(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 1, 0, + 0, 1, 0, + 0, 1, 0}; + + _prec *fields[1] = {Tt->out}; + char *fields_str[1] = {"xz"}; + + int err = 0; + + // Only check the rank in the middle because the ranks on the boundary + // will not correctly compute the stencil due to applying an interior + // stencil on the boundary + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[1] = {0.0}; + err |= topo_test_fcn(fcn_constant, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_difflinx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[1] = {T->xx}; + char *fields_str[1] = {"xx"}; + + int err = 0; + + // Only check the rank in the middle because the ranks on the boundary + // will not correctly compute the stencil due to applying an interior + // stencil on the boundary + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {1.0, 0.0, 0.0, + 0, 0.0, 0.0, + T->su1[0], T->su1[1], T->su1[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_diffliny(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[1] = {T->yy}; + char *fields_str[1] = {"yy"}; + + int err = 0; + + // Only check the rank in the middle because the ranks on the boundary + // will not correctly compute the stencil due to applying an interior + // stencil on the boundary + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 1.0, 0.0, + 0, 0.0, 0.0, + T->sv1[0], T->sv1[1], T->sv1[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_difflinz(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[1] = {Tt->out}; + char *fields_str[1] = {"xz"}; + + int err = 0; + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 0.0, 1.0, + 0, 0.0, 0.0, + Tt->out_shift[0], Tt->out_shift[1], + Tt->out_shift[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_polybndz, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_diffquadx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[1] = {T->xx}; + char *fields_str[1] = {"xx"}; + + int err = 0; + + // Only check the rank in the middle because the ranks on the boundary + // will not correctly compute the stencil due to applying an interior + // stencil on the boundary + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {2.0, 0.0, 0.0, + 1.0, 0.0, 0.0, + Tt->out_shift[0], Tt->out_shift[1], + Tt->out_shift[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_diffquady(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[1] = {T->yz}; + char *fields_str[1] = {"yz"}; + + int err = 0; + + // Only check the rank in the middle because the ranks on the boundary + // will not correctly compute the stencil due to applying an interior + // stencil on the boundary + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 2.0, 0.0, + 0.0, 1.0, 0.0, + Tt->out_shift[0], Tt->out_shift[1], + Tt->out_shift[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_diffquadz(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[1] = {Tt->out}; + char *fields_str[1] = {"xz"}; + + int err = 0; + + for (int i = 0; i < 1; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 0.0, 2.0, + 0, 0.0, 1.0, + Tt->out_shift[0], Tt->out_shift[1], + Tt->out_shift[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_polybndz, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_velconst(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {1, 1, 1, + 1, 1, 1, + 1, 1, 1}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, + Tt->out_shift[0], Tt->out_shift[1], + Tt->out_shift[2], + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_vellinx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + xyz shift[3] = { + {.x = T->su1[0], .y = T->su1[1], .z = T->su1[2]}, + {.x = T->sv1[0], .y = T->sv1[1], .z = T->sv1[2]}, + {.x = T->sw1[0], .y = T->sw1[1], .z = T->sw1[2]} + }; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {T->dth, 0.0, 0.0, + 0.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_velliny(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + xyz shift[3] = { + {.x = T->su1[0], .y = T->su1[1], .z = T->su1[2]}, + {.x = T->sv1[0], .y = T->sv1[1], .z = T->sv1[2]}, + {.x = T->sw1[0], .y = T->sw1[1], .z = T->sw1[2]} + }; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, T->dth, 0.0, + 0.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_vellinz(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + xyz shift[3] = { + {.x = T->su1[0], .y = T->su1[1], .z = T->su1[2]}, + {.x = T->sv1[0], .y = T->sv1[1], .z = T->sv1[2]}, + {.x = T->sw1[0], .y = T->sw1[1], .z = T->sw1[2]} + }; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 0.0, T->dth, + 0.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_polybndz, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_velquadx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + xyz shift[3] = { + {.x = T->su1[0], .y = T->su1[1], .z = T->su1[2]}, + {.x = T->sv1[0], .y = T->sv1[1], .z = T->sv1[2]}, + {.x = T->sw1[0], .y = T->sw1[1], .z = T->sw1[2]} + }; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {2*T->dth, 0.0, 0.0, + 1.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_velquady(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + xyz shift[3] = { + {.x = T->su1[0], .y = T->su1[1], .z = T->su1[2]}, + {.x = T->sv1[0], .y = T->sv1[1], .z = T->sv1[2]}, + {.x = T->sw1[0], .y = T->sw1[1], .z = T->sw1[2]} + }; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 2*T->dth, 0.0, + 0.0, 1.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_poly, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_velquadz(const topo_test_t *Tt, const topo_t *T) +{ + int regions[9] = {0, 0, 0, + 0, 1, 0, + 0, 0, 0}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + xyz shift[3] = { + {.x = T->su1[0], .y = T->su1[1], .z = T->su1[2]}, + {.x = T->sv1[0], .y = T->sv1[1], .z = T->sv1[2]}, + {.x = T->sw1[0], .y = T->sw1[1], .z = T->sw1[2]} + }; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[9] = {0.0}; + _prec args[13] = {0.0, 0.0, 2*T->dth, + 0.0, 0.0, 1.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_fcn(fcn_polybndz, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + + +int topo_test_velfrontback(const topo_test_t *Tt, const topo_t *T) +{ + int regions[25] = {0, 1, 1, 1, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0}; + + _prec *fields[3] = {T->u1, T->v1, T->w1}; + xyz shift[3] = { + {.x = T->su1[0], .y = T->su1[1], .z = T->su1[2]}, + {.x = T->sv1[0], .y = T->sv1[1], .z = T->sv1[2]}, + {.x = T->sw1[0], .y = T->sw1[1], .z = T->sw1[2]} + }; + char *fields_str[3] = {"u1", "v1", "w1"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 3; ++i) { + _prec ferr[25] = {0.0}; + _prec args[13] = {0.0, 2*T->dth, 0.0, + 0.0, 1.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_velocity_fcn( + fcn_poly, check_flinferr, T, fields[i], Tt->tol, + args, regions, ferr); + check_printerr55(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_strconst(const topo_test_t *Tt, const topo_t *T) +{ + int regions[15] = {1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1}; + + _prec *fields[6] = {T->xx, T->yy, T->zz, T->xy, T->xz, T->yz}; + xyz shift[6] = { + {.x = T->sxx[0], .y = T->sxx[1], .z = T->sxx[2]}, + {.x = T->syy[0], .y = T->syy[1], .z = T->syy[2]}, + {.x = T->szz[0], .y = T->szz[1], .z = T->szz[2]}, + {.x = T->sxy[0], .y = T->sxy[1], .z = T->sxy[2]}, + {.x = T->sxz[0], .y = T->sxz[1], .z = T->sxz[2]}, + {.x = T->syz[0], .y = T->syz[1], .z = T->syz[2]} + }; + char *fields_str[6] = {"xx", "yy", "zz", "xy", "xz", "yz"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + for (int i = 0; i < 6; ++i) { + _prec ferr[15] = {0.0}; + _prec args[13] = {0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_stress_fcn(fcn_poly, check_fl1err, T, fields[i], + Tt->tol, args, regions, ferr); + check_printerr53(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_strlinx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[15] = {1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1}; + + _prec *fields[6] = {T->xx, T->yy, T->zz, T->xy, T->xz, T->yz}; + xyz shift[6] = { + {.x = T->sxx[0], .y = T->sxx[1], .z = T->sxx[2]}, + {.x = T->syy[0], .y = T->syy[1], .z = T->syy[2]}, + {.x = T->szz[0], .y = T->szz[1], .z = T->szz[2]}, + {.x = T->sxy[0], .y = T->sxy[1], .z = T->sxy[2]}, + {.x = T->sxz[0], .y = T->sxz[1], .z = T->sxz[2]}, + {.x = T->syz[0], .y = T->syz[1], .z = T->syz[2]} + }; + char *fields_str[6] = {"xx", "yy", "zz", "xy", "xz", "yz"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + _prec err_coef[6] = {3*T->dth, T->dth, T->dth, T->dth, T->dth, 0}; + for (int i = 0; i < 6; ++i) { + _prec ferr[15] = {0.0}; + _prec args[13] = {err_coef[i], 0.0, 0.0, + 0.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= + topo_test_stress_fcn(fcn_poly, check_flinferr, T, fields[i], + Tt->tol, args, regions, ferr); + check_printerr53(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_strliny(const topo_test_t *Tt, const topo_t *T) +{ + int regions[15] = {1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1}; + + _prec *fields[6] = {T->xx, T->yy, T->zz, T->xy, T->xz, T->yz}; + xyz shift[6] = { + {.x = T->sxx[0], .y = T->sxx[1], .z = T->sxx[2]}, + {.x = T->syy[0], .y = T->syy[1], .z = T->syy[2]}, + {.x = T->szz[0], .y = T->szz[1], .z = T->szz[2]}, + {.x = T->sxy[0], .y = T->sxy[1], .z = T->sxy[2]}, + {.x = T->sxz[0], .y = T->sxz[1], .z = T->sxz[2]}, + {.x = T->syz[0], .y = T->syz[1], .z = T->syz[2]} + }; + char *fields_str[6] = {"xx", "yy", "zz", "xy", "xz", "yz"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + _prec err_coef[6] = {T->dth, 3 * T->dth, T->dth, T->dth, 0, T->dth}; + for (int i = 0; i < 6; ++i) { + _prec ferr[15] = {0.0}; + _prec args[13] = {0.0, err_coef[i], 0.0, + 0.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= + topo_test_stress_fcn(fcn_poly, check_flinferr, T, fields[i], + Tt->tol, args, regions, ferr); + check_printerr53(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_strlinz(const topo_test_t *Tt, const topo_t *T) +{ + int regions[15] = {1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1}; + + _prec *fields[6] = {T->xx, T->yy, T->zz, T->xy, T->xz, T->yz}; + xyz shift[6] = { + {.x = T->sxx[0], .y = T->sxx[1], .z = T->sxx[2]}, + {.x = T->syy[0], .y = T->syy[1], .z = T->syy[2]}, + {.x = T->szz[0], .y = T->szz[1], .z = T->szz[2]}, + {.x = T->sxy[0], .y = T->sxy[1], .z = T->sxy[2]}, + {.x = T->sxz[0], .y = T->sxz[1], .z = T->sxz[2]}, + {.x = T->syz[0], .y = T->syz[1], .z = T->syz[2]} + }; + char *fields_str[6] = {"xx", "yy", "zz", "xy", "xz", "yz"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + _prec err_coef[6] = {T->dth, T->dth, 3 * T->dth, 0, T->dth, T->dth}; + for (int i = 0; i < 6; ++i) { + _prec ferr[15] = {0.0}; + _prec args[13] = {0.0, 0.0, err_coef[i], + 0.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_stress_fcn(fcn_polybndz, check_flinferr, T, + fields[i], Tt->tol, args, regions, + ferr); + check_printerr53(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_strquadx(const topo_test_t *Tt, const topo_t *T) +{ + int regions[15] = {1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1}; + + _prec *fields[6] = {T->xx, T->yy, T->zz, T->xy, T->xz, T->yz}; + xyz shift[6] = { + {.x = T->sxx[0], .y = T->sxx[1], .z = T->sxx[2]}, + {.x = T->syy[0], .y = T->syy[1], .z = T->syy[2]}, + {.x = T->szz[0], .y = T->szz[1], .z = T->szz[2]}, + {.x = T->sxy[0], .y = T->sxy[1], .z = T->sxy[2]}, + {.x = T->sxz[0], .y = T->sxz[1], .z = T->sxz[2]}, + {.x = T->syz[0], .y = T->syz[1], .z = T->syz[2]} + }; + char *fields_str[6] = {"xx", "yy", "zz", "xy", "xz", "yz"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + _prec err_coef[6] = {3*T->dth, T->dth, T->dth, T->dth, T->dth, 0}; + for (int i = 0; i < 6; ++i) { + _prec ferr[15] = {0.0}; + _prec args[13] = {2 * err_coef[i], 0.0, 0.0, + 1.0, 0.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= + topo_test_stress_fcn(fcn_poly, check_flinferr, T, fields[i], + Tt->tol, args, regions, ferr); + check_printerr53(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_strquady(const topo_test_t *Tt, const topo_t *T) +{ + int regions[15] = {1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1}; + + _prec *fields[6] = {T->xx, T->yy, T->zz, T->xy, T->xz, T->yz}; + xyz shift[6] = { + {.x = T->sxx[0], .y = T->sxx[1], .z = T->sxx[2]}, + {.x = T->syy[0], .y = T->syy[1], .z = T->syy[2]}, + {.x = T->szz[0], .y = T->szz[1], .z = T->szz[2]}, + {.x = T->sxy[0], .y = T->sxy[1], .z = T->sxy[2]}, + {.x = T->sxz[0], .y = T->sxz[1], .z = T->sxz[2]}, + {.x = T->syz[0], .y = T->syz[1], .z = T->syz[2]} + }; + char *fields_str[6] = {"xx", "yy", "zz", "xy", "xz", "yz"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + _prec err_coef[6] = {T->dth, 3 * T->dth, T->dth, T->dth, 0, T->dth}; + for (int i = 0; i < 6; ++i) { + _prec ferr[15] = {0.0}; + _prec args[13] = {0.0, 2 * err_coef[i], 0.0, + 0.0, 1.0, 0.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= + topo_test_stress_fcn(fcn_poly, check_flinferr, T, fields[i], + Tt->tol, args, regions, ferr); + check_printerr53(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + +int topo_test_strquadz(const topo_test_t *Tt, const topo_t *T) +{ + int regions[15] = {1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1}; + + _prec *fields[6] = {T->xx, T->yy, T->zz, T->xy, T->xz, T->yz}; + xyz shift[6] = { + {.x = T->sxx[0], .y = T->sxx[1], .z = T->sxx[2]}, + {.x = T->syy[0], .y = T->syy[1], .z = T->syy[2]}, + {.x = T->szz[0], .y = T->szz[1], .z = T->szz[2]}, + {.x = T->sxy[0], .y = T->sxy[1], .z = T->sxy[2]}, + {.x = T->sxz[0], .y = T->sxz[1], .z = T->sxz[2]}, + {.x = T->syz[0], .y = T->syz[1], .z = T->syz[2]} + }; + char *fields_str[6] = {"xx", "yy", "zz", "xy", "xz", "yz"}; + + int err = 0; + + if (T->rank != 1) { + return err; + } + + _prec err_coef[6] = {T->dth, T->dth, 3 * T->dth, 0, T->dth, T->dth}; + for (int i = 0; i < 6; ++i) { + _prec ferr[15] = {0.0}; + _prec args[13] = {0.0, 0.0, 2 * err_coef[i], + 0.0, 0.0, 1.0, + shift[i].x, shift[i].y, shift[i].z, + T->coord[0], T->coord[1], + T->nx, T->ny}; + err |= topo_test_stress_fcn(fcn_polybndz, check_flinferr, T, + fields[i], Tt->tol, args, regions, + ferr); + check_printerr53(__func__, T->rank, fields_str[i], ferr); + } + + return err; +} + + +int topo_test_fcn(fcnp fp, const topo_t *T, const _prec *dres, const _prec tol, + const _prec *args, const int *regions, _prec *ferr) +{ + int size = sizeof(_prec)*T->gridsize; + _prec *res = malloc(size); + _prec *ans = malloc(size); + cudaMemcpy(res, dres, size, cudaMemcpyDeviceToHost); + + int err = 0; + + // Apply function everywhere (excluding alignment space and bottom + // in z-direction region) + fp(ans, + T->off_x[0], T->off_x[3], + T->off_y[0], T->off_y[3], + T->off_z[1], T->off_z[2], + T->line, T->slice, + args); + err = check_all(check_fl1err, res, ans, + T->off_x, T->off_y, T->off_z, 3, 3, + T->line, T->slice, + tol, regions, ferr); + + free(res); + free(ans); + + return err; +} + +int topo_test_stress_fcn(fcnp fp, check_fun check_fp, + const topo_t *T, const _prec *dres, + const _prec tol, const _prec *args, const int *regions, + _prec *ferr) +{ + int size = sizeof(_prec)*T->gridsize; + _prec *res = malloc(size); + _prec *ans = malloc(size); + cudaMemcpy(res, dres, size, cudaMemcpyDeviceToHost); + + int err = 0; + + fp(ans, + T->stress_offset_x[1], T->stress_offset_x[4], + T->stress_offset_y[1], T->stress_offset_y[2], + T->off_z[1], T->off_z[2], + T->line, T->slice, + args); + + err = check_all(check_fp, res, ans, + T->stress_offset_x, T->stress_offset_y, T->off_z, 5, 3, + T->line, T->slice, + tol, regions, ferr); + + free(res); + free(ans); + + return err; +} + +int topo_test_velocity_fcn(fcnp fp, check_fun check_fp, const topo_t *T, + const _prec *dres, const _prec tol, + const _prec *args, const int *regions, _prec *ferr) +{ + int size = sizeof(_prec)*T->gridsize; + _prec *res = malloc(size); + _prec *ans = malloc(size); + cudaMemcpy(res, dres, size, cudaMemcpyDeviceToHost); + + int err = 0; + + fp(ans, + T->off_x[0], T->off_x[3], + T->off_y[0], T->off_y[3], + T->off_z[1], T->off_z[2], + T->line, T->slice, + args); + + err = check_all(check_fp, res, ans, + T->velocity_offset_x, T->velocity_offset_y, + T->off_z, 5, 5, + T->line, T->slice, + tol, regions, ferr); + + free(res); + free(ans); + + return err; +} diff --git a/tests/topography/accuracy/topography_test.h b/tests/topography/accuracy/topography_test.h new file mode 100644 index 0000000..4dc2c99 --- /dev/null +++ b/tests/topography/accuracy/topography_test.h @@ -0,0 +1,333 @@ +#ifndef TOPOGRAPHY_TEST_H +#define TOPOGRAPHY_TEST_H +/* + * This module is used to test the module `topography`. + * While this module provides a number of tests (see below), only one test can + * run at a time. A test that fails will return an error code `err`. + * If `err > 0` then the test has failed. + * + * The testing procedure works in the following three steps: + * 1. The test is initialized, and the particular chosen test is configured. + * This action takes place when calling `test_topo_init()`, and this function + * is called before entering the time stepping loop. + * For example, `TOPO_TEST_CONSTX` enables a test that checks if a constant + * function is correctly handled. The initialization step calls a CUDA kernel + * that will initialize one or more of the device arrays `u1, v1, w1, etc`. In + * this case, the kernel launch function is named `topo_test_const_H`. + * + * 2. Outside code then runs and modifies the device arrays as desired. To + * mimic the behavior of the velocity communication and computation, the + * functions `test_velfront`, `test_velback` are called at the time when the + * compute kernels for the front and back parts of the velocity field are + * called. Similarly, `test_velx` is called when the kernel for the interior + * computation of the velocity field takes place. + * + * 3. The test is finalized by copying the device data to host and comparing + * the result to a priori known answer. The l-2 norm is used for the + * comparison. This action takes place when calling `test_topo_finalize` and is + * executed after the time stepping loop has completed. + * + */ + + +// TOPO_TEST: Enable testing +#ifndef TOPO_TEST +#define TOPO_TEST 0 +#endif + +/* + * Tests to run (choose only one). + * These tests can be activated by specifying the flag `-D` and + * variable name. For example,`-DTOPO_TEST_CONSTX=1` will run the test + * `TOPO_TEST_CONSTX` (see below for available tests). + * + * Description: + * TOPO_TEST_CONSTX: Check that a constant function is handled correctly + * with communication in the x-direction. + * + * TOPO_TEST_CONSTY: Check that a constant function is handled correctly + * with communication in the y-direction. + * + * TOPO_TEST_LINX: Check that a linear function is handled correctly + * with communication in the x-direction. + * + * TOPO_TEST_DIFFCONSTX: Differentiate a constant function in the + * x-direction on the device and check that the zero function is produced + * on the host. + * + * TOPO_TEST_DIFFCONSTY: Differentiate a constant function in the + * y-direction on the device and check that the zero function is produced + * on the host. + * + * TOPO_TEST_DIFFCONSTZ: Differentiate a constant function in the + * z-direction on the device and check that the zero function is produced + * on the host. This test includes stencils for the top boundary. + * + * TOPO_TEST_DIFFLINX: Differentiate a linear function in the x-direction + * on the device and check that the correct constant function is produced + * on the host. + * + * TOPO_TEST_DIFFLINY: Differentiate a linear function in the y-direction + * on the device and check that the correct constant function is produced + * on the host. + * + * TOPO_TEST_DIFFLINZ: Differentiate a linear function in the + * z-direction on the device and check that the correct constant function + * is produced on the host. This test includes stencils for the top + * boundary. + * + * TOPO_TEST_DIFFQUADX: Differentiate a quadratic function in the + * x-direction on the device and check that the correct linear function is + * produced on the host. + * + * TOPO_TEST_DIFFQUADY: Differentiate a quadratic function in the + * y-direction on the device and check that the correct linear function is + * produced on the host. + * + * TOPO_TEST_DIFFQUADZ: Differentiate a quadratic function in the + * y-direction on the device and check that the correct linear function is + * produced on the host. + * + * TOPO_TEST_VELCONST: Test the topography velocity kernel by using a + * constant function. + * + * TOPO_TEST_VELLINX: Test the topography velocity kernel by using a linear + * function in the x-direction. + * + * TOPO_TEST_VELLINY: Test the topography velocity kernel by using a linear + * function in the y-direction. + * + * TOPO_TEST_VELLINZ: Test the topography velocity kernel by using a linear + * function in the z-direction. + * + * TOPO_TEST_VELQUADX: Test the topography velocity kernel by using a + * quadratic function in the x-direction. + * + * TOPO_TEST_VELQUADY: Test the topography velocity kernel by using a + * quadratic function in the y-direction. + * + * TOPO_TEST_VELQUADZ: Test the topography velocity kernel by using a + * quadratic function in the z-direction. + * + * TOPO_TEST_STRCONST: Test the topography stress kernel by using a + * constant function. + * + * TOPO_TEST_STRLINX: Test the topography stress kernel by using a linear + * function in the x-direction. + * + * TOPO_TEST_STRLINY: Test the topography stress kernel by using a linear + * function in the y-direction. + * + * TOPO_TEST_STRLINZ: Test the topography stress kernel by using a linear + * function in the z-direction. + * + * TOPO_TEST_STRQUADX: Test the topography stress kernel by using a + * quadratic function in the x-direction. + * + * TOPO_TEST_STRQUADY: Test the topography stress kernel by using a + * quadratic function in the y-direction. + * + * TOPO_TEST_STRQUADZ: Test the topography stress kernel by using a + * quadratic function in the z-direction. + * + * TOPO_TEST_VELFRONTBACK: Test the topography front and back velocity + * kernels by using a quadratic function in the y-direction. + */ +#ifndef TOPO_TEST_CONSTX +#define TOPO_TEST_CONSTX 0 +#endif + +#ifndef TOPO_TEST_CONSTY +#define TOPO_TEST_CONSTY 0 +#endif + +#ifndef TOPO_TEST_LINX +#define TOPO_TEST_LINX 0 +#endif + +#ifndef TOPO_TEST_DIFFCONSTX +#define TOPO_TEST_DIFFCONSTX 0 +#endif + +#ifndef TOPO_TEST_DIFFCONSTY +#define TOPO_TEST_DIFFCONSTY 0 +#endif + +#ifndef TOPO_TEST_DIFFCONSTZ +#define TOPO_TEST_DIFFCONSTZ 0 +#endif + +#ifndef TOPO_TEST_DIFFLINX +#define TOPO_TEST_DIFFLINX 0 +#endif + +#ifndef TOPO_TEST_DIFFLINY +#define TOPO_TEST_DIFFLINY 0 +#endif + +#ifndef TOPO_TEST_DIFFLINZ +#define TOPO_TEST_DIFFLINZ 0 +#endif + +#ifndef TOPO_TEST_DIFFQUADX +#define TOPO_TEST_DIFFQUADX 0 +#endif + +#ifndef TOPO_TEST_DIFFQUADY +#define TOPO_TEST_DIFFQUADY 0 +#endif + +#ifndef TOPO_TEST_DIFFQUADZ +#define TOPO_TEST_DIFFQUADZ 0 +#endif + +#ifndef TOPO_TEST_VELCONST +#define TOPO_TEST_VELCONST 0 +#endif + +#ifndef TOPO_TEST_VELLINX +#define TOPO_TEST_VELLINX 0 +#endif + +#ifndef TOPO_TEST_VELLINY +#define TOPO_TEST_VELLINY 0 +#endif + +#ifndef TOPO_TEST_VELLINZ +#define TOPO_TEST_VELLINZ 0 +#endif + +#ifndef TOPO_TEST_VELQUADX +#define TOPO_TEST_VELQUADX 0 +#endif + +#ifndef TOPO_TEST_VELQUADY +#define TOPO_TEST_VELQUADY 0 +#endif + +#ifndef TOPO_TEST_VELQUADZ +#define TOPO_TEST_VELQUADZ 0 +#endif + +#ifndef TOPO_TEST_VELFRONTBACK +#define TOPO_TEST_VELFRONTBACK 0 +#endif + +#ifndef TOPO_TEST_STRCONST +#define TOPO_TEST_STRCONST 0 +#endif + +#ifndef TOPO_TEST_STRLINX +#define TOPO_TEST_STRLINX 0 +#endif + +#ifndef TOPO_TEST_STRLINY +#define TOPO_TEST_STRLINY 0 +#endif + +#ifndef TOPO_TEST_STRLINZ +#define TOPO_TEST_STRLINZ 0 +#endif + +#ifndef TOPO_TEST_STRQUADX +#define TOPO_TEST_STRQUADX 0 +#endif + +#ifndef TOPO_TEST_STRQUADY +#define TOPO_TEST_STRQUADY 0 +#endif + +#ifndef TOPO_TEST_STRQUADZ +#define TOPO_TEST_STRQUADZ 0 +#endif + +#define TOPO_TEST_TOLERANCE 1e-6 + +#include "functions.h" +#include "grid_check.h" +#include "topography.h" + +typedef struct { + int x; + int y; + int z; +} xyz; + +typedef struct { + int use; + _prec tol; + _prec coef[3]; + _prec deg[3]; + _prec *out; + _prec *velf; + _prec *velb; + _prec *in; + int out_shift[3]; + int in_shift[3]; + _prec cxx[3]; + _prec cyy[3]; + _prec czz[3]; + _prec cxy[3]; + _prec cxz[3]; + _prec cyz[3]; + _prec cu1[3]; + _prec cv1[3]; + _prec cw1[3]; +} topo_test_t; + +topo_test_t topo_test_init(topo_t *T); +void topo_test_velfront(topo_test_t *Tt, topo_t *T); +void topo_test_velback(topo_test_t *Tt, topo_t *T); +void topo_test_velx(const topo_test_t *Tt, topo_t *T); +void topo_test_stress(const topo_test_t *Tt, topo_t *T); +void topo_test_stress_interior(const topo_test_t *Tt, topo_t *T); +void topo_test_stress_sides(const topo_test_t *Tt, topo_t *T); +int topo_test_finalize(const topo_test_t *Tt, topo_t *T); + +// Tests +int topo_test_constx(const topo_test_t *Tt, const topo_t *T); +int topo_test_consty(const topo_test_t *Tt, const topo_t *T); +int topo_test_linx(const topo_test_t *Tt, const topo_t *T); +int topo_test_liny(const topo_test_t *Tt, const topo_t *T); +int topo_test_diffconstx(const topo_test_t *Tt, const topo_t *T); +int topo_test_diffconsty(const topo_test_t *Tt, const topo_t *T); +int topo_test_diffconstz(const topo_test_t *Tt, const topo_t *T); +int topo_test_difflinx(const topo_test_t *Tt, const topo_t *T); +int topo_test_diffliny(const topo_test_t *Tt, const topo_t *T); +int topo_test_difflinz(const topo_test_t *Tt, const topo_t *T); +int topo_test_diffquadx(const topo_test_t *Tt, const topo_t *T); +int topo_test_diffquady(const topo_test_t *Tt, const topo_t *T); +int topo_test_diffquadz(const topo_test_t *Tt, const topo_t *T); +int topo_test_velconst(const topo_test_t *Tt, const topo_t *T); +int topo_test_vellinx(const topo_test_t *Tt, const topo_t *T); +int topo_test_velliny(const topo_test_t *Tt, const topo_t *T); +int topo_test_vellinz(const topo_test_t *Tt, const topo_t *T); +int topo_test_velquadx(const topo_test_t *Tt, const topo_t *T); +int topo_test_velquady(const topo_test_t *Tt, const topo_t *T); +int topo_test_velquadz(const topo_test_t *Tt, const topo_t *T); +int topo_test_velfrontback(const topo_test_t *Tt, const topo_t *T); +int topo_test_strconst(const topo_test_t *Tt, const topo_t *T); +int topo_test_strlinx(const topo_test_t *Tt, const topo_t *T); +int topo_test_strliny(const topo_test_t *Tt, const topo_t *T); +int topo_test_strlinz(const topo_test_t *Tt, const topo_t *T); +int topo_test_strquadx(const topo_test_t *Tt, const topo_t *T); +int topo_test_strquady(const topo_test_t *Tt, const topo_t *T); +int topo_test_strquadz(const topo_test_t *Tt, const topo_t *T); + +// Test helper functions +int topo_test_fcn(fcnp fp, const topo_t *T, const _prec *dres, const _prec tol, + const _prec *args, const int *regions, _prec *ferr); + +int topo_test_stress_fcn(fcnp fp, check_fun check_fp, + const topo_t *T, const _prec *dres, + const _prec tol, + const _prec *args, + const int *regions, _prec *ferr); + +int topo_test_velocity_fcn(fcnp fp, check_fun check_fp, + const topo_t *T, const _prec *dres, + const _prec tol, + const _prec *args, + const int *regions, _prec *ferr); + +#endif diff --git a/tests/topography/geometry/test_geometry.c b/tests/topography/geometry/test_geometry.c index 5ebb245..a7ddf51 100644 --- a/tests/topography/geometry/test_geometry.c +++ b/tests/topography/geometry/test_geometry.c @@ -149,9 +149,9 @@ void test_incline_plane(const int write_vtk, const int rank) _prec *y1 = malloc(sizeof(y1) * y1_grid.size); _prec *z1 = malloc(sizeof(z1) * z1_grid.size); - grid_fill1(x1, x1_grid); - grid_fill1(y1, y1_grid); - grid_fill1(z1, z1_grid); + grid_fill1(x1, x1_grid, 1); + grid_fill1(y1, y1_grid, 0); + grid_fill1(z1, z1_grid, 0); _prec *x = malloc(topography_grid.num_bytes); _prec *y = malloc(topography_grid.num_bytes); diff --git a/tests/topography/readers/test_serial_reader.c b/tests/topography/readers/test_serial_reader.c index f9962d3..6a4afda 100644 --- a/tests/topography/readers/test_serial_reader.c +++ b/tests/topography/readers/test_serial_reader.c @@ -90,9 +90,9 @@ void init_geometry(prec **f, const int *gsize, const int3_t coord, _prec *y1 = malloc(sizeof(y1) * y1_grid.size); _prec *z1 = malloc(sizeof(z1) * z1_grid.size); - grid_fill1(x1, x1_grid); - grid_fill1(y1, y1_grid); - grid_fill1(z1, z1_grid); + grid_fill1(x1, x1_grid, 1); + grid_fill1(y1, y1_grid, 0); + grid_fill1(z1, z1_grid, 0); _prec *x = malloc(topography_grid.num_bytes); _prec *y = malloc(topography_grid.num_bytes); diff --git a/tests/topography/sources/CMakeLists.txt b/tests/topography/sources/CMakeLists.txt index 552f84d..0f36f09 100644 --- a/tests/topography/sources/CMakeLists.txt +++ b/tests/topography/sources/CMakeLists.txt @@ -25,6 +25,9 @@ target_include_directories(test_topography_sources_dm ${AWP_MINI_SOURCE_DIR}/include/ ) +add_test(NAME test_topography_sources_dm COMMAND + test_topography_sources_dm) + add_test(NAME test_topography_sources COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 --oversubscribe test_topography_sources diff --git a/tests/topography/sources/test_sources.c b/tests/topography/sources/test_sources.c index 2e08a4c..37322cb 100644 --- a/tests/topography/sources/test_sources.c +++ b/tests/topography/sources/test_sources.c @@ -76,7 +76,7 @@ int test_sources(const char *inputfile, int rank, int size, const int px) test_t test; test = test_init(" * sources_init", rank, size); - sources_init(inputfile, grids, ngrids, NULL, MPI_COMM_WORLD, rank, size); + sources_init(inputfile, grids, ngrids, NULL, NULL, MPI_COMM_WORLD, rank, size); err = test_finalize(&test, err); input_t input; diff --git a/tests/topography/sources/test_sources_dm.c b/tests/topography/sources/test_sources_dm.c index 1520827..c2053c8 100644 --- a/tests/topography/sources/test_sources_dm.c +++ b/tests/topography/sources/test_sources_dm.c @@ -16,10 +16,13 @@ #include #include #include +#include +#include #include #include +#include #include -int test_sources_dm(const char *inputfile, int rank, int size, const int px); +int test_sources_dm(const char *inputfile, int rank, int size, const int px, const enum grid_types grid, const enum eshift grid2, const int3_t src1, const int3_t src2, const int3_t src3, int run_test); int main(int argc, char **argv) { @@ -29,46 +32,71 @@ int main(int argc, char **argv) MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); - char inputfile[STR_LEN]; + int px = 2; - if (argc == 2) { - assert(strlen(argv[1]) < STR_LEN); - sprintf(inputfile, "%s", argv[1]); - } - else { - sprintf(inputfile, "../tests/fixtures/source_dm.txt"); - } - if (rank == 0) { - test_divider(); - printf("Testing test_sources_dm.c\n"); - } + int3_t src1 = {11, 11, 0}; + int3_t src2 = {5, 5, 0}; + int3_t src3 = {3, 3, 0}; - test_sources_dm(inputfile, rank, size, px); + if (argc == 2) { + printf("Source input file: %s \n", argv[1]); + test_sources_dm(argv[1], rank, size, px, XY, GRID_XY, src1, src2, src3, 0); + test_sources_dm(argv[1], rank, size, px, XZ, GRID_XZ, src1, src2, src3, 0); + test_sources_dm(argv[1], rank, size, px, YZ, GRID_YZ, src1, src2, src3, 0); + test_sources_dm(argv[1], rank, size, px, XX, GRID_XX, src1, src2, src3, 0); + test_sources_dm(argv[1], rank, size, px, X, GRID_U1, src1, src2, src3, 0); + test_sources_dm(argv[1], rank, size, px, Y, GRID_U2, src1, src2, src3, 0); + test_sources_dm(argv[1], rank, size, px, Z, GRID_U3, src1, src2, src3, 0); + } else { + + if (rank == 0) { + test_divider(); + printf("Testing test_sources_dm.c\n"); + } + + test_sources_dm("source_xy.txt", rank, size, px, XY, GRID_XY, src1, src2, src3, 1); + test_sources_dm("source_xz.txt", rank, size, px, XZ, GRID_XZ, src1, src2, src3, 1); + test_sources_dm("source_yz.txt", rank, size, px, YZ, GRID_YZ, src1, src2, src3, 1); + test_sources_dm("source_xx.txt", rank, size, px, XX, GRID_XX, src1, src2, src3, 1); + test_sources_dm("source_x.txt", rank, size, px, X, GRID_U1, src1, src2, src3, 1); + test_sources_dm("source_y.txt", rank, size, px, Y, GRID_U2, src1, src2, src3, 1); + test_sources_dm("source_z.txt", rank, size, px, Z, GRID_U3, src1, src2, src3, 1); + + if (rank == 0) { + printf("Testing completed.\n"); + test_divider(); + } - if (rank == 0) { - printf("Testing completed.\n"); - test_divider(); } + MPI_Finalize(); return test_last_error(); } -int test_sources_dm(const char *inputfile, int rank, int size, const int px) +int test_sources_dm(const char *sourcefile, int rank, int size, const int px, const enum grid_types grid, const enum eshift grid2, const int3_t src1, const int3_t src2, const int3_t src3, int run_test) { + + char inputfile[STR_LEN]; + if (run_test) + sprintf(inputfile, "../../../../tests/fixtures/%s", sourcefile); + else + sprintf(inputfile, "%s", sourcefile); + int coord_x = rank / px; int coord_y = rank % px; int coord_z = 0; // Grid points on the coarse grid int nx = 11; int ny = 11; - int nz = 11; + int nz = 11;; prec h = 1.0; int ngrids = 3; int err = 0; + int nzs[3] = {nz, nz, nz}; grids_t grids[3] = { grids_init(9 * nx, 9 * ny, nz, coord_x, coord_y, coord_z, 0, h), @@ -79,18 +107,31 @@ int test_sources_dm(const char *inputfile, int rank, int size, const int px) test_t test; - test = test_init(" * sources_dm", rank, size); - sources_init(inputfile, grids, ngrids, NULL, MPI_COMM_WORLD, rank, size); - source_t Mxx = sources_get_source(XX); + char testname[STR_LEN]; + sprintf(testname, " * sources_dm: %s", grid_shift_label(grid2)); + + if (run_test) test = test_init(testname, rank, size); + source_t M; + if (grid2 == GRID_U1 || grid2 == GRID_U2 || grid2 == GRID_U3) { + receivers_init(inputfile, grids, ngrids, NULL, MPI_COMM_WORLD, rank, size); + M = receivers_get_receiver(grid); + } + else { + sources_init(inputfile, grids, ngrids, NULL, NULL, MPI_COMM_WORLD, rank, size); + M = sources_get_source(grid); + } for (size_t i = 0; i < (size_t)ngrids; ++i) { - grid3_t xx = grids[i].xx; - printf(" - Grid: %ld, grid spacing: %g \n", i, xx.gridspacing); - for (size_t j = 0; j < Mxx.lengths[i]; ++j) { + grid3_t x = grids_select(grid, &grids[i]); + + if (!run_test) { + printf(" - Grid: %ld, grid spacing: %g \n", i, x.gridspacing); + } + for (size_t j = 0; j < M.lengths[i]; ++j) { grid3_t vel_grid = grid_init_velocity_grid( - xx.inner_size, xx.shift, xx.coordinate, - xx.boundary1, xx.boundary2, xx.gridspacing); + x.inner_size, x.shift, x.coordinate, + x.boundary1, x.boundary2, x.gridspacing); grid1_t x_grid = grid_grid1_x(vel_grid); grid1_t y_grid = grid_grid1_y(vel_grid); grid1_t z_grid = grid_grid1_z(vel_grid); @@ -99,9 +140,9 @@ int test_sources_dm(const char *inputfile, int rank, int size, const int px) prec *y1 = malloc(sizeof y1 * y_grid.size); prec *z1 = malloc(sizeof z1 * z_grid.size); - grid_fill1(x1, x_grid); - grid_fill1(y1, y_grid); - grid_fill1(z1, z_grid); + grid_fill1(x1, x_grid, 1); + grid_fill1(y1, y_grid, 0); + grid_fill1(z1, z_grid, 0); // The user coordinate system (user) defines (0, 0, 0) at // material grid point and is a global coordinate system (a // single coordinate system defined for all blocks, irrespective @@ -112,37 +153,46 @@ int test_sources_dm(const char *inputfile, int rank, int size, const int px) // // However, Mxx.x, Mxx.y, Mxx.z contains the coordinates of the // source at a normal stress position in the internal - // coordinates system that shifts by -0.5 * grid spacings in the - // y and z-directions (see shift.c, xx = [0, 1, 1]), - // but with adjustments to the x-direction, - // and y-directions due to the DM and due having (0, 0, 0) at a - // material point in the user coordinate system. + // coordinates system that shifts by (0.5 h, -0.5 h, -0.5 h) + // (see shift.c, xx = [1, 1, 1]), // // - int ix = Mxx.interpolation[i].ix[j] - ngsl; - int iy = Mxx.interpolation[i].iy[j] - ngsl; - int iz = Mxx.interpolation[i].iz[j]; + int ix = M.interpolation[i].ix[j] - ngsl; + int iy = M.interpolation[i].iy[j] - ngsl; + int iz = M.interpolation[i].iz[j]; // Once setup has been confirmed, we can add some test cases to // ensure that we don't break this configuration in the future. - if (i == 0) err |= s_assert(ix == 4); - if (i == 1) err |= s_assert(ix == 1); - if (i == 2) err |= s_assert(ix == 0); + if (run_test) { + if (i == 0) err |= s_assert(ix == src1.x); + if (i == 1) err |= s_assert(ix == src2.x); + if (i == 2) err |= s_assert(ix == src3.x); + + if (i == 0) err |= s_assert(iy == src1.y); + if (i == 1) err |= s_assert(iy == src2.y); + if (i == 2) err |= s_assert(iy == src3.y); + } + // Check that the global z-coordinate maps to the correct local z-coordinate + _prec zloc; + int block_index; + global_to_local(&zloc, &block_index, M.zu[i][j], + 1.0, nzs, 3, 0); + err |= s_assert((size_t)block_index == i); + err |= s_assert(fabs(zloc - M.z[i][j]) < FLTOL); - //FIXME: Resolve the y-direction - //if (i == 0) err |= s_assert(iy == 2); - printf(" - Mxx(%ld), index = [%d, %d, %d]\n"\ + if (err > 0 || !run_test) + printf(" - %s(%ld), index = [%d, %d, %d]\n"\ " user(x, y, z) = [%g, %g, %g],\n"\ " int(x, y, z) = [%g, %g, %g]\n"\ " int x = [%g %g %g ... ]\n"\ " int y = [%g %g %g ... ]\n"\ " int z = [%g %g %g ... ]\n", - j, + grid_shift_label(grid2), j, ix, iy, iz, - Mxx.xu[i][j], Mxx.yu[i][j], Mxx.zu[i][j], - Mxx.x[i][j], Mxx.y[i][j], Mxx.z[i][j], + M.xu[i][j], M.yu[i][j], M.zu[i][j], + M.x[i][j], M.y[i][j], M.z[i][j], x1[0], x1[1], x1[2], y1[0], y1[1], y1[2], z1[0], z1[1], z1[2]); @@ -152,9 +202,14 @@ int test_sources_dm(const char *inputfile, int rank, int size, const int px) } } + if (run_test) err = test_finalize(&test, err); - sources_finalize(); + if (grid2 == GRID_U1 || grid2 == GRID_U2 || grid2 == GRID_U3) { + receivers_finalize(); + } else { + sources_finalize(); + } grids_finalize(grids); return test_last_error(); diff --git a/tools/OpenFD/openfd/base/gridfunction.py b/tools/OpenFD/openfd/base/gridfunction.py index 0d57f69..52745c6 100644 --- a/tools/OpenFD/openfd/base/gridfunction.py +++ b/tools/OpenFD/openfd/base/gridfunction.py @@ -1,5 +1,5 @@ from sympy import Expr, Symbol, Tuple, sympify -from sympy.core.compatibility import NotIterable, string_types, is_sequence +from sympy.core.compatibility import NotIterable , is_sequence from sympy import preorder_traversal from sympy.core.cache import clear_cache from sympy.core.mul import Mul @@ -8,6 +8,8 @@ from .. dev.macro import Macro import openfd +string_types=str + def gridfunctions(label, shape, dtype=None, layout=None, struct=False, remap=None, macro='_'): """ diff --git a/tools/OpenFD/openfd/dev/variable.py b/tools/OpenFD/openfd/dev/variable.py index cebb5d3..6ba9a7e 100644 --- a/tools/OpenFD/openfd/dev/variable.py +++ b/tools/OpenFD/openfd/dev/variable.py @@ -1,8 +1,10 @@ from ..base import GridFunctionExpression, GridFunction -from sympy.core.compatibility import NotIterable, string_types +from sympy.core.compatibility import NotIterable from sympy import Expr, Symbol, sympify from . types import C +string_types=str + class Variable(Expr, NotIterable): def __new__(cls, label, val=None, dtype=None, diff --git a/tools/kernel_generation/Makefile b/tools/kernel_generation/Makefile index 0ac2140..1086080 100644 --- a/tools/kernel_generation/Makefile +++ b/tools/kernel_generation/Makefile @@ -1,5 +1,5 @@ ifndef $(${AWP_OPT}) -AWP_OPT=../.. +AWP_OPT=../../ $(warning "The environment variable AWP_OPT is not set. Set it to the path to export kernels to") $(info "Using default value: ${AWP_OPT}) endif diff --git a/tools/kernel_generation/mms.py b/tools/kernel_generation/mms.py index cd4ce35..f215641 100644 --- a/tools/kernel_generation/mms.py +++ b/tools/kernel_generation/mms.py @@ -8,16 +8,27 @@ x = sp.symbols('x y z') t = sp.symbols('t') -vx = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) -vy = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) -vz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) - -sxx = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) -syy = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) -szz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) -sxy = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) -sxz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) -syz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2]) +# shifts to remove exact solutions from axis of symmetry +phi_1 = 1.2 +phi_2 = 0.25 +phi_3 = 0.4 +phi_4 = 0.7 +phi_5 = 0.3 +phi_6 = 0.12 +phi_7 = 0.02 +phi_8 = 0.47 +phi_9 = 0.33 + +vx = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_1) / k +vy = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_2) / k +vz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_3) / k + +sxx = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_4) / k +syy = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_5) / k +szz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_6) / k +sxy = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_7) / k +sxz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_8) / k +syz = sp.sin(k*x[0])*sp.sin(k*x[1])*sp.sin(k*x[2] + phi_9) / k v = [vx, vy, vz] s = sp.zeros(3) @@ -36,7 +47,7 @@ def mms(state, field, value): "const _prec *properties)"%(state, field)) print("{") print(" _prec k = properties[0];"); - print(" return %s;" % value) + print(" return %s;" % sp.ccode(value)) print("}") print("") diff --git a/tools/kernel_generation/scheme.py b/tools/kernel_generation/scheme.py index 321b35e..a186522 100644 --- a/tools/kernel_generation/scheme.py +++ b/tools/kernel_generation/scheme.py @@ -100,9 +100,9 @@ def velocity(label, buf=0, debug=0, debug_ops=0, use_cartesian=0): print("Generating velocity kernels: %s. "%label) - rho1 = fd.Variable('rho1', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'y', 1), 'z', 1)) - rho2 = fd.Variable('rho2', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', 1), 'z', 1)) - rho3 = fd.Variable('rho3', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', 1), 'y', 1)) + rho1 = fd.Variable('rho1', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'y', G.u1[1]), 'z', G.u1[2])) + rho2 = fd.Variable('rho2', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', G.u2[0]), 'z', G.u2[2])) + rho3 = fd.Variable('rho3', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', G.u3[0]), 'y', G.u3[1])) # Jacobians J1 = F.f_1 * F.g3_c @@ -232,8 +232,8 @@ def velocity(label, buf=0, debug=0, debug_ops=0, use_cartesian=0): rhs_indices = lambda idx : (idx[0], idx[1] + rj0, idx[2] - 6) index_bounds = (0,1,0) else: - lhs_indices = lambda idx : (idx[0], idx[1], idx[2] - 6) - rhs_indices = lambda idx : (idx[0], idx[1], idx[2] - 6) + lhs_indices = lambda idx : (idx[0], idx[1], idx[2]) + rhs_indices = lambda idx : (idx[0], idx[1], idx[2]) index_bounds = (1,1,0) kernels = kg.make_kernel(label, @@ -282,9 +282,9 @@ def stress(label, debug=0, debug_ops=0, use_cartesian=0): F.u3 = F.w1 a, nu = sp.symbols('a nu') - rho1 = fd.Variable('rho1', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'y', 1), 'z', 1)) - rho2 = fd.Variable('rho2', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', 1), 'z', 1)) - rho3 = fd.Variable('rho3', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', 1), 'y', 1)) + rho1 = fd.Variable('rho1', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'y', G.u1[1]), 'z', G.u1[2])) + rho2 = fd.Variable('rho2', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', G.u2[0]), 'z', G.u2[2])) + rho3 = fd.Variable('rho3', dtype=fd.prec, val=Pavg(Pavg(F.rho, 'x', G.u3[0]), 'y', G.u3[1])) Jii = fd.Variable('Jii', dtype=fd.prec, val=F.f_c*F.g3_c) J12i = fd.Variable('J12i', dtype=fd.prec, val=F.f*F.g3_c) From d93d303ea0998347185410e77648f57676dcfd41 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sun, 27 Jun 2021 12:17:14 -0700 Subject: [PATCH 38/56] Fix mapping (#17) Modifies the mapping in the overlap zone such that it is compatible with the DM. * fix incorrect placement of density and incorrect interpolation of density in force computation. * begin mms module. * add mms files. * fix density interpolation. * comment out work in progress code. * override material properties. * initialize mms solution. * add forcing functions. * Use plane wave solutions. * remove unused libraries, duplicate error header file, and receiver input file to mms module. * delete unused kernels. * remove block size from definitions.h and remove this dependency from some of the files. * update mms so that uses both P and S plane waves. * Fix kernel generator so that it runs with updated sympy version, and fix off by one errors in density interpolation. * Fix off by 0.5h error for source/receiver placement of components that are located at the cell-centered grid points in the z-direction. This fix only applies to the DM. * start adding point force suppport for the traditional bc. * fix placement of receivers on the free surface for regular AWP. * add surface force to original AWP. doesn't pass the reciprocity test. * Implement point forces in original AWP using stress perturbations. Passes the reciprocity test. * apply symmetry-based boundary conditions, and add body force. * start reintroducing convergence and energy tests. * interior convergence for the velocity field is working. * Cartesian velocity convergence tests shows second order convergence. Added option to enable/disable application of bc. * get interior stress convergence working. * convergence test might be working for a cartesian geometry. It is hard to tell in single precision. * add option to have double-precision topography files. * remove double-precision support because it doesn't work. * put the truncation error test as part of the unit test. Document the test. * add force extrapolation. * update grid printing. * remove broken test. * restore original AWP FS implementation. * add accuracy test data. * set c++ standard. * apply most recent mms changes. * add new grid implementation that maps the global z coordinate to the local block coordinate. * add arg to grid_fill1 that corrects for AWP's (-,+,+) choice. Currently, the correction is not applied. * remove shift in x-direction. Causes several tests to fail. * fix convergence test. * fix broken interpolation test. * fix broken grid_3d test. * fix broken metrics tests. * update dm source/receiver test so that it checks all components. * remove module grid_new. * change grid number identification process. * change to default AWP force implementation. * restore find_grid_number * remove old arch flags. * fix mms so that it works with grid stretching. * reintroduce mapping so that grid stretching function achieves zero at the overlap zone. * add mapping to vx. * add mapping to vy. * add mapping to xz, yz. * change overlap zone point. * add mapping to velocity buffers. Co-authored-by: Ossian O'Reilly --- include/topography/mapping.cuh | 17 +++-- include/topography/mapping.h | 5 ++ src/topography/geometry/geometry.c | 9 ++- src/topography/kernels/stress_index_unroll.cu | 23 +++++-- src/topography/kernels/velocity.cu | 65 +++++++++++++++++++ src/topography/kernels/velocity_unroll.cu | 57 +++++++++++++++- src/topography/mms.cu | 17 +++-- src/topography/sources/source.c | 28 +++++++- 8 files changed, 195 insertions(+), 26 deletions(-) create mode 100644 include/topography/mapping.h diff --git a/include/topography/mapping.cuh b/include/topography/mapping.cuh index acc30b9..fad642b 100644 --- a/include/topography/mapping.cuh +++ b/include/topography/mapping.cuh @@ -1,20 +1,19 @@ -#ifndef _TOPOGRAPHY_MAPPING_H -#define _TOPOGRAPHY_MAPPING_H - +#ifndef _TOPOGRAPHY_MAPPING_CUH +#define _TOPOGRAPHY_MAPPING_CUH +#include #define TOL 1e-4 -#define MAPPING_START_POINT 7 + __device__ __host__ __inline__ float topo_mapping0(const float f, const float r, const float h, const int n) { float l = (n - 2) * h; float d1 = h * 6.0; - //printf("f = %g \n", f); - if (r < h * MAPPING_START_POINT) return (r - h * MAPPING_START_POINT); + if (r < h * MAPPING_START_POINT) return r; else - return f * (r - h * MAPPING_START_POINT); - //return (r*(-l + r) - r*(-d1 + r)*f)/(d1 - l); -} + return f * (r - h * MAPPING_START_POINT) + h * MAPPING_START_POINT; +} + // Differentiate mapping with respect to r1, r2 __device__ __host__ __inline__ float topo_mapping(const float f_1, const float r, diff --git a/include/topography/mapping.h b/include/topography/mapping.h new file mode 100644 index 0000000..e88ca7f --- /dev/null +++ b/include/topography/mapping.h @@ -0,0 +1,5 @@ +#ifndef _TOPOGRAPHY_MAPPING_H +#define _TOPOGRAPHY_MAPPING_H +#define MAPPING_START_POINT 7 + +#endif diff --git a/src/topography/geometry/geometry.c b/src/topography/geometry/geometry.c index 034b64e..2e84bfd 100644 --- a/src/topography/geometry/geometry.c +++ b/src/topography/geometry/geometry.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -38,7 +39,11 @@ void geom_no_grid_stretching(g_grid_t *metrics_g) grid1.boundary1 = 0; grid1.boundary2 = 1; grid_fill1(&metrics_g->g[grid1.alignment], grid1, 0); - + // Shift grid vector so that the internal coordinate system places z = 0 at the first grid + // point immediately above the DM overlap zone + for (int i = 0; i < grid1.size; ++i) { + metrics_g->g[i + grid1.alignment] -= MAPPING_START_POINT * grid1.gridspacing; + } } void geom_gaussian(f_grid_t *metrics_f, const _prec *x, const _prec *y, @@ -199,7 +204,7 @@ void geom_custom(const f_grid_t *metrics_f, const grid3_t grid, const int px, // 0 <= z' < =1 // This normalization constant is used so that the user can specify // block dimension using physical units. - _prec normalize = 1.0 / grid.gridspacing / (grid.size.z - 2); + _prec normalize = 1.0 / grid.gridspacing / (grid.size.z - 2 - MAPPING_START_POINT); for (int i = 0; i < len_x; ++i) { for (int j = 0; j < len_y; ++j) { diff --git a/src/topography/kernels/stress_index_unroll.cu b/src/topography/kernels/stress_index_unroll.cu index a4ab210..0cae4af 100644 --- a/src/topography/kernels/stress_index_unroll.cu +++ b/src/topography/kernels/stress_index_unroll.cu @@ -15,6 +15,7 @@ #define RSTRCT __restrict__ #define LDG(x) x +#define OVERLAP_ZONE_INDEX 8 template __launch_bounds__ (tx*ty*tz) @@ -363,16 +364,25 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, w1_im2 = w1[pos_im2]; + float mapping = 1.0; + if (k - align < OVERLAP_ZONE_INDEX) + mapping = 0.0; + // xx, yy, zz _prec Jii = _f_c(i, j) * _g3_c(k); Jii = 1.0 * 1.0 / Jii; + if (k - align < OVERLAP_ZONE_INDEX) + Jii = 1.0; + + + vs1 = dx4[1] * u1[p0p0p0] + dx4[0] * u1[m1p0p0] + dx4[2] * u1[p1p0p0] + dx4[3] * u1[p2p0p0] - - Jii * _g_c(k) * + mapping * Jii * _g_c(k) * ( px4[0] * _f1_1(i - 1, j) * ( @@ -419,7 +429,7 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, vs2 = dhy4[2] * v1[p0p0p0] + dhy4[0] * v1[p0m2p0] + dhy4[1] * v1[p0m1p0] + dhy4[3] * v1[p0p1p0] - - Jii * _g_c(k) * + mapping * Jii * _g_c(k) * (phy4[0] * _f2_2(i, j - 2) * ( phdz4[0] * v1[p0m2m3] + @@ -498,7 +508,7 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, vs1 = dy4[1] * u1[p0p0p0] + dy4[0] * u1[p0m1p0] + dy4[2] * u1[p0p1p0] + dy4[3] * u1[p0p2p0] - - J12i * _g_c(k) * + mapping * J12i * _g_c(k) * ( py4[0] * _f2_1(i, j - 1) * ( @@ -540,7 +550,7 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, vs2 = dhx4[2] * v1[p0p0p0] + dhx4[0] * v1[m2p0p0] + dhx4[1] * v1[m1p0p0] + dhx4[3] * v1[p1p0p0] - - J12i * _g_c(k) * + mapping * J12i * _g_c(k) * ( phx4[0] * _f1_2(i - 2, j) * ( @@ -594,6 +604,8 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, _prec J13i = _f_1(i, j) * _g3(k); J13i = 1.0 * 1.0 / J13i; + if (k - align < OVERLAP_ZONE_INDEX) + J13i = 1.0; vs1 = J13i * (dz4[1] * u1[p0p0p0] + dz4[0] * u1[p0p0m1] + dz4[2] * u1[p0p0p1] + dz4[3] * u1[p0p0p2]); @@ -649,6 +661,8 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, _prec J23i = _f_2(i, j) * _g3(k); J23i = 1.0 * 1.0 / J23i; + if (k - align < OVERLAP_ZONE_INDEX) + J23i = 1.0; vs1 = J23i * (dz4[1] * v1[p0p0p0] + dz4[0] * v1[p0p0m1] + dz4[2] * v1[p0p0p1] + dz4[3] * v1[p0p0p2]); vs2 = @@ -739,3 +753,4 @@ __global__ void dtopo_str_111_index_unroll(_prec* RSTRCT xx, _prec* RSTRCT yy, } +#undef OVERLAP_ZONE_INDEX diff --git a/src/topography/kernels/velocity.cu b/src/topography/kernels/velocity.cu index db6426c..ee084e7 100644 --- a/src/topography/kernels/velocity.cu +++ b/src/topography/kernels/velocity.cu @@ -5,6 +5,8 @@ #include #include + +#define OVERLAP_ZONE_INDEX 8 #ifndef APPLY_BC #define APPLY_BC 1 #endif @@ -2521,6 +2523,7 @@ __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) 0.25 * (_rho(i, j + rj0, k) + _rho(i - 1, j + rj0, k)); _prec rho3 = 0.25 * (_rho(i, j + rj0, k) + _rho(i - 1, j + rj0, k)) + 0.25 * (_rho(i, j + rj0 - 1, k) + _rho(i - 1, j + rj0 - 1, k)); + _prec Ai1 = _f_1(i, j + rj0) * _g3_c(k) * rho1; Ai1 = nu * 1.0 / Ai1; _prec Ai2 = _f_2(i, j + rj0) * _g3_c(k) * rho2; @@ -2617,6 +2620,26 @@ __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) phy4[1] * _s12(i, j + rj0 - 1, k + 3) + phy4[3] * _s12(i, j + rj0 + 1, k + 3))))) * f_dcrj; + + if (k < OVERLAP_ZONE_INDEX) { + _buf_u1(i, j, k) = + (a * _u1(i, j + rj0, k) + + nu / rho1 * + (dhx4[2] * _s11(i, j + rj0, k) + + dhx4[0] * _s11(i - 2, j + rj0, k) + + dhx4[1] * _s11(i - 1, j + rj0, k) + + dhx4[3] * _s11(i + 1, j + rj0, k) + + dhy4[2] * _s12(i, j + rj0, k) + + dhy4[0] * _s12(i, j + rj0 - 2, k) + + dhy4[1] * _s12(i, j + rj0 - 1, k) + + dhy4[3] * _s12(i, j + rj0 + 1, k) + + dhz4[2] * _s13(i, j + rj0, k) + + dhz4[0] * _s13(i, j + rj0, k - 2) + + dhz4[1] * _s13(i, j + rj0, k - 1) + + dhz4[3] * _s13(i, j + rj0, k + 1) + )) * f_dcrj; + } + _buf_u2(i, j, k) = (a * _u2(i, j + rj0, k) + Ai2 * @@ -2702,6 +2725,26 @@ __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) py4[2] * _s22(i, j + rj0 + 1, k + 3) + py4[3] * _s22(i, j + rj0 + 2, k + 3))))) * f_dcrj; + + if ( k < OVERLAP_ZONE_INDEX) { + _buf_u2(i, j, k) = + (a * _u2(i, j + rj0, k) + + nu / rho2 * + (dhz4[2] * _s23(i, j + rj0, k) + + dhz4[0] * _s23(i, j + rj0, k - 2) + + dhz4[1] * _s23(i, j + rj0, k - 1) + + dhz4[3] * _s23(i, j + rj0, k + 1) + + dx4[1] * _s12(i, j + rj0, k) + + dx4[0] * _s12(i - 1, j + rj0, k) + + dx4[2] * _s12(i + 1, j + rj0, k) + + dx4[3] * _s12(i + 2, j + rj0, k) + + dy4[1] * _s22(i, j + rj0, k) + + dy4[0] * _s22(i, j + rj0 - 1, k) + + dy4[2] * _s22(i, j + rj0 + 1, k) + + dy4[3] * _s22(i, j + rj0 + 2, k)) + ) * f_dcrj; + } + _buf_u3(i, j, k) = (a * _u3(i, j + rj0, k) + Ai3 * @@ -2788,6 +2831,26 @@ __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) phy4[1] * _s23(i, j + rj0 - 1, k + 3) + phy4[3] * _s23(i, j + rj0 + 1, k + 3))))) * f_dcrj; + + if ( k < OVERLAP_ZONE_INDEX) { + _buf_u3(i, j, k) = + (a * _u3(i, j + rj0, k) + + nu / rho3 * + (dhy4[2] * _s23(i, j + rj0, k) + + dhy4[0] * _s23(i, j + rj0 - 2, k) + + dhy4[1] * _s23(i, j + rj0 - 1, k) + + dhy4[3] * _s23(i, j + rj0 + 1, k) + + dx4[1] * _s13(i, j + rj0, k) + + dx4[0] * _s13(i - 1, j + rj0, k) + + dx4[2] * _s13(i + 1, j + rj0, k) + + dx4[3] * _s13(i + 2, j + rj0, k) + + dz4[1] * _s33(i, j + rj0, k) + + dz4[0] * _s33(i, j + rj0, k - 1) + + dz4[2] * _s33(i, j + rj0, k + 1) + + dz4[3] * _s33(i, j + rj0, k + 2) + ) ) * f_dcrj; + } + #undef _buf_u1 #undef _buf_u2 #undef _buf_u3 @@ -3431,3 +3494,5 @@ __launch_bounds__(DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK) #undef _u3 } +#undef OVERLAP_ZONE_INDEX + diff --git a/src/topography/kernels/velocity_unroll.cu b/src/topography/kernels/velocity_unroll.cu index d5ccdf3..59714aa 100644 --- a/src/topography/kernels/velocity_unroll.cu +++ b/src/topography/kernels/velocity_unroll.cu @@ -5,6 +5,7 @@ __launch_bounds__ (256) #else __launch_bounds__ (128) #endif +#define OVERLAP_ZONE_INDEX 8 __global__ void dtopo_vel_111_unroll( _prec *RSTRCT u1, _prec *RSTRCT u2, _prec *RSTRCT u3, const _prec *RSTRCT dcrjx, const _prec *RSTRCT dcrjy, @@ -245,6 +246,25 @@ __global__ void dtopo_vel_111_unroll( phy4[1] * _s12(i, j + q - 1, k + r + 3) + phy4[3] * _s12(i, j + q + 1, k + r + 3))))) * f_dcrj; + if (k + r < OVERLAP_ZONE_INDEX) { + v1[q][r] = (a * _u1(i, j + q, k + r) + + nu / rho1 * + (dhx4[2] * _s11(i, j + q, k + r) + + dhx4[0] * _s11(i - 2, j + q, k + r) + + dhx4[1] * _s11(i - 1, j + q, k + r) + + dhx4[3] * _s11(i + 1, j + q, k + r) + + dhy4[2] * _s12(i, j + q, k + r) + + dhy4[0] * _s12(i, j + q - 2, k + r) + + dhy4[1] * _s12(i, j + q - 1, k + r) + + dhy4[3] * _s12(i, j + q + 1, k + r) + + dhz4[2] * _s13(i, j + q, k + r) + + dhz4[0] * _s13(i, j + q, k + r - 2) + + dhz4[1] * _s13(i, j + q, k + r - 1) + + dhz4[3] * _s13(i, j + q, k + r + 1))) * + f_dcrj; + } + + v2[q][r] = (a * _u2(i, j + q, k + r) + Ai2 * @@ -327,6 +347,23 @@ __global__ void dtopo_vel_111_unroll( py4[2] * _s22(i, j + q + 1, k + r + 3) + py4[3] * _s22(i, j + q + 2, k + r + 3))))) * f_dcrj; + if (k + r < OVERLAP_ZONE_INDEX) { + v2[q][r] = + (a * _u2(i, j + q, k + r) + + nu / rho2 * + (dhz4[2] * _s23(i, j + q, k + r) + dhz4[0] * _s23(i, j + q, k + r - 2) + + dhz4[1] * _s23(i, j + q, k + r - 1) + dhz4[3] * _s23(i, j + q, k + r + 1) + + dx4[1] * _s12(i, j + q, k + r) + + dx4[0] * _s12(i - 1, j + q, k + r) + + dx4[2] * _s12(i + 1, j + q, k + r) + + dx4[3] * _s12(i + 2, j + q, k + r) + + dy4[1] * _s22(i, j + q, k + r) + + dy4[0] * _s22(i, j + q - 1, k + r) + + dy4[2] * _s22(i, j + q + 1, k + r) + + dy4[3] * _s22(i, j + q + 2, k + r) + )) * f_dcrj; + + } v3[q][r] = (a * _u3(i, j + q, k + r) + Ai3 * @@ -410,6 +447,24 @@ __global__ void dtopo_vel_111_unroll( phy4[1] * _s23(i, j + q - 1, k + r + 3) + phy4[3] * _s23(i, j + q + 1, k + r + 3))))) * f_dcrj; + + if (k + r < OVERLAP_ZONE_INDEX) { + v3[q][r] = (a * _u3(i, j + q, k + r) + + nu / rho3 * + (dhy4[2] * _g3(k + r) * _s23(i, j + q, k + r) + + dhy4[0] * _s23(i, j + q - 2, k + r) + + dhy4[1] * _s23(i, j + q - 1, k + r) + + dhy4[3] * _s23(i, j + q + 1, k + r) + + dx4[1] * _s13(i, j + q, k + r) + + dx4[0] * _s13(i - 1, j + q, k + r) + + dx4[2] * _s13(i + 1, j + q, k + r) + + dx4[3] * _s13(i + 2, j + q, k + r) + + dz4[1] * _s33(i, j + q, k + r) + + dz4[0] * _s33(i, j + q, k + r - 1) + + dz4[2] * _s33(i, j + q, k + r + 1) + + dz4[3] * _s33(i, j + q, k + r + 2))) * + f_dcrj; + } } } @@ -457,5 +512,5 @@ __global__ void dtopo_vel_111_unroll( #undef RSTRCT - +#undef OVERLAP_ZONE_INDEX diff --git a/src/topography/mms.cu b/src/topography/mms.cu index a7162fc..539ba39 100644 --- a/src/topography/mms.cu +++ b/src/topography/mms.cu @@ -19,7 +19,8 @@ float svx0, svy0, svz0, sxx0, syy0, szz0, sxy0, sxz0, syz0; float sdvx, sdvy, sdvz, sdxx, sdyy, sdzz, sdxy, sdxz, sdyz; // Plane wave position -float szc; +float src; + // Grid stretching ratio float stretch_ratio; @@ -164,7 +165,8 @@ __global__ void exact_velocity( float z = topo_mapping0(f, zk(k, pz, Lz, h), h, nz); float zh = topo_mapping0(f, zk(k, pz, Lz, h, 1), h, nz); - float zc = rc;//topo_mapping0(f, rc, h, nz); + float zc = topo_mapping0(f, rc, h, nz); + int line = 2 * align + nz; int slice = line * (4 + 2 * ngsl + ny); @@ -223,7 +225,7 @@ __global__ void exact_stress( float y = yj(j, py, Ly, h); float z = topo_mapping0(f, zk(k, pz, Lz, h), h, nz); float zh = topo_mapping0(f, zk(k, pz, Lz, h, 1), h, nz); - float zc = rc;//topo_mapping0(f, rc, h, nz); + float zc = topo_mapping0(f, rc, h, nz); int line = 2 * align + nz; int slice = line * (4 + 2 * ngsl + ny); @@ -365,7 +367,8 @@ void mms_init(const char *MMSFILE, const int *nxt, &scp0, &scs0, &srho0, &sdcp, &sdcs, &sdrho, &kx, &ky, &kz, &svx0, &svy0, &svz0, &sxx0, &syy0, &szz0, &sxy0, &sxz0, &syz0, &sdvx, &sdvy, &sdvz, &sdxx, &sdyy, - &sdzz, &sdxy, &sdxz, &sdyz, &szc, &stretch_ratio); + &sdzz, &sdxy, &sdxz, &sdyz, &src, &stretch_ratio); + if (parsed != 31 && px == 0 && py == 0) fprintf(stderr, "Failed to parse: %s \n", MMSFILE); @@ -382,7 +385,7 @@ void mms_init(const char *MMSFILE, const int *nxt, printf(" dvx = %g dvy = %g dvz = %g \n", sdvx, sdvy, sdvz); printf(" dxx = %g dyy = %g dzz = %g \n", sdxx, sdyy, sdzz); printf(" dxy = %g dxz = %g dyz = %g \n", sdxy, sdxz, sdyz); - printf(" zc = %g \n", szc); + printf(" rc = %g \n", src); printf(" stretch_ratio = %g \n", stretch_ratio); } @@ -463,7 +466,7 @@ void mms_exact_velocity( sdxy, sdxz, sdyz, scp0, scs0, srho0, sdcp, sdcs, sdrho, - szc, + src, kx, ky, kz, nx, ny, nz, px, py, pz, @@ -499,7 +502,7 @@ void mms_exact_stress( sdxy, sdxz, sdyz, scp0, scs0, srho0, sdcp, sdcs, sdrho, - szc, + src, kx, ky, kz, nx, ny, nz, px, py, pz, diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 76b5ba4..99dbbf9 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -328,9 +329,30 @@ void source_init_common(source_t *src, const char *filename, { // Map to parameter space case INPUT_VOLUME_COORD: - src->z[j][k] = - (block_height + src->z[j][k]) / - f_interp[k]; + //src->z[j][k] = + // (block_height + src->z[j][k]) / + // f_interp[k]; + if (block_height + src->z[j][k] < + MAPPING_START_POINT) { + // Source / receiver is in the overlap + // zone. Output error + fprintf(stderr, + "Source/Receiver cannot exist " + "in the overlap zone on the " + "fine grid\n"); + } else { + // Source / receiver is in the top part + // of the block that experiences the + // curvilinear grid transform + src->z[j][k] = (block_height - + MAPPING_START_POINT * + grid.gridspacing + + src->z[j][k]) / + f_interp[k] + + + MAPPING_START_POINT * + grid.gridspacing; + } break; case INPUT_SURFACE_COORD: src->z[j][k] = z1[z_grid.size - 2]; From 0df29b75c6a4add75000be33717827e8c20b2809 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 1 Jul 2021 12:02:59 -0700 Subject: [PATCH 39/56] Grid stretch (#18) * add new command line options. * add mapping module. * add mapping object to topography. * apply mapping in topography module. * rename mapping functions. * add mapping inversion that determines the parameter space coordinate given the physical coordinate. * fix DM grid stretching problem. --- include/awp/pmcl3d.h | 2 +- include/topography/geometry/geometry.h | 2 + include/topography/mapping.h | 20 +++ include/topography/receivers/receiver.h | 1 + include/topography/receivers/receivers.h | 2 +- include/topography/receivers/sgt.h | 3 +- include/topography/sources/forces.h | 3 +- include/topography/sources/source.h | 3 + include/topography/sources/sources.h | 3 +- include/topography/topography.h | 8 + src/awp/command.c | 21 ++- src/awp/pmcl3d.c | 22 ++- src/topography/CMakeLists.txt | 8 +- src/topography/geometry/CMakeLists.txt | 2 +- src/topography/geometry/geometry.c | 38 ++-- src/topography/mapping.c | 164 ++++++++++++++++++ src/topography/receivers/receiver.c | 3 +- src/topography/receivers/receivers.c | 8 +- src/topography/receivers/sgt.c | 16 +- src/topography/sources/CMakeLists.txt | 2 +- src/topography/sources/forces.c | 9 +- src/topography/sources/source.c | 26 ++- src/topography/sources/sources.c | 14 +- src/topography/topography.c | 10 +- tests/test_attenuation.cu | 2 +- tests/topography/CMakeLists.txt | 1 + tests/topography/accuracy/test_convergence.cu | 2 +- tests/topography/mapping/CMakeLists.txt | 14 ++ tests/topography/mapping/test_mapping.c | 61 +++++++ tests/topography/receivers/test_receivers.c | 2 +- tests/topography/sources/test_sources.c | 2 +- tests/topography/sources/test_sources_dm.c | 4 +- 32 files changed, 397 insertions(+), 81 deletions(-) create mode 100644 src/topography/mapping.c create mode 100644 tests/topography/mapping/CMakeLists.txt create mode 100644 tests/topography/mapping/test_mapping.c diff --git a/include/awp/pmcl3d.h b/include/awp/pmcl3d.h index 8340f1a..06c4a47 100644 --- a/include/awp/pmcl3d.h +++ b/include/awp/pmcl3d.h @@ -36,7 +36,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, int *USETOPO, char *SOURCEFILE, int *USESOURCEFILE, char *RECVFILE, int *USERECVFILE, char *FORCEFILE, int *USEFORCEFILE, - char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE); + char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE, float *DHB, float *DHT); int read_src_ifault_2(int rank, int READ_STEP, char *INSRC, char *INSRC_I2, diff --git a/include/topography/geometry/geometry.h b/include/topography/geometry/geometry.h index e16a1e8..70dd421 100644 --- a/include/topography/geometry/geometry.h +++ b/include/topography/geometry/geometry.h @@ -6,10 +6,12 @@ #define GEOMETRY_H #include +#include #include void geom_cartesian_topography(f_grid_t *metrics_f); void geom_no_grid_stretching(g_grid_t *metrics_g); +void geom_grid_stretching(g_grid_t *metrics_g, const struct mapping *map, const _prec block_height); void geom_gaussian(f_grid_t *metrics_f, const _prec *x, const _prec *y, const fcn_grid_t grid, const _prec amplitude, diff --git a/include/topography/mapping.h b/include/topography/mapping.h index e88ca7f..27960cc 100644 --- a/include/topography/mapping.h +++ b/include/topography/mapping.h @@ -1,5 +1,25 @@ #ifndef _TOPOGRAPHY_MAPPING_H #define _TOPOGRAPHY_MAPPING_H #define MAPPING_START_POINT 7 +#define MAPPING_INVERSION_TOL 1e-2 +#define MAPPING_MAX_ITER 1000 + +struct mapping { + double dzb; + double dzt; + double h; + double r[4]; + double z[4]; + double m[4]; +}; + + + +struct mapping map_init(const double dzb, const double dzt, const double h); +int map_find_cell_r(const double r, const struct mapping *map); +int map_find_cell_z(const double z, const struct mapping *map); +double map_eval(const double r, const struct mapping *map); +double map_eval_derivative(const double r, const struct mapping *map); +double map_invert(const double z, const struct mapping *map, const double eps, const int maxiter); #endif diff --git a/include/topography/receivers/receiver.h b/include/topography/receivers/receiver.h index 16b6f63..aa17908 100644 --- a/include/topography/receivers/receiver.h +++ b/include/topography/receivers/receiver.h @@ -9,6 +9,7 @@ recv_t receiver_init(const char *filename, const enum source_type st, const input_t *input, const grids_t *grids, + const struct mapping *map, const int ngrids, const f_grid_t *f, const int rank, diff --git a/include/topography/receivers/receivers.h b/include/topography/receivers/receivers.h index 8b84e3b..8f6f468 100644 --- a/include/topography/receivers/receivers.h +++ b/include/topography/receivers/receivers.h @@ -9,7 +9,7 @@ #include #include -void receivers_init(const char *filename, const grids_t *grids, int ngrids, +void receivers_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const MPI_Comm comm, const int rank, const int size); void receivers_finalize(void); diff --git a/include/topography/receivers/sgt.h b/include/topography/receivers/sgt.h index 867aab6..55eca16 100644 --- a/include/topography/receivers/sgt.h +++ b/include/topography/receivers/sgt.h @@ -6,9 +6,10 @@ #include #include +#include #include -void sgt_init(const char *filename, const grids_t *grids, int ngrids, +void sgt_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const MPI_Comm comm, const int rank, const int size); void sgt_finalize(void); diff --git a/include/topography/sources/forces.h b/include/topography/sources/forces.h index 481ae54..484a01a 100644 --- a/include/topography/sources/forces.h +++ b/include/topography/sources/forces.h @@ -6,10 +6,11 @@ #include #include +#include #include #include -void forces_init(const char *filename, const grids_t *grids, int ngrids, +void forces_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, const int size, const float *d_rho, const int istopo); int forces_boundary_check(const source_t *Fx); diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index 5192f34..f99e2f4 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -14,6 +14,7 @@ #include #include #include +#include // Offsets in grid spacings factor with respect to the previous grid #define SOURCE_DM_OFFSET_X 0 @@ -60,6 +61,7 @@ source_t source_init(const char *file_end, const enum grid_types grid_type, const input_t *input, const grids_t *grids, + const struct mapping *map, const int ngrids, const f_grid_t *f, const int rank, @@ -77,6 +79,7 @@ void source_init_common(source_t *src, const char *filename, const enum grid_types grid_type, const input_t *input, const grids_t *grids, + const struct mapping *map, const int ngrids, const f_grid_t *f, const int rank, diff --git a/include/topography/sources/sources.h b/include/topography/sources/sources.h index 5adb4e5..b09ff4f 100644 --- a/include/topography/sources/sources.h +++ b/include/topography/sources/sources.h @@ -6,10 +6,11 @@ #include #include +#include #include #include -void sources_init(const char *filename, const grids_t *grids, int ngrids, +void sources_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, const int size); void sources_read(const size_t step); diff --git a/include/topography/topography.h b/include/topography/topography.h index 81ecac5..2118bb3 100644 --- a/include/topography/topography.h +++ b/include/topography/topography.h @@ -11,6 +11,7 @@ #include #include #include +#include // TOPO: Enable topography calls. If disabled, then no topography function calls @@ -204,6 +205,9 @@ typedef struct _prec dth; _prec timestep; _prec gridspacing; + _prec block_height; + _prec gridspacing_bot; + _prec gridspacing_top; // Material properties _prec* __restrict__ rho; _prec* __restrict__ lami; @@ -271,6 +275,8 @@ typedef struct cudaStream_t stream_2; cudaStream_t stream_i; + struct mapping map; + } topo_t; topo_t topo_init(const int USETOPO, @@ -288,6 +294,8 @@ topo_t topo_init(const int USETOPO, int nzt, const _prec dt, const _prec h, + const _prec hb, + const _prec ht, cudaStream_t stream_1, cudaStream_t stream_2, cudaStream_t stream_i diff --git a/src/awp/command.c b/src/awp/command.c index 7e009de..2f1c2c3 100644 --- a/src/awp/command.c +++ b/src/awp/command.c @@ -56,6 +56,8 @@ * FORCEFILE Boundary point force input file * SGTFILE Strain Green's tensor output file * MMSFILE MMS input file +* DHB Grid spacing at the bottom of the curvilinear block +* DHT Grid spacing at the top of the curvilinear block **************************************************************************************************************** */ @@ -137,6 +139,9 @@ const char def_FORCEFILE[IN_FILE_LEN] = ""; const char def_SGTFILE[IN_FILE_LEN] = ""; const char def_MMSFILE[IN_FILE_LEN] = ""; +const _prec def_DHB = -1.0; +const _prec def_DHT = -1.0; + void parsemultiple(char *optarg, int *val); void parsemultiple(char *optarg, int *val){ @@ -163,7 +168,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, int *USETOPO, char *SOURCEFILE, int *USESOURCEFILE, char *RECVFILE, int *USERECVFILE, char *FORCEFILE, int *USEFORCEFILE, - char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE) + char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE, float *DHB, float *DHT) { int p; @@ -230,7 +235,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, extern char *optarg; static const char *optstring = "-T:H:t:A:P:M:D:S:N:V:B:n:I:R:Q:X:Y:Z:x:y:G:z:i:l:h:30:p:s:r:W:1:2:" - "3:11:12:13:21:22:23:100:101:102:103:106:107:109:9:14:o:c:"; + "3:11:12:13:21:22:23:100:101:102:103:106:107:109:9:14:o:c:15:16:"; static struct option long_options[] = { {"TMAX", required_argument, NULL, 'T'}, {"DH", required_argument, NULL, 'H'}, @@ -282,6 +287,8 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, {"FORCEFILE", required_argument, NULL, 9}, {"SGTFILE", required_argument, NULL, 10}, {"MMSFILE", required_argument, NULL, 14}, + {"DHB", required_argument, NULL, 15}, + {"DHT", required_argument, NULL, 16}, }; @@ -454,6 +461,12 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, strcpy(MMSFILE, optarg); *USEMMSFILE = 1; break; + case 15: + *DHB = atof(optarg); + break; + case 16: + *DHT = atof(optarg); + break; default: printf( "Usage: %s \nOptions:\n\t[(-T | --TMAX) " @@ -531,6 +544,10 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, printf( "\n\t[(-14 | --MMSFILE) ]\n\n"); + printf( + "\n\t[(-15 | --DHB) ]\n\n"); + printf( + "\n\t[(-16 | --DHT) ]\n\n"); exit(-1); } } diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index 32ed3c1..c51a408 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -99,6 +99,9 @@ int main(int argc, char **argv) int usemms = 0; char MMSFILE[IN_FILE_LEN]; + float DHB = -1.0; + float DHT = -1.0; + // GPU variables long int num_bytes; float **d_d1; @@ -311,7 +314,9 @@ int main(int argc, char **argv) &SoCalQ, INSRC, INVEL, OUT, INSRC_I2, CHKFILE, &ngrids, &FOLLOWBATHY, INTOPO, &usetopo, SOURCEFILE, &usesourcefile, RECVFILE, &userecvfile, FORCEFILE, &useforcefile, - SGTFILE, &usesgtfile, MMSFILE, &usemms); + SGTFILE, &usesgtfile, MMSFILE, &usemms, &DHB, &DHT); + + #ifndef SEISMIO #ifdef NOBGIO @@ -413,6 +418,9 @@ int main(int argc, char **argv) nyt[p] = NY / PY * grdfct[p]; } + DHB = DHB == -1.0 ? DH[0] : DHB; + DHT = DHT == -1.0 ? DH[0] : DHT; + for (p = 0; p < ngrids; p++) { nzt[p] = NZ[p]; @@ -1695,6 +1703,7 @@ if (!usemms) { f_grid_t *metrics_f = NULL; g_grid_t *metrics_g = NULL; + struct mapping *map = NULL; if (usemms) { if (rank == 0) printf("METHOD OF MANUFACTURED SOLUTIONS ENABLED \n"); @@ -1711,7 +1720,7 @@ if (usemms) { y_rank_F, y_rank_B, coord, dim[0], dim[1], nxt[0], nyt[0], nzt[0], - DT, *DH, + DT, *DH, DHB, DHT, stream_1, stream_2, stream_i); topo_bind(&T, d_d1[0], d_lam[0], d_mu[0], d_qp[0], d_coeff, d_qs[0], d_vx1[0], d_vx2[0], d_ww[0], @@ -1721,6 +1730,7 @@ if (usemms) { d_f_u1[0], d_f_v1[0], d_f_w1[0], d_b_u1[0], d_b_v1[0], d_b_w1[0], d_dcrjx[0], d_dcrjy[0], d_dcrjz[0]); topo_init_metrics(&T); + map = &T.map; if (T.use) { @@ -1747,17 +1757,17 @@ if (usemms) { } if (usesourcefile) - sources_init(SOURCEFILE, grids, ngrids, metrics_f, metrics_g, MCW, rank, + sources_init(SOURCEFILE, grids, map, ngrids, metrics_f, metrics_g, MCW, rank, size_tot); if (userecvfile) - receivers_init(RECVFILE, grids, ngrids, metrics_f, MCW, rank, + receivers_init(RECVFILE, grids, map, ngrids, metrics_f, MCW, rank, size_tot); if (useforcefile) - forces_init(FORCEFILE, grids, ngrids, metrics_f, metrics_g, MCW, rank, + forces_init(FORCEFILE, grids, map, ngrids, metrics_f, metrics_g, MCW, rank, size_tot, (float*)d_d1[0], usetopo); if (usesgtfile) { - sgt_init(SGTFILE, grids, ngrids, metrics_f, MCW, rank, + sgt_init(SGTFILE, grids, map, ngrids, metrics_f, MCW, rank, size_tot); for (p = 0; p < ngrids; p++) { diff --git a/src/topography/CMakeLists.txt b/src/topography/CMakeLists.txt index a0eb827..6a1f370 100644 --- a/src/topography/CMakeLists.txt +++ b/src/topography/CMakeLists.txt @@ -22,6 +22,8 @@ set(HEADERS ${AWP_MINI_SOURCE_DIR}/include/topography/host.h ) +add_library(mapping mapping.c) + set(LIBRARIES ${MPI_C_LIBRARIES} grid @@ -38,7 +40,6 @@ set(LIBRARIES functions ) - add_library(topography topography.c velocity.cu stress.cu geometry.c host.c grids.c mms.cu @@ -58,3 +59,8 @@ target_include_directories(topography PUBLIC ${AWP_MINI_SOURCE_DIR}/include/ ) + +target_include_directories(mapping + PUBLIC + ${AWP_MINI_SOURCE_DIR}/include/ + ) diff --git a/src/topography/geometry/CMakeLists.txt b/src/topography/geometry/CMakeLists.txt index 5f9b901..dad70b3 100644 --- a/src/topography/geometry/CMakeLists.txt +++ b/src/topography/geometry/CMakeLists.txt @@ -10,5 +10,5 @@ target_include_directories(geometry PUBLIC ${AWP_MINI_SOURCE_DIR}/include/ ) -target_link_libraries(geometry grid functions) +target_link_libraries(geometry grid functions mapping) diff --git a/src/topography/geometry/geometry.c b/src/topography/geometry/geometry.c index 2e84bfd..484bdd5 100644 --- a/src/topography/geometry/geometry.c +++ b/src/topography/geometry/geometry.c @@ -46,6 +46,26 @@ void geom_no_grid_stretching(g_grid_t *metrics_g) } } +void geom_grid_stretching(g_grid_t *metrics_g, const struct mapping *map, const _prec block_height) +{ + fcn_grid_t grid = metrics_grid_g(metrics_g); + grid1_t grid1 = grid_grid1_z(grid); + grid1.shift = grid_node().z; + grid1.boundary1 = 0; + grid1.boundary2 = 1; + grid_fill1(&metrics_g->g[grid1.alignment], grid1, 0); + // Shift grid vector so that the internal coordinate system places z = 0 at the first grid + // point immediately above the DM overlap zone + for (int i = 0; i < MAPPING_START_POINT; ++i) { + metrics_g->g[i + grid1.alignment] -= MAPPING_START_POINT * grid1.gridspacing; + } + for (int i = MAPPING_START_POINT; i < grid1.size; ++i) { + double h = 1.0 / (grid1.size - MAPPING_START_POINT - 1); + double r = (i - MAPPING_START_POINT) * h; + metrics_g->g[i + grid1.alignment] = block_height * map_eval(r, map); + } +} + void geom_gaussian(f_grid_t *metrics_f, const _prec *x, const _prec *y, const fcn_grid_t grid, const _prec amplitude, @@ -214,24 +234,6 @@ void geom_custom(const f_grid_t *metrics_f, const grid3_t grid, const int px, } } -void geom_ramp(_prec *out, const fcn_grid_t grid, const f_grid_t *metrics_f, - const _prec *x, const _prec *y, const _prec3_t ramp) { - int len_x = metrics_f->bounds_x[1] - metrics_f->bounds_x[0]; - int len_y = metrics_f->bounds_y[1] - metrics_f->bounds_y[0]; - - int off_x = metrics_f->offset[0] + metrics_f->bounds_x[0]; - int off_y = metrics_f->offset[1] + metrics_f->bounds_y[0]; - for (int i = 0; i < len_x; ++i) { - for (int j = 0; j < len_y; ++j) { - int f_pos = (off_y + j) + (off_x + i) * metrics_f->slice; - int pos = grid.offset1.z + (grid.offset1.y + j) * grid.line + - (grid.offset1.x + i) * grid.slice; - metrics_f->f[f_pos] = ramp.x * x[pos] + ramp.y * y[pos]; - } - } - -} - void geom_mapping_z(_prec *out, const fcn_grid_t grid, const int3_t shift, const f_grid_t *metrics_f, const g_grid_t *metrics_g) { diff --git a/src/topography/mapping.c b/src/topography/mapping.c new file mode 100644 index 0000000..1d5f918 --- /dev/null +++ b/src/topography/mapping.c @@ -0,0 +1,164 @@ +#include +#include +#include +#include +#include + +const int VERBOSE = 0; +#define EPSILON 1e-4 + +void hermite_cubic_basis(double b[4], const double t); +void hermite_cubic_basis_derivative(double db[4], const double t); +void adjust(double *m0, double *m1, const double s); +void grid_stretch(struct mapping *map); + +void hermite_cubic_basis(double b[4], const double t) { + b[0] = (1.0 + 2.0 * t) * (1.0 - t) * (1.0 - t); + b[1] = t * (1.0 - t) * (1.0 - t); + b[2] = t * t * (3.0 - 2.0 * t); + b[3] = t * t * (t - 1.0); +} + +void hermite_cubic_basis_derivative(double db[4], const double t) { + db[0] = 6.0 * t * t - 6.0 * t; + db[1] = 3.0 * t * t - 4.0 * t + 1.0; + db[2] = -6.0 * t * t + 6.0 * t; + db[3] = 3.0 * t * t - 2.0 * t; +} + + +void adjust(double *m0, double *m1, const double s) { + double a = *m0 / s; + double b = *m1 / s; + + if (a < 0 || b < 0) + fprintf(stderr, "%s:%s():%d Non-monotonic mapping function data!\n", + __FILE__, __func__, __LINE__); + + if (a * a + b * b > 9) { + double v = 3.0 / sqrt(a * a + b * b); + *m0 = v * a * s; + *m1 = v * b * s; + } +} + +void grid_stretch(struct mapping *map) { + const double dzb = map->dzb; + const double dzt = map->dzt; + const double h = map->h; + + double s0 = dzb / h; + double s1 = (1.0 - dzb - dzt) / ( 1.0 - 2.0 * h); + double s2 = dzt / h; + + double m0 = s0; + double m1 = 0.5 * (s0 + s1); + double m2 = 0.5 * (s1 + s2); + double m3 = s2; + + adjust(&m0, &m1, s0); + adjust(&m1, &m2, s1); + adjust(&m2, &m3, s2); + + map->m[0] = m0; + map->m[1] = m1; + map->m[2] = m2; + map->m[3] = m3; +} + + +struct mapping map_init(const double dzb, const double dzt, const double h) { + + struct mapping map; + map.dzb = dzb; + map.dzt = dzt; + map.h = h; + map.r[0] = 0.0; + map.r[1] = h; + map.r[2] = 1.0 - h; + map.r[3] = 1.0; + map.z[0] = 0.0; + map.z[1] = dzb; + map.z[2] = 1.0 - dzt; + map.z[3] = 1.0; + + grid_stretch(&map); + + return map; +} + +int map_find_cell_r(const double r, const struct mapping *map) { + if (r < -EPSILON) + fprintf(stderr, "%s:%s():%d Outside interval (r = %f, r < 0)!\n", + __FILE__, __func__, __LINE__, r); + else if (r <= map->h) return 0; + else if (r > map->h && r <= 1.0 - map->h) return 1; + else if (r <= 1.0) return 2; + if (r > 1.0 + EPSILON) + fprintf(stderr, "%s:%s():%d Outside interval (r = %f, r > 1)!\n", + __FILE__, __func__, __LINE__, r); + + return -1; +} + +int map_find_cell_z(const double z, const struct mapping *map) { + if (z < -EPSILON) + fprintf(stderr, "%s:%s():%d Outside interval (z = %f, z < 0)!\n", + __FILE__, __func__, __LINE__, z); + else if (z <= map->dzb) return 0; + else if (z > map->dzb && z <= 1.0 - map->dzt) return 1.0; + else if (z <= 1.0) return 2; + if (z > 1.0 + EPSILON) + fprintf(stderr, "%s:%s():%d Outside interval (z = %f, z > 1)!\n", + __FILE__, __func__, __LINE__, z); + return -1; + +} + +double map_eval(const double r, const struct mapping *map) { + int c = map_find_cell_r(r, map); + double b[4]; + double dr = map->r[c+1] - map->r[c]; + hermite_cubic_basis(b, (r - map->r[c]) / dr); + return b[0] * map->z[c] + dr * map->m[c] * b[1] + b[2] * map->z[c+1] + dr * b[3] * map->m[c+1]; +} + +double map_eval_derivative(const double r, const struct mapping *map) { + int c = map_find_cell_r(r, map); + double b[4]; + double dr = map->r[c+1] - map->r[c]; + hermite_cubic_basis_derivative(b, (r - map->r[c]) / dr); + double d = b[0] * map->z[c] + dr * map->m[c] * b[1] + b[2] * map->z[c+1] + dr * b[3] * map->m[c+1]; + return d / dr; +} + +double map_invert(const double z, const struct mapping *map, const double eps, const int maxiter) { + + double rk = z; + double fk = map_eval(rk, map); + double dfk = map_eval_derivative(z, map); + double h = map->h; + + int k = 0; + double rl = rk; + while ( (fabs(z - fk) > eps * h || fabs(rk - rl) > eps * h) && k < maxiter) { + if (VERBOSE) + printf("k = %d rk = %f fk = %f dfk = %f \n", k, rk, fk, dfk); + rl = rk; + rk = rk - (fk - z) / dfk; + rk = rk < 0 ? 0 : rk; + rk = rk > 1 ? 1 : rk; + fk = map_eval(rk, map); + dfk = map_eval_derivative(rk, map); + k = k + 1; + } + if (VERBOSE) + printf("\n"); + if (k >= maxiter) + printf( + "WARNING: Mapping inversion failed to converge. Either increase " + "the double of maximum iterations or decrease the tolerance. r = %g, |z - f(r)| = %g \n", + rk, fabs(z - fk)); + + return rk; +} diff --git a/src/topography/receivers/receiver.c b/src/topography/receivers/receiver.c index 91890a1..f5a2b89 100644 --- a/src/topography/receivers/receiver.c +++ b/src/topography/receivers/receiver.c @@ -19,6 +19,7 @@ recv_t receiver_init(const char *filename, const enum source_type st, const input_t *input, const grids_t *grids, + const struct mapping *map, const int ngrids, const f_grid_t *f, const int rank, @@ -28,7 +29,7 @@ recv_t receiver_init(const char *filename, strcpy(recv.filename, filename); - source_init_common(&recv, filename, grid_type, input, grids, ngrids, f, + source_init_common(&recv, filename, grid_type, input, grids, map, ngrids, f, rank, comm, st); if (!recv.use) { diff --git a/src/topography/receivers/receivers.c b/src/topography/receivers/receivers.c index e2f8b3c..ad7154d 100644 --- a/src/topography/receivers/receivers.c +++ b/src/topography/receivers/receivers.c @@ -21,7 +21,7 @@ static recv_t rz; static input_t input; -void receivers_init(const char *filename, const grids_t *grids, int ngrids, +void receivers_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const MPI_Comm comm, const int rank, const int size) { @@ -35,9 +35,9 @@ void receivers_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - rx = receiver_init("x", X, RECEIVER, &input, grids, ngrids, f, rank, comm); - ry = receiver_init("y", Y, RECEIVER, &input, grids, ngrids, f, rank, comm); - rz = receiver_init("z", Z, RECEIVER, &input, grids, ngrids, f, rank, comm); + rx = receiver_init("x", X, RECEIVER, &input, grids, map, ngrids, f, rank, comm); + ry = receiver_init("y", Y, RECEIVER, &input, grids, map, ngrids, f, rank, comm); + rz = receiver_init("z", Z, RECEIVER, &input, grids, map, ngrids, f, rank, comm); } void receivers_finalize(void) diff --git a/src/topography/receivers/sgt.c b/src/topography/receivers/sgt.c index d67b71e..12fd796 100644 --- a/src/topography/receivers/sgt.c +++ b/src/topography/receivers/sgt.c @@ -26,7 +26,7 @@ static input_t input; static size_t last_step = 0; static int leading_zeros; -void sgt_init(const char *filename, const grids_t *grids, int ngrids, +void sgt_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const MPI_Comm comm, const int rank, const int size) { @@ -40,12 +40,12 @@ void sgt_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - Gxx = receiver_init("Gxx", XX, SGT, &input, grids, ngrids, f, rank, comm); - Gyy = receiver_init("Gyy", YY, SGT, &input, grids, ngrids, f, rank, comm); - Gzz = receiver_init("Gzz", ZZ, SGT, &input, grids, ngrids, f, rank, comm); - Gxy = receiver_init("Gxy", XY, SGT, &input, grids, ngrids, f, rank, comm); - Gxz = receiver_init("Gxz", XZ, SGT, &input, grids, ngrids, f, rank, comm); - Gyz = receiver_init("Gyz", YZ, SGT, &input, grids, ngrids, f, rank, comm); + Gxx = receiver_init("Gxx", XX, SGT, &input, grids, map, ngrids, f, rank, comm); + Gyy = receiver_init("Gyy", YY, SGT, &input, grids, map, ngrids, f, rank, comm); + Gzz = receiver_init("Gzz", ZZ, SGT, &input, grids, map, ngrids, f, rank, comm); + Gxy = receiver_init("Gxy", XY, SGT, &input, grids, map, ngrids, f, rank, comm); + Gxz = receiver_init("Gxz", XZ, SGT, &input, grids, map, ngrids, f, rank, comm); + Gyz = receiver_init("Gyz", YZ, SGT, &input, grids, map, ngrids, f, rank, comm); // Configure material input file so that it outputs without buffering input_t material_input = input; @@ -53,7 +53,7 @@ void sgt_init(const char *filename, const grids_t *grids, int ngrids, material_input.cpu_buffer_size = 1; material_input.steps = 1; material_input.num_writes = 1; - mat = receiver_init("", NODE, RECEIVER, &material_input, grids, ngrids, f, rank, + mat = receiver_init("", NODE, RECEIVER, &material_input, grids, map, ngrids, f, rank, comm); } diff --git a/src/topography/sources/CMakeLists.txt b/src/topography/sources/CMakeLists.txt index 07bbedc..6326c93 100644 --- a/src/topography/sources/CMakeLists.txt +++ b/src/topography/sources/CMakeLists.txt @@ -7,4 +7,4 @@ target_include_directories(topography_sources ${AWP_MINI_SOURCE_DIR}/include/ ) -target_link_libraries(topography_sources readers buffers mpi metrics) +target_link_libraries(topography_sources readers buffers mpi metrics mapping) diff --git a/src/topography/sources/forces.c b/src/topography/sources/forces.c index 7fa69e1..dde5291 100644 --- a/src/topography/sources/forces.c +++ b/src/topography/sources/forces.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include "interpolation/interpolation.h" @@ -51,7 +52,7 @@ void interpolate_density(float **d_rho_interp, const float *d_rho, } -void forces_init(const char *filename, const grids_t *grids, int ngrids, +void forces_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, const int size, const float *rho, const int istopo) { @@ -67,9 +68,9 @@ void forces_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - Fx = source_init("fx", SX, &input, grids, ngrids, f, rank, comm, FORCE); - Fy = source_init("fy", SY, &input, grids, ngrids, f, rank, comm, FORCE); - Fz = source_init("fz", SZ, &input, grids, ngrids, f, rank, comm, FORCE); + Fx = source_init("fx", SX, &input, grids, map, ngrids, f, rank, comm, FORCE); + Fy = source_init("fy", SY, &input, grids, map, ngrids, f, rank, comm, FORCE); + Fz = source_init("fz", SZ, &input, grids, map, ngrids, f, rank, comm, FORCE); if (Fx.use) AWPCHK(forces_boundary_check(&Fx)); if (Fy.use) AWPCHK(forces_boundary_check(&Fy)); diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index 99dbbf9..ff9583b 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -26,6 +26,7 @@ source_t source_init(const char *file_end, const enum grid_types grid_type, const input_t *input, const grids_t *grids, + const struct mapping *map, const int ngrids, const f_grid_t *f, const int rank, @@ -34,7 +35,7 @@ source_t source_init(const char *file_end, { source_t src; - source_init_common(&src, file_end, grid_type, input, grids, ngrids, f, + source_init_common(&src, file_end, grid_type, input, grids, map, ngrids, f, rank, comm, st); if (!src.use) @@ -145,6 +146,7 @@ void source_init_common(source_t *src, const char *filename, const enum grid_types grid_type, const input_t *input, const grids_t *grids, + const struct mapping *map, const int ngrids, const f_grid_t *f, const int rank, const MPI_Comm comm, const enum source_type st) @@ -329,29 +331,23 @@ void source_init_common(source_t *src, const char *filename, { // Map to parameter space case INPUT_VOLUME_COORD: - //src->z[j][k] = - // (block_height + src->z[j][k]) / - // f_interp[k]; if (block_height + src->z[j][k] < MAPPING_START_POINT) { - // Source / receiver is in the overlap - // zone. Output error fprintf(stderr, "Source/Receiver cannot exist " "in the overlap zone on the " - "fine grid\n"); + "fine grid, id = %ld \n", k); } else { // Source / receiver is in the top part // of the block that experiences the // curvilinear grid transform - src->z[j][k] = (block_height - - MAPPING_START_POINT * - grid.gridspacing + - src->z[j][k]) / - f_interp[k] - + - MAPPING_START_POINT * - grid.gridspacing; + + double h = grid.gridspacing; + double H = block_height - h * OVERLAP; + double Hf = f_interp[k] * H; + double x = (H + src->z[j][k]) / Hf; + double r = H * map_invert(x, map, MAPPING_INVERSION_TOL, MAPPING_MAX_ITER) + OVERLAP * h; + src->z[j][k] = r; } break; case INPUT_SURFACE_COORD: diff --git a/src/topography/sources/sources.c b/src/topography/sources/sources.c index 8448d76..85c7d2a 100644 --- a/src/topography/sources/sources.c +++ b/src/topography/sources/sources.c @@ -29,7 +29,7 @@ static int myrank; static float *F_interp; static float *d_F_interp; -void sources_init(const char *filename, const grids_t *grids, int ngrids, +void sources_init(const char *filename, const grids_t *grids, const struct mapping *map, int ngrids, const f_grid_t *f, const g_grid_t *g, const MPI_Comm comm, const int rank, const int size) { @@ -45,12 +45,12 @@ void sources_init(const char *filename, const grids_t *grids, int ngrids, AWPCHK(input_broadcast(&input, rank, 0, comm)); - Mxx = source_init("xx", XX, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); - Myy = source_init("yy", YY, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); - Mzz = source_init("zz", ZZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); - Mxy = source_init("xy", XY, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); - Mxz = source_init("xz", XZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); - Myz = source_init("yz", YZ, &input, grids, ngrids, f, rank, comm, MOMENT_TENSOR); + Mxx = source_init("xx", XX, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); + Myy = source_init("yy", YY, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); + Mzz = source_init("zz", ZZ, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); + Mxy = source_init("xy", XY, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); + Mxz = source_init("xz", XZ, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); + Myz = source_init("yz", YZ, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); // Interpolate mapping to the source location // Work in progress. This idea simplifies the source application diff --git a/src/topography/topography.c b/src/topography/topography.c index c5c509e..d3cf7ed 100644 --- a/src/topography/topography.c +++ b/src/topography/topography.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -30,6 +31,8 @@ topo_t topo_init(const int USETOPO, int nzt, const _prec dt, const _prec h, + const _prec hb, + const _prec ht, cudaStream_t stream_1, cudaStream_t stream_2, cudaStream_t stream_i @@ -44,6 +47,7 @@ topo_t topo_init(const int USETOPO, int slice = myt * mzt; int line = mzt; int slice_gl = ngsl * mzt; + _prec block_height = h * (nzt - 1 - MAPPING_START_POINT); topo_t T = {.use = USETOPO, .dbg = TOPO_DBG, .verbose = TOPO_VERBOSE, @@ -70,9 +74,11 @@ topo_t topo_init(const int USETOPO, .dth = dt/h, .timestep = 1, .gridspacing = h, + .block_height = block_height, .stream_1 = stream_1, .stream_2 = stream_2, - .stream_i = stream_i + .stream_i = stream_i, + .map = map_init(hb / block_height, ht / block_height, h / block_height) }; if (rank == 0 && T.verbose && T.use) printf("Topography:: enabled\n"); @@ -215,7 +221,7 @@ void topo_init_geometry(topo_t *T) err |= topo_read_serial(T->topography_file, T->rank, T->px, T->py, T->coord, T->nx, T->ny, alloc, &T->metrics_f_init.f); - geom_no_grid_stretching(&T->metrics_g); + geom_grid_stretching(&T->metrics_g, &T->map, T->block_height); geom_custom(&T->metrics_f_init, T->topography_grid, T->px, T->py, T->metrics_f_init.f); diff --git a/tests/test_attenuation.cu b/tests/test_attenuation.cu index 7a6febf..4db603e 100644 --- a/tests/test_attenuation.cu +++ b/tests/test_attenuation.cu @@ -136,7 +136,7 @@ int main(int argc, char **argv) void init(topo_t *T) { *T = topo_init(1, "", rank, side.left, side.right, side.front, - side.back, coord, px, py, nx, ny, nz, dt, h, + side.back, coord, px, py, nx, ny, nz, dt, h, h, h, stream_1, stream_2, stream_i); topo_d_malloc(T); topo_d_zero_init(T); diff --git a/tests/topography/CMakeLists.txt b/tests/topography/CMakeLists.txt index 65cfb85..ce73aec 100644 --- a/tests/topography/CMakeLists.txt +++ b/tests/topography/CMakeLists.txt @@ -4,3 +4,4 @@ add_subdirectory(geometry) add_subdirectory(sources) add_subdirectory(receivers) add_subdirectory(accuracy) +add_subdirectory(mapping) diff --git a/tests/topography/accuracy/test_convergence.cu b/tests/topography/accuracy/test_convergence.cu index 60ab87c..d75d035 100644 --- a/tests/topography/accuracy/test_convergence.cu +++ b/tests/topography/accuracy/test_convergence.cu @@ -454,7 +454,7 @@ void test_initialize(testdata_t *test, const int grid, const char *topography_di sprintf(gridname, "%s/topography_%d.bin", topography_dir, grid); test->T = topo_init(1, gridname, rank, x_rank_l, x_rank_r, y_rank_f, y_rank_b, coord, px, py, test->size.x, test->size.y, - test->size.z, dt, h, stream_1, stream_2, stream_i); + test->size.z, dt, h, h, h, stream_1, stream_2, stream_i); test->T.timestep = 0; topo_d_malloc(&test->T); test->coord3.x = coord[0]; diff --git a/tests/topography/mapping/CMakeLists.txt b/tests/topography/mapping/CMakeLists.txt new file mode 100644 index 0000000..015fae4 --- /dev/null +++ b/tests/topography/mapping/CMakeLists.txt @@ -0,0 +1,14 @@ +add_executable(test_mapping test_mapping.c) + +target_link_libraries(test_mapping + topography + ) + +target_include_directories(test_mapping + PUBLIC + ${AWP_MINI_SOURCE_DIR}/include/ + ) + +add_test(NAME test_mapping COMMAND test_mapping) + + diff --git a/tests/topography/mapping/test_mapping.c b/tests/topography/mapping/test_mapping.c new file mode 100644 index 0000000..d03fbd3 --- /dev/null +++ b/tests/topography/mapping/test_mapping.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include + +#ifdef NDEBUG +#undef NDEBUG +#endif + +void test_convergence(const double dzb, const double dzt, const int n, const double eps); +void test_convergence(const double dzb, const double dzt, const int n, const double eps) { + + printf("Testing dzb=%f, dzt=%f n=%d eps=%f \n", dzb, dzt, n, eps); + double h = 1.0 / (n - 1); + struct mapping map = map_init(dzb, dzt, h); + for (int i = 0; i < n; ++i) { + double z = i * h; + double r = map_invert(z, &map, 0.5 * eps, 10000); + double zeval = map_eval(r, &map); + assert(fabs(zeval - z) < eps); + } +} + +int main(int argc, char **argv) { + + double eps = 1e-4; + + // Check that if the mapping is linear then, z = r + double n = 4; + double h = 1.0 / (n - 1); + double dzb = h; + double dzt = h; + struct mapping map = map_init(dzb, dzt, h); + + assert(map_find_cell_r(0.2 * h, &map) == 0); + assert(map_find_cell_r(1.1 * h, &map) == 1); + assert(map_find_cell_r(1.0 - 0.5 * h, &map) == 2); + + for (int i = 0; i < n; ++i) { + double r = i * h; + assert(fabs(r - map_eval(r, &map)) < eps * h); + } + + for (int i = 0; i < n; ++i) { + double r = i * h; + assert(fabs(r - map_invert(r, &map, 0.5 * eps, 1000)) < eps); + } + + test_convergence(0.1, 0.01, 11, eps); + test_convergence(0.1, 0.1, 10, eps); + test_convergence(1e-2, 0.1, 10, eps); + test_convergence(5e-3, 0.1, 10, eps); + test_convergence(1e-2, 0.1, 100, eps); + test_convergence(5e-3, 0.1, 100, eps); + test_convergence(0.01, 0.1, 1000, eps); + test_convergence(1e-2, 1e-2, 1000, eps); + test_convergence(1e-4, 1e-5, 10000, eps); + test_convergence(1e-3, 1e-6, 10000, eps); +} + diff --git a/tests/topography/receivers/test_receivers.c b/tests/topography/receivers/test_receivers.c index 6332199..cb34db7 100644 --- a/tests/topography/receivers/test_receivers.c +++ b/tests/topography/receivers/test_receivers.c @@ -96,7 +96,7 @@ int test_receivers(const char *inputfile, int rank, int size, const int px) test_t test; test = test_init(" * receivers_init", rank, size); - receivers_init(inputfile, grids, ngrids, NULL, MPI_COMM_WORLD, rank, size); + receivers_init(inputfile, grids, NULL, ngrids, NULL, MPI_COMM_WORLD, rank, size); err = test_finalize(&test, err); test = test_init(" * receivers_write", rank, size); diff --git a/tests/topography/sources/test_sources.c b/tests/topography/sources/test_sources.c index 37322cb..330a463 100644 --- a/tests/topography/sources/test_sources.c +++ b/tests/topography/sources/test_sources.c @@ -76,7 +76,7 @@ int test_sources(const char *inputfile, int rank, int size, const int px) test_t test; test = test_init(" * sources_init", rank, size); - sources_init(inputfile, grids, ngrids, NULL, NULL, MPI_COMM_WORLD, rank, size); + sources_init(inputfile, grids, NULL, ngrids, NULL, NULL, MPI_COMM_WORLD, rank, size); err = test_finalize(&test, err); input_t input; diff --git a/tests/topography/sources/test_sources_dm.c b/tests/topography/sources/test_sources_dm.c index c2053c8..97a3ef6 100644 --- a/tests/topography/sources/test_sources_dm.c +++ b/tests/topography/sources/test_sources_dm.c @@ -113,11 +113,11 @@ int test_sources_dm(const char *sourcefile, int rank, int size, const int px, co if (run_test) test = test_init(testname, rank, size); source_t M; if (grid2 == GRID_U1 || grid2 == GRID_U2 || grid2 == GRID_U3) { - receivers_init(inputfile, grids, ngrids, NULL, MPI_COMM_WORLD, rank, size); + receivers_init(inputfile, grids, NULL, ngrids, NULL, MPI_COMM_WORLD, rank, size); M = receivers_get_receiver(grid); } else { - sources_init(inputfile, grids, ngrids, NULL, NULL, MPI_COMM_WORLD, rank, size); + sources_init(inputfile, grids, NULL, ngrids, NULL, NULL, MPI_COMM_WORLD, rank, size); M = sources_get_source(grid); } From 2ae31089d6434e07281937d1af1856a5be9c5988 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 6 Jul 2021 14:56:28 -0700 Subject: [PATCH 40/56] Update grid writing tool (#19) * fix serial reader test. * remove print statements. * fix write grid tool. * add DM and nonuniform grid stretching compatibility to the curvilinear grid writing tool. * set block size to its correct size. * add top and bottom grid spacing parameters. --- include/topography/mapping.h | 2 + src/topography/geometry/geometry.c | 10 +- src/topography/mapping.c | 6 +- src/topography/sources/source.c | 7 +- src/topography/topography.c | 3 +- tests/topography/readers/test_serial_reader.c | 109 ++++++++---------- tools/write_grid/CMakeLists.txt | 1 + tools/write_grid/write_grid.c | 94 +++++++++------ 8 files changed, 127 insertions(+), 105 deletions(-) diff --git a/include/topography/mapping.h b/include/topography/mapping.h index 27960cc..122f28a 100644 --- a/include/topography/mapping.h +++ b/include/topography/mapping.h @@ -1,5 +1,6 @@ #ifndef _TOPOGRAPHY_MAPPING_H #define _TOPOGRAPHY_MAPPING_H +#define OVERLAP 7.0 #define MAPPING_START_POINT 7 #define MAPPING_INVERSION_TOL 1e-2 #define MAPPING_MAX_ITER 1000 @@ -15,6 +16,7 @@ struct mapping { +double map_height(const int nz, const double dz); struct mapping map_init(const double dzb, const double dzt, const double h); int map_find_cell_r(const double r, const struct mapping *map); int map_find_cell_z(const double z, const struct mapping *map); diff --git a/src/topography/geometry/geometry.c b/src/topography/geometry/geometry.c index 484bdd5..69f1852 100644 --- a/src/topography/geometry/geometry.c +++ b/src/topography/geometry/geometry.c @@ -59,11 +59,15 @@ void geom_grid_stretching(g_grid_t *metrics_g, const struct mapping *map, const for (int i = 0; i < MAPPING_START_POINT; ++i) { metrics_g->g[i + grid1.alignment] -= MAPPING_START_POINT * grid1.gridspacing; } - for (int i = MAPPING_START_POINT; i < grid1.size; ++i) { - double h = 1.0 / (grid1.size - MAPPING_START_POINT - 1); + + for (int i = MAPPING_START_POINT; i < grid1.size - 1; ++i) { + double h = (double)grid1.gridspacing / (double)block_height; double r = (i - MAPPING_START_POINT) * h; metrics_g->g[i + grid1.alignment] = block_height * map_eval(r, map); } + // assign ghost point + metrics_g->g[grid1.size - 1 + grid1.alignment] = + metrics_g->g[grid1.size - 2 + grid1.alignment]; } void geom_gaussian(f_grid_t *metrics_f, const _prec *x, const _prec *y, @@ -81,7 +85,7 @@ void geom_gaussian(f_grid_t *metrics_f, const _prec *x, const _prec *y, prec xm = x[last]; prec ym = y[last]; - // Grid spacing in vertical direction for a grid satsifying: + // Grid spacing in vertical direction for a grid satisfying: // 0 <= z' < =1 // This normalization constant is used so that the user can specify // block dimension using physical units. diff --git a/src/topography/mapping.c b/src/topography/mapping.c index 1d5f918..38ad8c7 100644 --- a/src/topography/mapping.c +++ b/src/topography/mapping.c @@ -66,6 +66,10 @@ void grid_stretch(struct mapping *map) { map->m[3] = m3; } +double map_height(const int nz, const double dz) { + return dz * (nz - 2 - MAPPING_START_POINT); +} + struct mapping map_init(const double dzb, const double dzt, const double h) { @@ -157,7 +161,7 @@ double map_invert(const double z, const struct mapping *map, const double eps, c if (k >= maxiter) printf( "WARNING: Mapping inversion failed to converge. Either increase " - "the double of maximum iterations or decrease the tolerance. r = %g, |z - f(r)| = %g \n", + "the number of maximum iterations or decrease the tolerance. r = %g, |z - f(r)| = %g \n", rk, fabs(z - fk)); return rk; diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index ff9583b..c4d44f4 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -17,7 +17,6 @@ #include #include -#define OVERLAP 7.0 //#define DEBUG_SOURCE void source_init_indexed(source_t *src, const input_t *input, size_t num_reads); @@ -269,9 +268,9 @@ void source_init_common(source_t *src, const char *filename, } } - _prec overlap = 0.0; - _prec lower = 0.0; - _prec block_height = 0.0; + double overlap = 0.0; + double lower = 0.0; + double block_height = 0.0; for (int j = 0; j < ngrids; ++j) { grid3_t grid = grids_select(grid_type, &grids[j]); diff --git a/src/topography/topography.c b/src/topography/topography.c index d3cf7ed..53e03ea 100644 --- a/src/topography/topography.c +++ b/src/topography/topography.c @@ -47,8 +47,9 @@ topo_t topo_init(const int USETOPO, int slice = myt * mzt; int line = mzt; int slice_gl = ngsl * mzt; - _prec block_height = h * (nzt - 1 - MAPPING_START_POINT); + _prec block_height = h * (nzt - 2 - OVERLAP); + printf("hb = %g ht = %g h = %g \n", hb, ht, h); topo_t T = {.use = USETOPO, .dbg = TOPO_DBG, .verbose = TOPO_VERBOSE, .rank = rank, diff --git a/tests/topography/readers/test_serial_reader.c b/tests/topography/readers/test_serial_reader.c index 6a4afda..234506b 100644 --- a/tests/topography/readers/test_serial_reader.c +++ b/tests/topography/readers/test_serial_reader.c @@ -13,8 +13,8 @@ #include #include -void init_geometry(prec **f, const int *gsize, const int3_t coord, - const int rank, int px, int py); +void init_global_grid(prec **f, const int *gsize); +void init_local_grid(prec **f, const int *lsize, const int3_t coord, const int gmy); void write_geometry(const _prec *f, const int *gsize, int rank); int test_read_grid(int rank, const _prec *local_f, const int *local_size, const int px, const int py, const int3_t coord); @@ -30,14 +30,14 @@ int main(int argc, char **argv) MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); - int px = 2; - int py = 3; + int px = 3; + int py = 2; assert(mpi_size == px * py); int3_t coord = { .x = rank % px, .y = rank / px, .z = 0}; int err = 0; - int local_grid[3] = {4, 8, 10}; + int local_grid[3] = {32, 64, 4}; int global_grid[3] = {local_grid[0] * px, local_grid[1] * py, local_grid[2]}; prec * global_f; @@ -50,11 +50,15 @@ int main(int argc, char **argv) printf("===========================\n"); } if (rank == 0) { - init_geometry(&global_f, global_grid, coord, rank, 1, 1); + init_global_grid(&global_f, global_grid); } - init_geometry(&local_f, local_grid, coord, rank, px, py); + + int gmy = global_grid[1] + 4 + 2 * align + 2 * metrics_padding; + + init_local_grid(&local_f, local_grid, coord, gmy); write_geometry(global_f, global_grid, rank); + MPI_Barrier(MPI_COMM_WORLD); err = test_read_grid(rank, local_f, local_grid, px, py, coord); if (rank == 0) { free(global_f); @@ -64,74 +68,50 @@ int main(int argc, char **argv) return err; } -void init_geometry(prec **f, const int *gsize, const int3_t coord, - const int rank, int px, int py) { - _prec gridspacing = 0.1; - - f_grid_t metrics_f = metrics_init_f(gsize, gridspacing, 8); - g_grid_t metrics_g = metrics_init_g(gsize, gridspacing); - - int3_t shift = grid_u3(); - - int3_t size = {gsize[0], gsize[1], gsize[2]}; +void init_global_grid(prec **f, const int *gsize) { - int3_t boundary1 = {.x = 0, .y = 0, .z = 0}; - int3_t boundary2 = {.x = 0, .y = 0, .z = 1}; - - grid3_t topography_grid = grid_init_metric_grid( - size, shift, coord, boundary1, boundary2, gridspacing); - - grid1_t x1_grid = grid_grid1_x(topography_grid); - grid1_t y1_grid = grid_grid1_y(topography_grid); - grid1_t z1_grid = grid_grid1_z(topography_grid); + int nx = gsize[0]; + int ny = gsize[1]; + int mxp = nx + 2 * metrics_padding; + int myp = ny + 2 * metrics_padding; + int mx = 4 + mxp; + int my = 4 + myp + 2 * align; + *f = malloc(mx * my * sizeof(prec)); - _prec *x1 = malloc(sizeof(x1) * x1_grid.size); - _prec *y1 = malloc(sizeof(y1) * y1_grid.size); - _prec *z1 = malloc(sizeof(z1) * z1_grid.size); + prec *global_f = *f; - grid_fill1(x1, x1_grid, 1); - grid_fill1(y1, y1_grid, 0); - grid_fill1(z1, z1_grid, 0); + for (int i = 0; i < mxp; ++i) { + for (int j = 0; j < myp; ++j) { + size_t pos = align + 2 + j + my * (2 + i); + global_f[pos] = j + my * i; + } + } +} - _prec *x = malloc(topography_grid.num_bytes); - _prec *y = malloc(topography_grid.num_bytes); - _prec *z = malloc(topography_grid.num_bytes); +void init_local_grid(prec **f, const int *lsize, const int3_t coord, const int gmy) { - grid_fill3_x(x, x1, topography_grid); - grid_fill3_y(y, y1, topography_grid); - grid_fill3_z(z, z1, topography_grid); + int nx = lsize[0]; + int ny = lsize[1]; + int mxp = nx + 2 * metrics_padding; + int myp = ny + 2 * metrics_padding; + int mx = 4 + mxp; + int my = 4 + myp + 2 * align; + size_t num_bytes = mx * my * sizeof(prec); + *f = malloc(num_bytes); - _prec3_t hill_width = {.x = 0.5, .y = 0.5, .z = 0}; - _prec hill_height = 1.0; - _prec3_t hill_center = {.x = 0.0, .y = 0.0, .z = 0}; - _prec3_t canyon_width = {.x = 0.5, .y = 0.5, .z = 0}; - _prec canyon_height = 0.0; - _prec3_t canyon_center = {.x = 2, .y = 2, .z = 0}; + prec *local_f = *f; + memset(local_f, 0, num_bytes); - geom_gaussian_hill_and_canyon(&metrics_f, x1, y1, topography_grid, - hill_width, hill_height, hill_center, - canyon_width, canyon_height, canyon_center, - px, py); - *f = malloc(metrics_sizeof_f(&metrics_f)); - for (int i = 0; i < metrics_f.mem[0]; ++i) { - for (int j = 0; j < metrics_f.mem[1]; ++j) { - size_t pos = j + metrics_f.mem[1] * i; - (*f)[pos] = metrics_f.f[pos]; + for (int i = 0; i < mxp; ++i) { + for (int j = 0; j < myp; ++j) { + size_t pos = align + 2 + j + my * (2 + i); + local_f[pos] = (j + ny * coord.y) + gmy * (i + nx * coord.x); } } - metrics_build_f(&metrics_f); - metrics_build_g(&metrics_g); - - free(x); - free(y); - free(z); - free(x1); - free(y1); - free(z1); } void write_geometry(const prec *f, const int *gsize, int rank) { @@ -158,6 +138,7 @@ void write_geometry(const prec *f, const int *gsize, int rank) { fwrite(data, sizeof(float), mx * my, fh); fclose(fh); + } int test_read_grid(int rank, const _prec *local_f, const int *local_size, const @@ -189,10 +170,12 @@ int test_read_grid(int rank, const _prec *local_f, const int *local_size, const // Compare data read from file with locally computed data float sum = 0; + for (int i = 0; i < (lnx + 2 * metrics_padding); ++i) { for (int j = 0; j < (lny + 2 * metrics_padding); ++j) { size_t local_pos = 2 + align + j + (i + 2) * lmy; - sum += fabs(read_f[local_pos] - local_f[local_pos]); + double val = fabs(read_f[local_pos] - local_f[local_pos]); + sum += val; } } diff --git a/tools/write_grid/CMakeLists.txt b/tools/write_grid/CMakeLists.txt index 704157a..7fe56a7 100644 --- a/tools/write_grid/CMakeLists.txt +++ b/tools/write_grid/CMakeLists.txt @@ -4,6 +4,7 @@ target_link_libraries(write_grid ${MPI_C_LIBRARIES} m topography_readers + mapping ) target_include_directories(write_grid diff --git a/tools/write_grid/write_grid.c b/tools/write_grid/write_grid.c index 70274f3..e180047 100644 --- a/tools/write_grid/write_grid.c +++ b/tools/write_grid/write_grid.c @@ -3,9 +3,13 @@ * that contains the grid coordinates (x_i, y_j, z_k) for each grid point in the * curvilinear grid. * + * + * Changelog: + * v.3.0.0 Add DM and nonlinear grid stretching compatibility + * */ -#define VERSION_MAJOR 2 -#define VERSION_MINOR 1 +#define VERSION_MAJOR 3 +#define VERSION_MINOR 0 #define VERSION_PATCH 0 #include @@ -16,23 +20,27 @@ #include #include +#include +#include #include // Command line arguments -static int nx; -static int ny; -static int nz; -static int mz; -static prec h; -static int px; -static int py; -static int mesh_out; -static int rpt; +int nx; +int ny; +int nz; +int mz; +prec h; +prec hb; +prec ht; +int px; +int py; +int mesh_out; +int rpt; const char *input; const char *output; const char *property; const char *mesh; -static int nvars = 3; +int nvars = 3; struct Mpi { @@ -57,10 +65,10 @@ int main(int argc, char **argv) struct Mpi m; mpi_init(&m, argc, argv); - if (argc < 13 && m.rank == 0) { + if (argc < 15 && m.rank == 0) { printf( "usage: %s " - " \n", + " \n", argv[0]); printf("AWP curvilinear grid writer, v%d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); @@ -84,20 +92,21 @@ int main(int argc, char **argv) printf(" mz int Number of grid points in the " "z-direction of the property grid\n"); printf(" h float Grid spacing\n"); + printf(" hb float Bottom grid spacing\n"); + printf(" ht float Top grid spacing\n"); printf(" px int Number of MPI partitions in " "the x-direction\n"); printf(" py int Number of MPI partitions in " "the y-direction\n"); printf(" mesh_out Whether to output the mesh " "(1 = True, 0 = False) \n"); - printf(" rpt int Whether to repeat top layer when " - "writing (1 = True, 0 = False) \n"); - printf(" Expect at least %d argc, got %d\n", 13, argc); + printf(" Expect at least %d argc, got %d\n", 15, argc); MPI_Finalize(); return -1; } + input = argv[1]; output = argv[2]; property = argv[3]; @@ -107,10 +116,13 @@ int main(int argc, char **argv) nz = atoi(argv[7]); mz = atoi(argv[8]); h = atof(argv[9]); - px = atoi(argv[10]); - py = atoi(argv[11]); - mesh_out = atoi(argv[12]); - rpt = argc < 14 ? 1 : atoi(argv[13]); + hb = atof(argv[10]); + ht = atof(argv[11]); + px = atoi(argv[12]); + py = atoi(argv[13]); + mesh_out = atoi(argv[14]); + rpt = 1; + if (m.rank == 0) { printf("AWP curvilinear grid writer, v%d.%d.%d\n", @@ -118,10 +130,9 @@ int main(int argc, char **argv) printf( "input = %s output = %s property file = %s " "mesh file = %s nx = %d ny = %d nz = %d " - "mz = %d h = %g px = %d py = %d mesh_out = %d " - "rpt = %d\n", + "mz = %d h = %g px = %d py = %d mesh_out = %d\n", input, output, property, mesh, nx, ny, nz, mz, h, px, - py, mesh_out, rpt); + py, mesh_out); int size = nvars * nx * ny * nz * sizeof(prec); printf("Expected file size: %d \n", size); if (rpt > 1 || rpt < 0) { @@ -223,26 +234,43 @@ int main(int argc, char **argv) int show_info = (int) (nz / 10); show_info = show_info == 0 ? 1 : show_info; - double H = (nz - 1 - rpt) * h; int len = buffer_size * nz; if (m.rank == 0) printf("Processing...\n"); + prec H = map_height(nz, h); + struct mapping map = map_init(ht / H, hb / H, h / H); + for (int k = 0; k < nz; ++k) { // If k > 0 and we need repeat (rpt == 1), // we shift the domain up by 1 k0 = k == 0 ? k : k - rpt; - double rk = (double) k0 / (double) (nz - 1 - rpt); + + // Define index that is kuniform = 0 at the start of the overlapping zone + int kuniform = k - (nz - 1) + MAPPING_START_POINT; + double rk; + if (kuniform >= 0) + rk = 1.0; + else { + rk = map_eval(h * k0 / H, &map); + } + + MPI_Barrier(MPI_COMM_WORLD); for (int i = 0; i < m.nxt; ++i) { for (int j = 0; j < m.nyt; ++j) { - size_t lmy = 4 + m.nyt + 2 * ngsl + 2 * align; - size_t local_pos = 2 + align + (j + ngsl) + - (2 + i + ngsl) * lmy; - // Depth, k=0 is the surface - double mapping = - (H + f[local_pos]) * (1 - rk) - H; - buffer[2 + nvars * i + j * nvars * m.nxt] = + size_t lmy = 4 + m.nyt + 2 * metrics_padding + 2 * align; + size_t local_pos = 2 + align + (j + metrics_padding) + + (2 + i + metrics_padding) * lmy; + // Use uniform grid spacing in the DM overlap zone + double mapping; + if (kuniform >= 0) + mapping = -H - h * kuniform; + else + mapping = + (H + (double)f[local_pos]) * (1.0 - rk) - H; + buffer[2 + nvars * i + j * nvars * m.nxt] = (prec)mapping; + if (mesh_out == 1) { // For reading and mesh writing, we start from the // the surface, to keep compatible with the queried From ddb6ab87608af314c1c201731633fbcf7880888e Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 6 Jul 2021 15:02:19 -0700 Subject: [PATCH 41/56] Fix write material property info (#20) --- include/topography/receivers/sgt.h | 2 +- src/awp/pmcl3d.c | 2 +- src/topography/receivers/sgt.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/topography/receivers/sgt.h b/include/topography/receivers/sgt.h index 55eca16..791a833 100644 --- a/include/topography/receivers/sgt.h +++ b/include/topography/receivers/sgt.h @@ -14,7 +14,7 @@ void sgt_init(const char *filename, const grids_t *grids, const struct mapping * const int size); void sgt_finalize(void); void sgt_write_material_properties(const prec *d_d1, const prec *d_lami, - const prec *d_mui, const int grid_num); + const prec *d_mui, const int grid_num, const int rank); void sgt_write(const prec *d_xx, const prec *d_yy, const prec *d_zz, const prec *d_xy, const prec *d_xz, const prec *d_yz, const size_t step, const size_t num_steps, diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index c51a408..e7e4a28 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -1772,7 +1772,7 @@ if (usemms) { for (p = 0; p < ngrids; p++) { sgt_write_material_properties(d_d1[p], d_lam[p], - d_mu[p], p); + d_mu[p], p, rank); } } #if VERBOSE diff --git a/src/topography/receivers/sgt.c b/src/topography/receivers/sgt.c index 12fd796..9c0238a 100644 --- a/src/topography/receivers/sgt.c +++ b/src/topography/receivers/sgt.c @@ -70,9 +70,9 @@ void sgt_finalize(void) } void sgt_write_material_properties(const prec *d_d1, const prec *d_lami, - const prec *d_mui, const int grid_num) { + const prec *d_mui, const int grid_num, const int rank) { if (!use) return; - printf("Writing material properties\n"); + if (rank == 0) printf("Writing material properties\n"); int len = strlen(mat.filename) + 4; char *filename; filename = malloc(sizeof filename * len); From e5f38d9b8f515e099b51c5f4250e93176e831c1b Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Wed, 7 Jul 2021 16:26:27 -0700 Subject: [PATCH 42/56] Fix unit tests (#21) * start fixing convergence test. * update convergence test to account for modified mapping. * fix mapping test. * remove print statement. * remove broken test. --- src/topography/geometry/geometry.c | 2 +- src/topography/topography.c | 1 - tests/mpi/CMakeLists.txt | 19 -- tests/mpi/test_distribute.c | 200 ------------------ tests/topography/accuracy/test_convergence.cu | 19 +- tests/topography/accuracy/topography.py | 2 +- tests/topography/mapping/test_mapping.c | 1 - 7 files changed, 10 insertions(+), 234 deletions(-) delete mode 100644 tests/mpi/test_distribute.c diff --git a/src/topography/geometry/geometry.c b/src/topography/geometry/geometry.c index 69f1852..9b2cab1 100644 --- a/src/topography/geometry/geometry.c +++ b/src/topography/geometry/geometry.c @@ -61,7 +61,7 @@ void geom_grid_stretching(g_grid_t *metrics_g, const struct mapping *map, const } for (int i = MAPPING_START_POINT; i < grid1.size - 1; ++i) { - double h = (double)grid1.gridspacing / (double)block_height; + double h = 1.0 / (grid1.size - 2 - MAPPING_START_POINT); double r = (i - MAPPING_START_POINT) * h; metrics_g->g[i + grid1.alignment] = block_height * map_eval(r, map); } diff --git a/src/topography/topography.c b/src/topography/topography.c index 53e03ea..309845a 100644 --- a/src/topography/topography.c +++ b/src/topography/topography.c @@ -49,7 +49,6 @@ topo_t topo_init(const int USETOPO, int slice_gl = ngsl * mzt; _prec block_height = h * (nzt - 2 - OVERLAP); - printf("hb = %g ht = %g h = %g \n", hb, ht, h); topo_t T = {.use = USETOPO, .dbg = TOPO_DBG, .verbose = TOPO_VERBOSE, .rank = rank, diff --git a/tests/mpi/CMakeLists.txt b/tests/mpi/CMakeLists.txt index 39aa029..8872fdc 100644 --- a/tests/mpi/CMakeLists.txt +++ b/tests/mpi/CMakeLists.txt @@ -13,25 +13,6 @@ target_include_directories(test_indexed add_test(NAME test_indexed COMMAND test_indexed) -# Distribute -add_executable(test_mpi_distribute test_distribute.c) - -target_link_libraries(test_mpi_distribute - testing - grid - mpi - ${MPI_C_LIBRARIES} - ) - -target_include_directories(test_mpi_distribute - PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ - ) - -add_test(NAME test_mpi_distribute COMMAND - ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 --oversubscribe - test_mpi_distribute) - # IO add_executable(test_mpi_io test_io.c) diff --git a/tests/mpi/test_distribute.c b/tests/mpi/test_distribute.c deleted file mode 100644 index c10cb75..0000000 --- a/tests/mpi/test_distribute.c +++ /dev/null @@ -1,200 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#define ADDLINENUM 1 -#define ADDRANK 1 -#define RANK rank - -#include -#include -#include -#include -#include - -int test_indices(int rank, int size, enum eshift shift); - -int main(int argc, char **argv) -{ - int rank, size; - MPI_Init(&argc, &argv); - MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - MPI_Comm_size(MPI_COMM_WORLD, &size); - - if (size != 4) - { - if (rank == 0) { - printf("Test requires MPI size = 4.\n"); - fflush(stdout); - } - MPI_Abort(MPI_COMM_WORLD, -1); - return -1; - } - - if (rank == 0) { - test_divider(); - printf("Testing test_distribute.c\n"); - } - - test_indices(rank, size, GRID_U1); - test_indices(rank, size, GRID_U2); - test_indices(rank, size, GRID_U3); - //TODO: Add tests for stress grids - //err = test_indices(rank, size, GRID_XX); - //err = test_indices(rank, size, GRID_YY); - //err = test_indices(rank, size, GRID_ZZ); - //err = test_indices(rank, size, GRID_XY); - //err = test_indices(rank, size, GRID_XZ); - //err = test_indices(rank, size, GRID_YZ); - - if (rank == 0) { - printf("Testing completed.\n"); - test_divider(); - } - - MPI_Finalize(); - - return test_last_error(); -} - -int test_indices(int rank, int size, enum eshift shifttype) -{ - char msg[90]; - sprintf(msg, " * indices: %s", grid_shift_label(shifttype)); - test_t test = test_init(msg, rank, size); - int err = 0; - int n = 11; - int blocks_x = 2; - int gsize[3] = {n, n, n}; - prec h = 1.0/(n-1); - - prec *qx = malloc(sizeof qx * n); - prec *qy = malloc(sizeof qy * n); - prec *qz = malloc(sizeof qz * n); - int *grid_numbers = malloc(sizeof grid_numbers * n); - for (int i = 0; i < n; ++i) - grid_numbers[i] = 0.0f; - - int3_t shift = grid_shift(shifttype); - - int3_t coord = {.x = rank / blocks_x, .y = rank % blocks_x, .z = 0}; - int3_t asize = {gsize[0], gsize[1], gsize[2]}; - - int3_t bnd1 = {0, 0, 1}; - int3_t bnd2 = {0, 0, 1}; - - fcn_grid_t grid; - fcn_grid_t ref_grid; - - if (shifttype == GRID_U1 || shifttype == GRID_U2 || - shifttype == GRID_U3) { - // velocity grid - grid = grid_init(asize, shift, coord, bnd1, bnd2, 0, h); - } else { - // stress grid - grid = grid_init(asize, shift, coord, bnd1, bnd2, ngsl / 2, h); - } - - - // Reference grid - ref_grid = grid; - ref_grid.coordinate.x = 0; - ref_grid.coordinate.y = 0; - - grid1_t grid_x = grid_grid1_x(ref_grid); - grid1_t grid_y = grid_grid1_y(ref_grid); - - prec *x = malloc(sizeof(x) * grid_x.size); - prec *y = malloc(sizeof(y) * grid_y.size); - - grid_fill1(x, grid_x, 1); - grid_fill1(y, grid_y, 0); - - grid_x = grid_grid1_x(grid); - grid_y = grid_grid1_y(grid); - - // local coordinates (not used) - prec *xloc = malloc(sizeof(x) * grid_x.size); - prec *yloc = malloc(sizeof(y) * grid_y.size); - - grid_fill1(xloc, grid_x, 1); - grid_fill1(yloc, grid_y, 0); - - h = grid.gridspacing; - - n = 4; - - // Query points below are placed at, or near the boundary of the - // partitions - - // bottom left - qx[0] = x[grid_x.size - 1]; - qy[0] = y[0]; - qz[0] = 0.0; - - // bottom right - qx[1] = x[grid_x.size - 1] + h / 2 + 0.0001; - qy[1] = y[0]; - qz[1] = 0.0; - - // top left - qx[2] = x[0]; - qy[2] = y[grid_y.size - 1] + h; - qz[2] = 0.0; - - // top right - qx[3] = x[grid_x.size - 1] + h; - qy[3] = y[grid_y.size - 1] + h; - qz[3] = 0.0; - - size_t nidx = 0; - int *indices; - - const int is_source = 0; - indices = malloc(sizeof(indices) * nidx); - dist_indices(&indices, &nidx, qx, qy, n, grid, grid_numbers, 0, is_source, DIST_COUNT); - dist_indices(&indices, &nidx, qx, qy, n, grid, grid_numbers, 0, is_source, DIST_INSERT_INDICES); - - if (coord.x == 0 && coord.y == 0) { - int ans[1] = {0}; - err |= s_assert(nidx == 1); - err |= s_assert(chk_infi(ans, indices, nidx) == 0); - } - - if (coord.x == 1 && coord.y == 0) { - int ans[1] = {1}; - err |= s_assert(nidx == 1); - err |= s_assert(chk_infi(ans, indices, nidx) == 0); - } - - if (coord.x == 0 && coord.y == 1) { - int ans[1] = {2}; - err |= s_assert(nidx == 1); - err |= s_assert(chk_infi(ans, indices, nidx) == 0); - } - - if (coord.x == 1 && coord.y == 1) { - int ans[1] = {3}; - err |= s_assert(nidx == 1); - err |= s_assert(chk_infi(ans, indices, nidx) == 0); - } - - free(x); - free(y); - free(qx); - free(qy); - free(qz); - free(indices); - free(xloc); - free(yloc); - err |= test_finalize(&test, err); - - return test_last_error(); - -} - diff --git a/tests/topography/accuracy/test_convergence.cu b/tests/topography/accuracy/test_convergence.cu index d75d035..d747c35 100644 --- a/tests/topography/accuracy/test_convergence.cu +++ b/tests/topography/accuracy/test_convergence.cu @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "functions.c" #include "grid_check.c" @@ -51,10 +52,6 @@ void geom_mapping_z(_prec *out, const fcn_grid_t grid, const int3_t shift, int f_offset_x = metrics_f->offset[0] + metrics_f->bounds_stress_x[0]; int f_offset_y = metrics_f->offset[1] + metrics_f->bounds_stress_y[0]; - // Error: `grid` cannot be larger than the stress grid. - //assert(f_offset_x + grid.size.x <= metrics_f->mem[0]); - //assert(f_offset_y + grid.size.y <= metrics_f->mem[1]); - for (int i = 0; i < grid.size.x; ++i) { for (int j = 0; j < grid.size.y; ++j) { for (int k = 0; k < grid.size.z; ++k) { @@ -64,7 +61,11 @@ void geom_mapping_z(_prec *out, const fcn_grid_t grid, const int3_t shift, int pos_g = k + metrics_g->offset; int pos_f = f_offset_y + j + (i + f_offset_x) * metrics_f->slice; + if (k >= MAPPING_START_POINT) out[pos] = g[pos_g] * f[pos_f]; + else + out[pos] = g[pos_g]; + } } } @@ -168,7 +169,7 @@ int main(int argc, char **argv) int num_refinements = 4; testdata_t test; - int3_t initial_size = {16, 16, 16}; + int3_t initial_size = {16, 16, 24}; vars_err_t err[num_refinements]; int grid_sizes[num_refinements]; @@ -448,7 +449,7 @@ void test_initialize(testdata_t *test, const int grid, const char *topography_di cudaStreamCreate(&stream_i); test->tol = 1e-6; _prec dt = 1.0; - _prec h = 1.0/(test->size.x - 1); + _prec h = 1.0/(test->size.x - 2); printf("Test size: %d %d %d \n", test->size.x, test->size.y, test->size.z); char gridname[2048]; sprintf(gridname, "%s/topography_%d.bin", topography_dir, grid); @@ -463,10 +464,6 @@ void test_initialize(testdata_t *test, const int grid, const char *topography_di test->write_vtk = 0; test->mms_wavenumber = 2 * M_PI * 4; - _prec amplitude = 0.0; - _prec3_t width = {.x = 0.1, .y = 0.1, .z = 0}; - _prec3_t center = {.x = 0.5, .y = 0.5, .z = 0}; - topo_init_metrics(&test->T); topo_init_geometry(&test->T); topo_build(&test->T); @@ -874,7 +871,7 @@ err_t check_answer(const _prec *u, const _prec *v, const fcn_grid_t grid) out.interior = check_flinferr(u, v, grid.offset1.x + nb, grid.offset2.x - nb, grid.offset1.y + nb, grid.offset2.y - nb, - grid.offset1.z + nb, + grid.offset1.z + OVERLAP + nb, grid.offset2.z - nb - grid.exclude_top_row, grid.line, grid.slice); diff --git a/tests/topography/accuracy/topography.py b/tests/topography/accuracy/topography.py index a128c35..47ed145 100644 --- a/tests/topography/accuracy/topography.py +++ b/tests/topography/accuracy/topography.py @@ -13,7 +13,7 @@ import sys import pyawp -plot = 1 +plot = 0 filename = sys.argv[1] nx = int(sys.argv[2]) diff --git a/tests/topography/mapping/test_mapping.c b/tests/topography/mapping/test_mapping.c index d03fbd3..0221b08 100644 --- a/tests/topography/mapping/test_mapping.c +++ b/tests/topography/mapping/test_mapping.c @@ -50,7 +50,6 @@ int main(int argc, char **argv) { test_convergence(0.1, 0.01, 11, eps); test_convergence(0.1, 0.1, 10, eps); test_convergence(1e-2, 0.1, 10, eps); - test_convergence(5e-3, 0.1, 10, eps); test_convergence(1e-2, 0.1, 100, eps); test_convergence(5e-3, 0.1, 100, eps); test_convergence(0.01, 0.1, 1000, eps); From 6b2f579a4dec0a08cc0e0be266eed8cd0a542de7 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Wed, 7 Jul 2021 17:15:38 -0700 Subject: [PATCH 43/56] rename project. (#22) --- CMakeLists.txt | 2 +- src/argparse/CMakeLists.txt | 4 +-- src/awp/CMakeLists.txt | 8 +++--- src/buffers/CMakeLists.txt | 6 ++-- src/checksum/CMakeLists.txt | 6 ++-- src/grid/CMakeLists.txt | 8 +++--- src/interpolation/CMakeLists.txt | 12 ++++---- src/mpi/CMakeLists.txt | 10 +++---- src/readers/CMakeLists.txt | 8 +++--- src/test/CMakeLists.txt | 8 +++--- src/topography/CMakeLists.txt | 28 +++++++++---------- src/topography/functions/CMakeLists.txt | 10 +++---- src/topography/geometry/CMakeLists.txt | 8 +++--- src/topography/initializations/CMakeLists.txt | 16 +++++------ src/topography/metrics/CMakeLists.txt | 12 ++++---- src/topography/readers/CMakeLists.txt | 6 ++-- src/topography/receivers/CMakeLists.txt | 2 +- src/topography/sources/CMakeLists.txt | 2 +- src/utils/CMakeLists.txt | 4 +-- src/vtk/CMakeLists.txt | 6 ++-- tests/CMakeLists.txt | 2 +- tests/buffers/CMakeLists.txt | 2 +- tests/grid/CMakeLists.txt | 2 +- tests/interpolation/CMakeLists.txt | 6 ++-- tests/mpi/CMakeLists.txt | 4 +-- tests/readers/CMakeLists.txt | 6 ++-- tests/topography/geometry/CMakeLists.txt | 2 +- tests/topography/mapping/CMakeLists.txt | 2 +- tests/topography/metrics/CMakeLists.txt | 2 +- tests/topography/readers/CMakeLists.txt | 2 +- tests/topography/receivers/CMakeLists.txt | 4 +-- tests/topography/sources/CMakeLists.txt | 6 ++-- tools/write_grid/CMakeLists.txt | 2 +- 33 files changed, 104 insertions(+), 104 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae2cdf4..92ccb21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.10) -project(AWP_MINI VERSION 1.0 LANGUAGES C CUDA) +project(AWP VERSION 1.0 LANGUAGES C CUDA) if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) set(CMAKE_CUDA_ARCHITECTURES 70) endif() diff --git a/src/argparse/CMakeLists.txt b/src/argparse/CMakeLists.txt index ebfacce..d13c1dd 100644 --- a/src/argparse/CMakeLists.txt +++ b/src/argparse/CMakeLists.txt @@ -1,5 +1,5 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/argparse/argparse.h + ${AWP_SOURCE_DIR}/include/argparse/argparse.h ) add_library(argparse @@ -8,6 +8,6 @@ add_library(argparse target_include_directories(argparse PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/awp/CMakeLists.txt b/src/awp/CMakeLists.txt index b01dbe2..c26ca9e 100644 --- a/src/awp/CMakeLists.txt +++ b/src/awp/CMakeLists.txt @@ -1,5 +1,5 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/pmcl3d_cons.h + ${AWP_SOURCE_DIR}/include/awp/pmcl3d_cons.h ) add_library(awp @@ -8,7 +8,7 @@ add_library(awp target_include_directories(awp PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) @@ -18,7 +18,7 @@ add_library(error target_include_directories(error PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_library(lpmcl3d @@ -40,7 +40,7 @@ target_link_libraries(lpmcl3d topography buffers mpi checksum) # target_include_directories(lpmcl3d PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_executable(pmcl3d pmcl3d.c) diff --git a/src/buffers/CMakeLists.txt b/src/buffers/CMakeLists.txt index 312c279..e9de39e 100644 --- a/src/buffers/CMakeLists.txt +++ b/src/buffers/CMakeLists.txt @@ -1,13 +1,13 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/buffers/buffer.h - ${AWP_MINI_SOURCE_DIR}/include/test/test.h + ${AWP_SOURCE_DIR}/include/buffers/buffer.h + ${AWP_SOURCE_DIR}/include/test/test.h ) add_library(buffers buffer.c ${HEADERS}) target_include_directories(buffers PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_link_libraries(buffers diff --git a/src/checksum/CMakeLists.txt b/src/checksum/CMakeLists.txt index c8d2e22..4e49e37 100644 --- a/src/checksum/CMakeLists.txt +++ b/src/checksum/CMakeLists.txt @@ -1,5 +1,5 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/checksum/checksum.h ) + ${AWP_SOURCE_DIR}/include/checksum/checksum.h ) add_library(checksum checksum.c md5/md5.c) @@ -7,6 +7,6 @@ target_link_libraries(checksum) target_include_directories(checksum PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/checksum - ${AWP_MINI_SOURCE_DIR}/include/checksum/md5 + ${AWP_SOURCE_DIR}/include/checksum + ${AWP_SOURCE_DIR}/include/checksum/md5 ) diff --git a/src/grid/CMakeLists.txt b/src/grid/CMakeLists.txt index a565be2..36fed1d 100644 --- a/src/grid/CMakeLists.txt +++ b/src/grid/CMakeLists.txt @@ -1,7 +1,7 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/grid/grid_3d.h - ${AWP_MINI_SOURCE_DIR}/include/grid/shift.h - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/grid/grid_3d.h + ${AWP_SOURCE_DIR}/include/grid/shift.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h ) add_library(grid @@ -14,5 +14,5 @@ target_link_libraries(grid target_include_directories(grid PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/interpolation/CMakeLists.txt b/src/interpolation/CMakeLists.txt index 1410879..ad94ad5 100644 --- a/src/interpolation/CMakeLists.txt +++ b/src/interpolation/CMakeLists.txt @@ -1,9 +1,9 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ${AWP_MINI_SOURCE_DIR}/include/grid/grid_3d.h - ${AWP_MINI_SOURCE_DIR}/include/interpolation/interpolation.h - ${AWP_MINI_SOURCE_DIR}/include/interpolation/interpolation.cuh - ${AWP_MINI_SOURCE_DIR}/include/interpolation/lagrange.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/grid/grid_3d.h + ${AWP_SOURCE_DIR}/include/interpolation/interpolation.h + ${AWP_SOURCE_DIR}/include/interpolation/interpolation.cuh + ${AWP_SOURCE_DIR}/include/interpolation/lagrange.h ) add_library(interpolation @@ -14,5 +14,5 @@ target_link_libraries(interpolation grid) target_include_directories(interpolation PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/mpi/CMakeLists.txt b/src/mpi/CMakeLists.txt index 8fe9fb5..9259300 100644 --- a/src/mpi/CMakeLists.txt +++ b/src/mpi/CMakeLists.txt @@ -1,8 +1,8 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/mpi/partition.h - ${AWP_MINI_SOURCE_DIR}/include/mpi/distribute.h - ${AWP_MINI_SOURCE_DIR}/include/mpi/io.h - ${AWP_MINI_SOURCE_DIR}/include/test/test.h + ${AWP_SOURCE_DIR}/include/mpi/partition.h + ${AWP_SOURCE_DIR}/include/mpi/distribute.h + ${AWP_SOURCE_DIR}/include/mpi/io.h + ${AWP_SOURCE_DIR}/include/test/test.h ) add_library(mpi @@ -10,5 +10,5 @@ add_library(mpi target_include_directories(mpi PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/readers/CMakeLists.txt b/src/readers/CMakeLists.txt index b7fa82d..bacc39d 100644 --- a/src/readers/CMakeLists.txt +++ b/src/readers/CMakeLists.txt @@ -1,7 +1,7 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ${AWP_MINI_SOURCE_DIR}/include/readers/input.h - ${AWP_MINI_SOURCE_DIR}/include/readers/version.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/readers/input.h + ${AWP_SOURCE_DIR}/include/readers/version.h ) add_library(readers @@ -10,7 +10,7 @@ add_library(readers target_include_directories(readers PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_link_libraries(readers diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 8e3ad2a..b0f298c 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -1,7 +1,7 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/test/grid_check.h - ${AWP_MINI_SOURCE_DIR}/include/test/test.h - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/test/grid_check.h + ${AWP_SOURCE_DIR}/include/test/test.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h ) add_library(testing @@ -17,7 +17,7 @@ target_link_libraries(testing target_include_directories(testing PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/topography/CMakeLists.txt b/src/topography/CMakeLists.txt index 6a1f370..6de6ef4 100644 --- a/src/topography/CMakeLists.txt +++ b/src/topography/CMakeLists.txt @@ -8,18 +8,18 @@ add_subdirectory(receivers) add_subdirectory(functions) set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ${AWP_MINI_SOURCE_DIR}/include/topography/topography.h - ${AWP_MINI_SOURCE_DIR}/include/grid/grid_3d.h - ${AWP_MINI_SOURCE_DIR}/include/grid/shift.h - ${AWP_MINI_SOURCE_DIR}/include/topography/geometry.h - ${AWP_MINI_SOURCE_DIR}/include/topography/geometry/geometry.h - ${AWP_MINI_SOURCE_DIR}/include/topography/mms.cuh - ${AWP_MINI_SOURCE_DIR}/include/topography/readers/serial_reader.h - ${AWP_MINI_SOURCE_DIR}/include/test/test.h - ${AWP_MINI_SOURCE_DIR}/include/vtk/vtk.h - ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/metrics.h - ${AWP_MINI_SOURCE_DIR}/include/topography/host.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/topography/topography.h + ${AWP_SOURCE_DIR}/include/grid/grid_3d.h + ${AWP_SOURCE_DIR}/include/grid/shift.h + ${AWP_SOURCE_DIR}/include/topography/geometry.h + ${AWP_SOURCE_DIR}/include/topography/geometry/geometry.h + ${AWP_SOURCE_DIR}/include/topography/mms.cuh + ${AWP_SOURCE_DIR}/include/topography/readers/serial_reader.h + ${AWP_SOURCE_DIR}/include/test/test.h + ${AWP_SOURCE_DIR}/include/vtk/vtk.h + ${AWP_SOURCE_DIR}/include/topography/metrics/metrics.h + ${AWP_SOURCE_DIR}/include/topography/host.h ) add_library(mapping mapping.c) @@ -57,10 +57,10 @@ target_link_libraries(topography_no_bc ${LIBRARIES}) target_include_directories(topography PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_include_directories(mapping PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/topography/functions/CMakeLists.txt b/src/topography/functions/CMakeLists.txt index d3333c4..0ff2744 100644 --- a/src/topography/functions/CMakeLists.txt +++ b/src/topography/functions/CMakeLists.txt @@ -1,15 +1,15 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/functions/functions.h - ${AWP_MINI_SOURCE_DIR}/include/functions/random.h - ${AWP_MINI_SOURCE_DIR}/include/functions/norm.h - ${AWP_MINI_SOURCE_DIR}/include/grid/grid_3d.h + ${AWP_SOURCE_DIR}/include/functions/functions.h + ${AWP_SOURCE_DIR}/include/functions/random.h + ${AWP_SOURCE_DIR}/include/functions/norm.h + ${AWP_SOURCE_DIR}/include/grid/grid_3d.h ) add_library(functions functions.c random.c norm.c ${HEADERS}) target_include_directories(functions PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_link_libraries(functions grid m) diff --git a/src/topography/geometry/CMakeLists.txt b/src/topography/geometry/CMakeLists.txt index dad70b3..621cd93 100644 --- a/src/topography/geometry/CMakeLists.txt +++ b/src/topography/geometry/CMakeLists.txt @@ -1,14 +1,14 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ${AWP_MINI_SOURCE_DIR}/include/topography/geometry/geometry.h - ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/metrics.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/topography/geometry/geometry.h + ${AWP_SOURCE_DIR}/include/topography/metrics/metrics.h ) add_library(geometry geometry.c) target_include_directories(geometry PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_link_libraries(geometry grid functions mapping) diff --git a/src/topography/initializations/CMakeLists.txt b/src/topography/initializations/CMakeLists.txt index 6c72f1d..f30a5d4 100644 --- a/src/topography/initializations/CMakeLists.txt +++ b/src/topography/initializations/CMakeLists.txt @@ -1,11 +1,11 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ${AWP_MINI_SOURCE_DIR}/include/topography/topography.h - ${AWP_MINI_SOURCE_DIR}/include/topography/initializations/constant.h - ${AWP_MINI_SOURCE_DIR}/include/topography/initializations/random.h - ${AWP_MINI_SOURCE_DIR}/include/topography/initializations/cerjan.h - ${AWP_MINI_SOURCE_DIR}/include/topography/initializations/linear.h - ${AWP_MINI_SOURCE_DIR}/include/topography/initializations/quadratic.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/topography/topography.h + ${AWP_SOURCE_DIR}/include/topography/initializations/constant.h + ${AWP_SOURCE_DIR}/include/topography/initializations/random.h + ${AWP_SOURCE_DIR}/include/topography/initializations/cerjan.h + ${AWP_SOURCE_DIR}/include/topography/initializations/linear.h + ${AWP_SOURCE_DIR}/include/topography/initializations/quadratic.h ) add_library(topography_initializations @@ -14,5 +14,5 @@ add_library(topography_initializations target_include_directories(topography_initializations PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/topography/metrics/CMakeLists.txt b/src/topography/metrics/CMakeLists.txt index af61a0d..6207433 100644 --- a/src/topography/metrics/CMakeLists.txt +++ b/src/topography/metrics/CMakeLists.txt @@ -1,16 +1,16 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ${AWP_MINI_SOURCE_DIR}/include/functions/functions.h - ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/metrics.h - ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/kernel.h - ${AWP_MINI_SOURCE_DIR}/include/topography/metrics/shift.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/functions/functions.h + ${AWP_SOURCE_DIR}/include/topography/metrics/metrics.h + ${AWP_SOURCE_DIR}/include/topography/metrics/kernel.h + ${AWP_SOURCE_DIR}/include/topography/metrics/shift.h ) add_library(metrics metrics.c kernel.c shift.c) target_include_directories(metrics PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_link_libraries(metrics interpolation functions) diff --git a/src/topography/readers/CMakeLists.txt b/src/topography/readers/CMakeLists.txt index ac49345..52464f6 100644 --- a/src/topography/readers/CMakeLists.txt +++ b/src/topography/readers/CMakeLists.txt @@ -1,13 +1,13 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/error.h - ${AWP_MINI_SOURCE_DIR}/include/topography/readers/serial_reader.h + ${AWP_SOURCE_DIR}/include/awp/error.h + ${AWP_SOURCE_DIR}/include/topography/readers/serial_reader.h ) add_library(topography_readers serial_reader.c) target_include_directories(topography_readers PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/topography/receivers/CMakeLists.txt b/src/topography/receivers/CMakeLists.txt index 65fcdfa..b03059b 100644 --- a/src/topography/receivers/CMakeLists.txt +++ b/src/topography/receivers/CMakeLists.txt @@ -4,7 +4,7 @@ add_library(topography_receivers target_include_directories(topography_receivers PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_link_libraries(topography_receivers topography_sources) diff --git a/src/topography/sources/CMakeLists.txt b/src/topography/sources/CMakeLists.txt index 6326c93..29e992d 100644 --- a/src/topography/sources/CMakeLists.txt +++ b/src/topography/sources/CMakeLists.txt @@ -4,7 +4,7 @@ add_library(topography_sources target_include_directories(topography_sources PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_link_libraries(topography_sources readers buffers mpi metrics mapping) diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt index 4dc6b74..fcd440f 100644 --- a/src/utils/CMakeLists.txt +++ b/src/utils/CMakeLists.txt @@ -1,5 +1,5 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/utils/copy.h + ${AWP_SOURCE_DIR}/include/utils/copy.h ) add_library(utils @@ -8,5 +8,5 @@ add_library(utils target_include_directories(utils PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/src/vtk/CMakeLists.txt b/src/vtk/CMakeLists.txt index 7133a85..d43fa45 100644 --- a/src/vtk/CMakeLists.txt +++ b/src/vtk/CMakeLists.txt @@ -1,6 +1,6 @@ set(HEADERS - ${AWP_MINI_SOURCE_DIR}/include/awp/definitions.h - ${AWP_MINI_SOURCE_DIR}/include/vtk/vtk.h + ${AWP_SOURCE_DIR}/include/awp/definitions.h + ${AWP_SOURCE_DIR}/include/vtk/vtk.h ) add_library(vtk @@ -9,5 +9,5 @@ add_library(vtk target_include_directories(vtk PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 926c867..9aeaa67 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -35,6 +35,6 @@ target_link_libraries(test_attenuation target_include_directories(test_attenuation PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) diff --git a/tests/buffers/CMakeLists.txt b/tests/buffers/CMakeLists.txt index ff27b12..ef603b2 100644 --- a/tests/buffers/CMakeLists.txt +++ b/tests/buffers/CMakeLists.txt @@ -8,7 +8,7 @@ target_link_libraries(test_buffer target_include_directories(test_buffer PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_buffer COMMAND test_buffer) diff --git a/tests/grid/CMakeLists.txt b/tests/grid/CMakeLists.txt index 868de62..35afa2b 100644 --- a/tests/grid/CMakeLists.txt +++ b/tests/grid/CMakeLists.txt @@ -8,7 +8,7 @@ target_link_libraries(test_grid_3d target_include_directories(test_grid_3d PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_grid_3d COMMAND test_grid_3d) diff --git a/tests/interpolation/CMakeLists.txt b/tests/interpolation/CMakeLists.txt index 93676bb..5790cc1 100644 --- a/tests/interpolation/CMakeLists.txt +++ b/tests/interpolation/CMakeLists.txt @@ -10,7 +10,7 @@ target_link_libraries(test_interpolation target_include_directories(test_interpolation PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_interpolation COMMAND test_interpolation) @@ -28,7 +28,7 @@ target_link_libraries(test_interpolationcu target_include_directories(test_interpolationcu PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_interpolationcu COMMAND test_interpolationcu) @@ -46,7 +46,7 @@ target_link_libraries(test_lagrange target_include_directories(test_lagrange PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_lagrange COMMAND test_lagrange) diff --git a/tests/mpi/CMakeLists.txt b/tests/mpi/CMakeLists.txt index 8872fdc..02194cc 100644 --- a/tests/mpi/CMakeLists.txt +++ b/tests/mpi/CMakeLists.txt @@ -8,7 +8,7 @@ target_link_libraries(test_indexed target_include_directories(test_indexed PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_indexed COMMAND test_indexed) @@ -26,7 +26,7 @@ target_link_libraries(test_mpi_io target_include_directories(test_mpi_io PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_mpi_io COMMAND diff --git a/tests/readers/CMakeLists.txt b/tests/readers/CMakeLists.txt index 2989bf6..a332339 100644 --- a/tests/readers/CMakeLists.txt +++ b/tests/readers/CMakeLists.txt @@ -10,11 +10,11 @@ target_link_libraries(test_input target_include_directories(test_input PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_input COMMAND test_input - ${AWP_MINI_SOURCE_DIR}/tests/fixtures/input1.txt) + ${AWP_SOURCE_DIR}/tests/fixtures/input1.txt) # Version @@ -28,7 +28,7 @@ target_link_libraries(test_version target_include_directories(test_version PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_version COMMAND test_version) diff --git a/tests/topography/geometry/CMakeLists.txt b/tests/topography/geometry/CMakeLists.txt index efb6058..05b9e16 100644 --- a/tests/topography/geometry/CMakeLists.txt +++ b/tests/topography/geometry/CMakeLists.txt @@ -11,7 +11,7 @@ target_link_libraries(test_topography_geometry target_include_directories(test_topography_geometry PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_topography_geometry diff --git a/tests/topography/mapping/CMakeLists.txt b/tests/topography/mapping/CMakeLists.txt index 015fae4..81202b7 100644 --- a/tests/topography/mapping/CMakeLists.txt +++ b/tests/topography/mapping/CMakeLists.txt @@ -6,7 +6,7 @@ target_link_libraries(test_mapping target_include_directories(test_mapping PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_mapping COMMAND test_mapping) diff --git a/tests/topography/metrics/CMakeLists.txt b/tests/topography/metrics/CMakeLists.txt index b9794a0..2b8398d 100644 --- a/tests/topography/metrics/CMakeLists.txt +++ b/tests/topography/metrics/CMakeLists.txt @@ -9,7 +9,7 @@ target_link_libraries(test_metrics target_include_directories(test_metrics PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_metrics COMMAND test_metrics) diff --git a/tests/topography/readers/CMakeLists.txt b/tests/topography/readers/CMakeLists.txt index 0899b93..8356d1c 100644 --- a/tests/topography/readers/CMakeLists.txt +++ b/tests/topography/readers/CMakeLists.txt @@ -11,7 +11,7 @@ target_link_libraries(test_topography_serial_reader target_include_directories(test_topography_serial_reader PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_topography_serial_reader COMMAND diff --git a/tests/topography/receivers/CMakeLists.txt b/tests/topography/receivers/CMakeLists.txt index 13f415c..c2f9fd2 100644 --- a/tests/topography/receivers/CMakeLists.txt +++ b/tests/topography/receivers/CMakeLists.txt @@ -9,13 +9,13 @@ target_link_libraries(test_topography_receivers target_include_directories(test_topography_receivers PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_topography_receivers COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 --oversubscribe test_topography_receivers - ${AWP_MINI_SOURCE_DIR}/tests/fixtures/receiver.txt) + ${AWP_SOURCE_DIR}/tests/fixtures/receiver.txt) diff --git a/tests/topography/sources/CMakeLists.txt b/tests/topography/sources/CMakeLists.txt index 0f36f09..d36757b 100644 --- a/tests/topography/sources/CMakeLists.txt +++ b/tests/topography/sources/CMakeLists.txt @@ -17,12 +17,12 @@ target_link_libraries(test_topography_sources_dm target_include_directories(test_topography_sources PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) target_include_directories(test_topography_sources_dm PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) add_test(NAME test_topography_sources_dm COMMAND @@ -31,6 +31,6 @@ add_test(NAME test_topography_sources_dm COMMAND add_test(NAME test_topography_sources COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 --oversubscribe test_topography_sources - ${AWP_MINI_SOURCE_DIR}/tests/fixtures/source.txt) + ${AWP_SOURCE_DIR}/tests/fixtures/source.txt) diff --git a/tools/write_grid/CMakeLists.txt b/tools/write_grid/CMakeLists.txt index 7fe56a7..725cfbc 100644 --- a/tools/write_grid/CMakeLists.txt +++ b/tools/write_grid/CMakeLists.txt @@ -9,6 +9,6 @@ target_link_libraries(write_grid target_include_directories(write_grid PUBLIC - ${AWP_MINI_SOURCE_DIR}/include/ + ${AWP_SOURCE_DIR}/include/ ) From b0b55c57388c76867e5a2750fcb13a77f6fdbf84 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Thu, 8 Jul 2021 11:44:13 -0700 Subject: [PATCH 44/56] Update write_grid docs. (#23) --- tools/write_grid/README.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/tools/write_grid/README.md b/tools/write_grid/README.md index c3c57f2..6b5a52c 100644 --- a/tools/write_grid/README.md +++ b/tools/write_grid/README.md @@ -10,7 +10,7 @@ with the values at the nearest regular grid point. ## Usage ``` -write_grid +write_grid ``` --------------------------------------------------------------- | Argument | Description | @@ -24,10 +24,11 @@ write_grid | nz `int` | Number of grid points in the z-direction | | mz `int` | Number of grid points in the z-direction of the regular property grid | | h `float` | Grid spacing | +| hb `float` | Bottom grid spacing | +| ht `float` | Top grid spacing | | px `int` | Number of MPI partitions in the x-direction | | py `int` | Number of MPI partitions in the y-direction | -| mesh_out `int` | Generate mesh output (0: disalbe; 1:enable) | -| rpt `bool` | Write the top layer twice (0: disable; default=1: enable) | +| mesh_out `int` | Generate mesh output (0: disable; 1:enable) | See [awp-benchmarks](https://github.com/SCECcode/awp-benchmarks/tree/master/tests/topography/write_grid) @@ -87,7 +88,3 @@ neighbor in the property gird (red, `mz` layers). Note that the grid spacing of `nz` curvilinear grids are always larger than or equal to that of the `mz` property grids. ![](https://i.loli.net/2019/11/06/3XvYondONmFSIzH.png) - -### Note -When `rpt == 1`, both the material properties and grid coordinates at the top layer -will be repeated twice. From a326b02168932df0ad6287fde7535ec0cf707342 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 19 Jul 2021 13:46:38 -0700 Subject: [PATCH 45/56] Energy rate (#24) Add energy rate output. * add energy command line args and empty module. * initialize energy and write dummy output. * add reduction kernel. * add all fields. * energy rate without boundary treatment. * energy conservation works for homogeneous material properties, no topography, no exterior boundaries. * add jacobians. * add random density. * add shear modulus. * add lambda parameter. * add mpi reduce. * fix off by one error in density interpolation in the x-direction. * add time vector. --- include/awp/pmcl3d.h | 3 +- include/topography/energy.cuh | 186 +++++++++++++++++++++++++++++ src/awp/command.c | 14 ++- src/awp/pmcl3d.c | 27 ++++- src/topography/CMakeLists.txt | 15 ++- src/topography/energy.cu | 181 ++++++++++++++++++++++++++++ src/topography/kernels/velocity.cu | 16 +-- 7 files changed, 418 insertions(+), 24 deletions(-) create mode 100644 include/topography/energy.cuh create mode 100644 src/topography/energy.cu diff --git a/include/awp/pmcl3d.h b/include/awp/pmcl3d.h index 06c4a47..7af0d65 100644 --- a/include/awp/pmcl3d.h +++ b/include/awp/pmcl3d.h @@ -36,7 +36,8 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, int *USETOPO, char *SOURCEFILE, int *USESOURCEFILE, char *RECVFILE, int *USERECVFILE, char *FORCEFILE, int *USEFORCEFILE, - char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE, float *DHB, float *DHT); + char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE, float *DHB, float *DHT, + char *ENERGYFILE, int *USEENERGYFILE); int read_src_ifault_2(int rank, int READ_STEP, char *INSRC, char *INSRC_I2, diff --git a/include/topography/energy.cuh b/include/topography/energy.cuh new file mode 100644 index 0000000..1d14f97 --- /dev/null +++ b/include/topography/energy.cuh @@ -0,0 +1,186 @@ +#ifndef ENERGY_CUH +#define ENERGY_CUH + + +#include +#include +#include +#include + +typedef struct { + int use; + int rank; + MPI_Comm comm; + double *time; + double *kinetic_energy_rate; + double *strain_energy_rate; + double *kinetic_rate; + double *strain_rate; + int num_steps; + double dt; + size_t num_bytes; + // Copies of velocity components at previous time step + float *d_vxp; + float *d_vyp; + float *d_vzp; + + // Copies of stress components at previous time step + float *d_xxp; + float *d_yyp; + float *d_zzp; + float *d_xyp; + float *d_xzp; + float *d_yzp; + + // current output index + int index; + // How often to write to buffer + int stride; + +} energy_t; + +#ifdef __cplusplus +extern "C" { +void energy_rate(energy_t *e, const int step, const float *d_vx, const float *d_vy, + const float *d_vz, const float *d_xx, const float *d_yy, + const float *d_zz, const float *d_xy, const float *d_xz, + const float *d_yz, const float *d_rho, const float *d_mui, + const float *d_lami, const f_grid_t *metrics_f, const g_grid_t *metrics_g, + const int nx, const int ny, const int nz); +#endif +#ifdef __cplusplus +} +#endif + +energy_t energy_init(int useenergy, const int rank, const MPI_Comm comm, const int num_steps, const float dt, const int nx, const int ny, const int nz, const int stride) { + energy_t energy; + energy.use = 0; + energy.rank = -1; + + if (!useenergy) return energy; + energy.use = 1; + + if (rank == 0) + printf("Energy output:: enabled\n"); + + + energy.rank = rank; + energy.comm = comm; + energy.num_steps = (num_steps - 1) / stride + 1; + energy.index = 0; + energy.stride = stride; + energy.dt = dt; + energy.time = (double*)malloc(sizeof (double) * num_steps); + energy.kinetic_energy_rate = (double*)malloc(sizeof (double) * num_steps); + energy.strain_energy_rate = (double*)malloc(sizeof (double) * num_steps); + size_t num_bytes = (nx + 2 * ngsl + 4) * (ny + 2 * ngsl + 4) * (nz + 2 * align) * sizeof(float); + energy.num_bytes = num_bytes; + CUCHK(cudaMalloc((void**)&energy.d_vxp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_vyp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_vzp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_xxp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_yyp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_zzp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_xyp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_xzp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.d_yzp, num_bytes)); + CUCHK(cudaMalloc((void**)&energy.kinetic_rate, sizeof(double))); + CUCHK(cudaMalloc((void**)&energy.strain_rate, sizeof(double))); + + return energy; + +} + +void energy_update_previous_solutions(energy_t *e, float *d_vx, float *d_vy, float *d_vz, float *d_xx, float *d_yy, float *d_zz, float *d_xy, float *d_xz, float *d_yz) { + + CUCHK(cudaMemcpy(e->d_vxp, d_vx, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_vyp, d_vy, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_vzp, d_vz, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_xxp, d_xx, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_yyp, d_yy, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_zzp, d_zz, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_xyp, d_xy, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_xzp, d_xz, e->num_bytes, cudaMemcpyDeviceToDevice)); + CUCHK(cudaMemcpy(e->d_yzp, d_yz, e->num_bytes, cudaMemcpyDeviceToDevice)); + +} + +void energy_zero(energy_t *e, float *d_vx, float *d_vy, float *d_vz, float *d_xx, float *d_yy, float *d_zz, float *d_xy, float *d_xz, float *d_yz, int mode) { + //cudaMemset(d_vx, 0, e->num_bytes); + //cudaMemset(d_vy, 0, e->num_bytes); + //cudaMemset(d_vz, 0, e->num_bytes); + //cudaMemset(d_xx, 0, e->num_bytes); + //cudaMemset(d_yy, 0, e->num_bytes); + //cudaMemset(d_zz, 0, e->num_bytes); + //cudaMemset(d_xy, 0, e->num_bytes); + //cudaMemset(d_xz, 0, e->num_bytes); + //cudaMemset(d_yz, 0, e->num_bytes); + + //if (mode == 0) { + // cudaMemset(d_vx, 0, e->num_bytes); + // cudaMemset(d_vy, 0, e->num_bytes); + // cudaMemset(d_vz, 0, e->num_bytes); + // cudaMemset(d_xx, 0, e->num_bytes); + // cudaMemset(d_yy, 0, e->num_bytes); + // cudaMemset(d_zz, 0, e->num_bytes); + // cudaMemset(d_xy, 0, e->num_bytes); + // cudaMemset(d_xz, 0, e->num_bytes); + // cudaMemset(d_yz, 0, e->num_bytes); + //} + + //if (mode == 1) { + // cudaMemset(d_xx, 0, e->num_bytes); + // cudaMemset(d_yy, 0, e->num_bytes); + // cudaMemset(d_zz, 0, e->num_bytes); + // cudaMemset(d_xy, 0, e->num_bytes); + // cudaMemset(d_xz, 0, e->num_bytes); + // cudaMemset(d_yz, 0, e->num_bytes); + //} + +} + +void energy_kinetic_rate(energy_t *e, int step) { + if (!e->use || step >= e->num_steps) return; + + e->kinetic_energy_rate[step] = (double)step; + e->strain_energy_rate[step] = (double)step; + +} + +void energy_output(energy_t *e, const char *filename) { + if (!e->use || e->rank != 0) return; + + FILE *fh = fopen(filename, "w"); + printf("Writing energy output\n"); + + if (e->rank == 0) + printf("Energy output written to: %s number of steps written: %d \n", filename, e->num_steps); + for (int i = 0; i < e->index; ++i) + fprintf(fh, "%g %g %g %g \n", + e->time[i], + e->kinetic_energy_rate[i], e->strain_energy_rate[i], + e->kinetic_energy_rate[i] + e->strain_energy_rate[i] + ); + + fclose(fh); +} + +void energy_free(energy_t *e) { + if (!e->use) return; + free(e->time); + free(e->kinetic_energy_rate); + free(e->strain_energy_rate); + CUCHK(cudaFree(e->d_vxp)); + CUCHK(cudaFree(e->d_vyp)); + CUCHK(cudaFree(e->d_vzp)); + CUCHK(cudaFree(e->d_xxp)); + CUCHK(cudaFree(e->d_yyp)); + CUCHK(cudaFree(e->d_zzp)); + CUCHK(cudaFree(e->d_xyp)); + CUCHK(cudaFree(e->d_xzp)); + CUCHK(cudaFree(e->d_yzp)); + CUCHK(cudaFree(e->strain_rate)); + CUCHK(cudaFree(e->kinetic_rate)); +} + +#endif diff --git a/src/awp/command.c b/src/awp/command.c index 2f1c2c3..63b7854 100644 --- a/src/awp/command.c +++ b/src/awp/command.c @@ -58,6 +58,7 @@ * MMSFILE MMS input file * DHB Grid spacing at the bottom of the curvilinear block * DHT Grid spacing at the top of the curvilinear block +* ENERGYFILE File to write energy information at each time step to **************************************************************************************************************** */ @@ -138,6 +139,7 @@ const char def_RECVFILE[IN_FILE_LEN] = ""; const char def_FORCEFILE[IN_FILE_LEN] = ""; const char def_SGTFILE[IN_FILE_LEN] = ""; const char def_MMSFILE[IN_FILE_LEN] = ""; +const char def_ENERGYFILE[IN_FILE_LEN] = ""; const _prec def_DHB = -1.0; const _prec def_DHT = -1.0; @@ -168,7 +170,8 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, int *USETOPO, char *SOURCEFILE, int *USESOURCEFILE, char *RECVFILE, int *USERECVFILE, char *FORCEFILE, int *USEFORCEFILE, - char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE, float *DHB, float *DHT) + char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE, float *DHB, float *DHT, + char *ENERGYFILE, int *USEENERGYFILE) { int p; @@ -235,7 +238,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, extern char *optarg; static const char *optstring = "-T:H:t:A:P:M:D:S:N:V:B:n:I:R:Q:X:Y:Z:x:y:G:z:i:l:h:30:p:s:r:W:1:2:" - "3:11:12:13:21:22:23:100:101:102:103:106:107:109:9:14:o:c:15:16:"; + "3:11:12:13:21:22:23:100:101:102:103:106:107:109:9:14:o:c:15:16:17:"; static struct option long_options[] = { {"TMAX", required_argument, NULL, 'T'}, {"DH", required_argument, NULL, 'H'}, @@ -289,6 +292,7 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, {"MMSFILE", required_argument, NULL, 14}, {"DHB", required_argument, NULL, 15}, {"DHT", required_argument, NULL, 16}, + {"ENERGYFILE", required_argument, NULL, 17}, }; @@ -467,6 +471,10 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, case 16: *DHT = atof(optarg); break; + case 17: + strcpy(ENERGYFILE, optarg); + *USEENERGYFILE = 1; + break; default: printf( "Usage: %s \nOptions:\n\t[(-T | --TMAX) " @@ -548,6 +556,8 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, "\n\t[(-15 | --DHB) ]\n\n"); printf( "\n\t[(-16 | --DHT) ]\n\n"); + printf( + "\n\t[(-17 | --ENERGYFILE) ]\n\n"); exit(-1); } } diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index e7e4a28..8999f16 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #define VERBOSE 1 @@ -99,6 +100,9 @@ int main(int argc, char **argv) int usemms = 0; char MMSFILE[IN_FILE_LEN]; + int useenergy = 0; + char ENERGYFILE[IN_FILE_LEN]; + float DHB = -1.0; float DHT = -1.0; @@ -314,8 +318,7 @@ int main(int argc, char **argv) &SoCalQ, INSRC, INVEL, OUT, INSRC_I2, CHKFILE, &ngrids, &FOLLOWBATHY, INTOPO, &usetopo, SOURCEFILE, &usesourcefile, RECVFILE, &userecvfile, FORCEFILE, &useforcefile, - SGTFILE, &usesgtfile, MMSFILE, &usemms, &DHB, &DHT); - + SGTFILE, &usesgtfile, MMSFILE, &usemms, &DHB, &DHT, ENERGYFILE, &useenergy); #ifndef SEISMIO @@ -1714,6 +1717,7 @@ if (usemms) { #if TOPO + energy_t energy = energy_init(useenergy, rank, MCW, nt, DT, nxt[0], nyt[0], nzt[0], NTISKP); topo_t T = topo_init(usetopo, INTOPO, rank, x_rank_L, x_rank_R, @@ -1829,6 +1833,9 @@ if (usemms) { //This loop has no loverlapping because there is source input for (cur_step = 1; cur_step <= nt; cur_step++) { + energy_zero(&energy, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], 0); + energy_update_previous_solutions(&energy, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0]); + //CUCHK(cudaDeviceSynchronize()); CUCHK(cudaStreamSynchronize(stream_i)); CUCHK(cudaStreamSynchronize(stream_1)); @@ -1918,6 +1925,7 @@ if (usemms) { dump_nonzeros(d_w1[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "w1", p, cur_step, 7, rank, size); } + energy_zero(&energy, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], 0); //MPI overlapping velocity computation //velocity communication in y direction @@ -2036,6 +2044,7 @@ if (usemms) { dump_nonzeros(d_w1[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "w1", p, cur_step, 2, rank, size); } + energy_zero(&energy, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], 0); CUCHK(cudaStreamSynchronize(stream_i)); @@ -2089,6 +2098,8 @@ if (usemms) { // 4 + 2 * ngsl + nyt[p] - 50, nzt[p] - 16, DH[p], t, 0); } + + energy_zero(&energy, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], 0); for (p = 0; p < ngrids; p++) { @@ -2584,9 +2595,13 @@ if (usemms) { cur_step, nt, p); } -#define TOPO_USE_VTK 1 - if (cur_step % 10 == 0) - topo_write_vtk(&T, cur_step, 1); +#if TOPO + energy_rate(&energy, cur_step, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], d_d1[0], d_mu[0], d_lam[0], &T.metrics_f, &T.metrics_g, nxt[0], nyt[0], nzt[0], rank, MCW); +#endif + +//#define TOPO_USE_VTK 1 +// if (cur_step % 10 == 0) +// topo_write_vtk(&T, cur_step, 1); if (cur_step % NTISKP == 0) { @@ -3006,6 +3021,8 @@ if (usemms) { topo_free(&T); receivers_finalize(); sources_finalize(); + energy_output(&energy, ENERGYFILE); + energy_free(&energy); #endif cudaStreamDestroy(stream_1); //cudaStreamDestroy(stream_1b); diff --git a/src/topography/CMakeLists.txt b/src/topography/CMakeLists.txt index 6de6ef4..83111fe 100644 --- a/src/topography/CMakeLists.txt +++ b/src/topography/CMakeLists.txt @@ -40,15 +40,14 @@ set(LIBRARIES functions ) -add_library(topography - topography.c velocity.cu stress.cu - geometry.c host.c grids.c mms.cu - ) +set(TOPOGRAPHY_LIBRARIES + topography.c velocity.cu stress.cu + geometry.c host.c grids.c mms.cu energy.cu + ) + +add_library(topography ${TOPOGRAPHY_LIBRARIES}) -add_library(topography_no_bc - topography.c velocity.cu stress.cu - geometry.c host.c grids.c mms.cu - ) +add_library(topography_no_bc ${TOPOGRAPHY_LIBRARIES}) target_link_libraries(topography ${LIBRARIES}) diff --git a/src/topography/energy.cu b/src/topography/energy.cu new file mode 100644 index 0000000..35c038c --- /dev/null +++ b/src/topography/energy.cu @@ -0,0 +1,181 @@ +#include + +__global__ void energy_kernel( + double *kinetic_rate, double *strain_rate, const float *vxp, + const float *vyp, const float *vzp, const float *xxp, const float *yyp, + const float *zzp, const float *xyp, const float *xzp, const float *yzp, + const float *vx, const float *vy, const float *vz, const float *xx, + const float *yy, const float *zz, const float *xy, const float *xz, + const float *yz, const float *f, const float *f_1, const float *f_2, + const float *f_c, const float *g3, const float *g3_c, + const float *rho, const float *mui, const float *lami, + const int nx, const int ny, const int nz) { + int idz = threadIdx.x + blockDim.x * blockIdx.x; + int idy = threadIdx.y + blockDim.y * blockIdx.y; + + if (idz >= nz || idy >= ny) { + idz = 0; + idy = 0; + } + + int my = ny + 4 + 2 * ngsl; + int mz = nz + 2 * align; + + int line = mz; + int slice = my * mz; + int offset = idz + align + line * (2 + ngsl + idy) + slice * (2 + ngsl); + + int fline = 2 * align + 4 + ny + 2 * ngsl; + int f_offset = 2 + ngsl + idy + align + fline * (2 + ngsl); + int g_offset = align + idz; + + double kinetic_E = 0.0; + double strain_E = 0.0; + + float Hz_hat = 1.0f; + float Hz = 1.0f; + + const float hhzr[5] = {0.3445563972099920, 0.4372900885645984, + 1.3056954965124901, 0.9124580177129197, + 1.0000000000000000}; + const float hzr[5] = {0.0000000000000000, 0.2812150147607664, + 1.4480216223843674, 0.6769783776156325, + 1.0937849852392336}; + + + int k = nz - idz - 1; + if (k < 5 && k >= 0) { + Hz_hat = hhzr[k]; + Hz = hzr[k]; + } + + int pos = offset; + int fpos = f_offset; + int gpos = g_offset; + + + for (int i = 0; i < nx; ++i) { + + + float Jx = f_1[fpos] * g3_c[gpos]; + float Jy = f_2[fpos] * g3_c[gpos]; + float Jz = f_c[fpos] * g3[gpos]; + float Jxx = f_c[fpos] * g3_c[gpos]; + float Jxy = f[fpos] * g3_c[gpos]; + float Jxz = f_1[fpos] * g3[gpos]; + float Jyz = f_2[fpos] * g3[gpos]; + + float rhox = 0.25f * (rho[pos - 1] + rho[pos - line - 1] + rho[pos] + rho[pos - line]); + float rhoy = 0.25f * (rho[pos - 1] + rho[pos + slice - 1] + rho[pos] + rho[pos + slice]); + float rhoz = 0.25f * (rho[pos] + rho[pos + slice] + rho[pos - line] + rho[pos + slice - line]); + + + float muixy = 0.5f * (mui[pos] + mui[pos-1]); + float muixz = 0.5f * (mui[pos] + mui[pos-line]); + float muiyz = 0.5f * (mui[pos] + mui[pos+slice]); + float lamixx = + (lami[pos - 1] + lami[pos - 1 + slice] + lami[pos - 1 + slice - line] + + lami[pos - line - 1] + lami[pos] + lami[pos + slice] + + lami[pos + slice - line] + lami[pos - line]) / 8.f; + float lam = 1.0f / lamixx; + float muixx = + (mui[pos - 1] + mui[pos - 1 + slice] + mui[pos - 1 + slice - line] + + mui[pos - line - 1] + mui[pos] + mui[pos + slice] + + mui[pos + slice - line] + mui[pos - line]) / 8.f; + float mu = 1.0f / muixx; + float lam_mu = 0.5f * lam / (mu * (3.0f * lam + 2.0f * mu)); + float trace = + (xx[pos] - xxp[pos]) + (yy[pos] - yyp[pos]) + (zz[pos] - zzp[pos]); + + double exx = 0.5f * muixx * (xx[pos] - xxp[pos]) - lam_mu * trace; + double eyy = 0.5f * muixx * (yy[pos] - yyp[pos]) - lam_mu * trace; + double ezz = 0.5f * muixx * (zz[pos] - zzp[pos]) - lam_mu * trace; + double exy = 0.5f * muixy * (xy[pos] - xyp[pos]); + double exz = 0.5f * muixz * (xz[pos] - xzp[pos]); + double eyz = 0.5f * muiyz * (yz[pos] - yzp[pos]); + + kinetic_E += 0.5f * Jx * Hz_hat * vx[pos] * rhox * (vx[pos] - vxp[pos]) + + 0.5f * Jy * Hz_hat * vy[pos] * rhoy * (vy[pos] - vyp[pos]) + + 0.5f * Jz * Hz * vz[pos] * rhoz * (vz[pos] - vzp[pos]); + strain_E += + 0.5f * xxp[pos] * Jxx * Hz_hat * exx + + 0.5f * yyp[pos] * Jxx * Hz_hat * eyy + + 0.5f * zzp[pos] * Jxx * Hz_hat * ezz + + 1.0f * xyp[pos] * Jxy * Hz_hat * exy + + 1.0f * xzp[pos] * Jxz * Hz * exz + + 1.0f * yzp[pos] * Jyz * Hz * eyz; + + pos += slice; + fpos += fline; + } + + if (idz > nz - 1 || idy > ny - 1) { + kinetic_E = 0; + strain_E = 0; + } + + __shared__ double spartial_kinetic[1024]; + __shared__ double spartial_strain[1024]; + + double kin = kinetic_E; + double str = strain_E; + for (int i = 16; i > 0; i /= 2) { + kin += __shfl_down_sync(0xffffffff, kin, i); + str += __shfl_down_sync(0xffffffff, str, i); + } + + if (threadIdx.x == 0) { + spartial_kinetic[threadIdx.y] = kin; + spartial_strain[threadIdx.y] = str; + } + __syncthreads(); + + if (threadIdx.x == 0 && threadIdx.y == 0) { + double block_strain_rate = 0.0; + double block_kinetic_rate = 0.0; + for (int i = 0; i < blockDim.y; ++i) { + block_kinetic_rate += spartial_kinetic[i]; + block_strain_rate += spartial_strain[i]; + } + + atomicAdd(strain_rate, block_strain_rate); + atomicAdd(kinetic_rate, block_kinetic_rate); + } +} + +void energy_rate(energy_t *e, const int step, const float *d_vx, const float *d_vy, + const float *d_vz, const float *d_xx, const float *d_yy, + const float *d_zz, const float *d_xy, const float *d_xz, + const float *d_yz, const float *d_rho, const float *d_mui, + const float *d_lami, + const f_grid_t *metrics_f, + const g_grid_t *metrics_g, + const int nx, const int ny, const int nz) +{ + if (!e->use || e->index >= e->num_steps || step % e->stride != 0) return; + + double out_kinetic[1] = {0.0}; + double out_strain[1] = {0.0}; + CUCHK(cudaMemset(e->kinetic_rate, 0, sizeof(double))); + CUCHK(cudaMemset(e->strain_rate, 0, sizeof(double))); + + + dim3 threads (32, 4, 1); + dim3 blocks ( (nz - 4) / threads.x + 1 , (ny - 1) / threads.y + 1, 1); + energy_kernel<<>>(e->kinetic_rate, e->strain_rate, e->d_vxp, e->d_vyp, e->d_vzp, e->d_xxp, e->d_yyp, e->d_zzp, e->d_xyp, e->d_xzp, e->d_yzp, d_vx, d_vy, d_vz, d_xx, d_yy, d_zz, d_xy, d_xz, d_yz, metrics_f->d_f, metrics_f->d_f_1, metrics_f->d_f_2, metrics_f->d_f_c, metrics_g->d_g3, metrics_g->d_g3_c, d_rho, d_mui, d_lami, nx, ny, nz); + CUCHK(cudaGetLastError()); + cudaMemcpy(out_kinetic, e->kinetic_rate, sizeof(double), cudaMemcpyDeviceToHost); + cudaMemcpy(out_strain, e->strain_rate, sizeof(double), cudaMemcpyDeviceToHost); + CUCHK(cudaGetLastError()); + + double sum_kinetic, sum_strain; + MPICHK(MPI_Reduce(out_kinetic, &sum_kinetic, 1, MPI_DOUBLE, MPI_SUM, 0, e->comm)); + MPICHK(MPI_Reduce(out_strain, &sum_strain, 1, MPI_DOUBLE, MPI_SUM, 0, e->comm)); + if (e->rank != 0) return; + e->kinetic_energy_rate[e->index] = sum_kinetic; + e->strain_energy_rate[e->index] = sum_strain; + e->time[e->index] = (double)step * e->dt; + printf("step = %d t = %g, kinetic energy rate = %g strain energy rate = %g , sum = %g \n", step, e->time[e->index], sum_kinetic, sum_strain, sum_kinetic + sum_strain); + e->index++; + +} diff --git a/src/topography/kernels/velocity.cu b/src/topography/kernels/velocity.cu index ee084e7..8b973a3 100644 --- a/src/topography/kernels/velocity.cu +++ b/src/topography/kernels/velocity.cu @@ -2519,10 +2519,10 @@ __launch_bounds__(DTOPO_BUF_VEL_111_MAX_THREADS_PER_BLOCK) (2 * align + nz) * ((j) + ngsl + 2)] _prec rho1 = 0.25 * (_rho(i, j + rj0, k - 1) + _rho(i, j + rj0 - 1, k - 1)) + 0.25 * (_rho(i, j + rj0, k) + _rho(i, j + rj0 - 1, k)); - _prec rho2 = 0.25 * (_rho(i, j + rj0, k - 1) + _rho(i - 1, j + rj0, k - 1)) + - 0.25 * (_rho(i, j + rj0, k) + _rho(i - 1, j + rj0, k)); - _prec rho3 = 0.25 * (_rho(i, j + rj0, k) + _rho(i - 1, j + rj0, k)) + - 0.25 * (_rho(i, j + rj0 - 1, k) + _rho(i - 1, j + rj0 - 1, k)); + _prec rho2 = 0.25 * (_rho(i, j + rj0, k - 1) + _rho(i + 1, j + rj0, k - 1)) + + 0.25 * (_rho(i, j + rj0, k) + _rho(i + 1, j + rj0, k)); + _prec rho3 = 0.25 * (_rho(i, j + rj0, k) + _rho(i + 1, j + rj0, k)) + + 0.25 * (_rho(i, j + rj0 - 1, k) + _rho(i + 1, j + rj0 - 1, k)); _prec Ai1 = _f_1(i, j + rj0) * _g3_c(k) * rho1; Ai1 = nu * 1.0 / Ai1; @@ -3093,12 +3093,12 @@ __launch_bounds__(DTOPO_BUF_VEL_112_MAX_THREADS_PER_BLOCK) 0.25 * (_rho(i, j + rj0, kb + 0) + _rho(i, j + rj0 - 1, kb + 0)) + 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i, j + rj0 - 1, kb + 1)); _prec rho2 = - 0.25 * (_rho(i, j + rj0, kb + 0) + _rho(i - 1, j + rj0, kb + 0)) + - 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i - 1, j + rj0, kb + 1)); + 0.25 * (_rho(i, j + rj0, kb + 0) + _rho(i + 1, j + rj0, kb + 0)) + + 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i + 1, j + rj0, kb + 1)); _prec rho3 = - 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i - 1, j + rj0, kb + 1)) + + 0.25 * (_rho(i, j + rj0, kb + 1) + _rho(i + 1, j + rj0, kb + 1)) + 0.25 * (_rho(i, j + rj0 - 1, kb + 1) + - _rho(i - 1, j + rj0 - 1, kb + 1)); + _rho(i + 1, j + rj0 - 1, kb + 1)); _prec Ai1 = _f_1(i, j + rj0) * _g3_c(nz - 1 - k) * rho1; Ai1 = nu * 1.0 / Ai1; _prec Ai2 = _f_2(i, j + rj0) * _g3_c(nz - 1 - k) * rho2; From 55449c23dc83398b67e187a4fced2374972dc013 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Tue, 31 Aug 2021 17:44:09 -0700 Subject: [PATCH 46/56] disable energy module when not in use. (#25) --- include/topography/energy.cuh | 1 + 1 file changed, 1 insertion(+) diff --git a/include/topography/energy.cuh b/include/topography/energy.cuh index 1d14f97..d206c4e 100644 --- a/include/topography/energy.cuh +++ b/include/topography/energy.cuh @@ -93,6 +93,7 @@ energy_t energy_init(int useenergy, const int rank, const MPI_Comm comm, const i void energy_update_previous_solutions(energy_t *e, float *d_vx, float *d_vy, float *d_vz, float *d_xx, float *d_yy, float *d_zz, float *d_xy, float *d_xz, float *d_yz) { + if (!e->use) return; CUCHK(cudaMemcpy(e->d_vxp, d_vx, e->num_bytes, cudaMemcpyDeviceToDevice)); CUCHK(cudaMemcpy(e->d_vyp, d_vy, e->num_bytes, cudaMemcpyDeviceToDevice)); CUCHK(cudaMemcpy(e->d_vzp, d_vz, e->num_bytes, cudaMemcpyDeviceToDevice)); From 7553165d950bfe99bfe854bf5a345f163b5af6d5 Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Sat, 9 Oct 2021 09:01:40 -0700 Subject: [PATCH 47/56] fix incorrect placement of source/receivers in the y-direction and point force parallel consistency issue (#26) * fix incorrect placement of source/receivers in the y-direction when using multiple grid blocks. This fix Shifts sources/receivers in the y-direction by one grid spacing of the previous grid: y = y_prev - h_prev. * remove inactive code in source initialization. * Refactor source distribution (#27) * change y-axis for DM blocks instead of moving source/recv. * init source distribution. * modify partitioning of receivers so that it is easier to understand. * modify partitioning of sgts. * replace old partitioning kernels with new ones that uses grid indices instead of coordinates. * refactor distribute. * add grid block number to data init function so that it correctly generates y-values for DM blocks. * delete old partition functions. * cleanup partitioning functions and add guard statements to source kernels. * remove guard statements. * add default case. * update comment. * Fix parallel bug in point force insertion (#28) * add error code handling for mapping module * Fix parallel bug in point force insertion. * clean-up error handling in mapping. * Fix point force guards for Cartesian kernel and disable debugging output. * Refactor source distribution (#29) * change y-axis for DM blocks instead of moving source/recv. * init source distribution. * modify partitioning of receivers so that it is easier to understand. * modify partitioning of sgts. * replace old partitioning kernels with new ones that uses grid indices instead of coordinates. * refactor distribute. * add grid block number to data init function so that it correctly generates y-values for DM blocks. * delete old partition functions. * cleanup partitioning functions and add guard statements to source kernels. * remove guard statements. * add default case. * update comment. * add error code handling. * debug partitioning. * Fix parallel bug in point force insertion. The point force must be applied before the front/back send/recv kernels execute. * clean-up error handling in mapping. * Fix point force guards for Cartesian kernel and disable debugging output. * fix bounds guards for point force kernels. --- include/grid/grid_3d.h | 17 ++- include/interpolation/interpolation.h | 10 +- include/mpi/distribute.h | 6 +- include/topography/grids.h | 2 +- include/topography/mapping.h | 7 +- src/awp/pmcl3d.c | 22 ++-- src/grid/grid_3d.c | 67 ++-------- src/interpolation/interpolation.c | 45 +++++-- src/mpi/CMakeLists.txt | 1 - src/mpi/distribute.c | 103 +++++++++++----- src/topography/grids.c | 25 ++-- src/topography/mapping.c | 42 ++++++- src/topography/sources/forces.c | 2 +- src/topography/sources/source.c | 87 ++++--------- src/topography/sources/source.cu | 10 +- src/topography/sources/sources.c | 40 ------ src/topography/topography.c | 4 - tests/fixtures/source_x.txt | 4 +- tests/fixtures/source_xx.txt | 9 +- tests/fixtures/source_xy.txt | 4 +- tests/fixtures/source_xz.txt | 4 +- tests/fixtures/source_y.txt | 4 +- tests/fixtures/source_yz.txt | 4 +- tests/fixtures/source_z.txt | 4 +- tests/interpolation/test_interpolation.c | 12 +- tests/topography/sources/CMakeLists.txt | 17 +++ .../sources/test_source_distribution.c | 115 ++++++++++++++++++ tests/topography/sources/test_sources_dm.c | 12 +- 28 files changed, 394 insertions(+), 285 deletions(-) create mode 100644 tests/topography/sources/test_source_distribution.c diff --git a/include/grid/grid_3d.h b/include/grid/grid_3d.h index 34a1fce..fc002fe 100644 --- a/include/grid/grid_3d.h +++ b/include/grid/grid_3d.h @@ -197,6 +197,21 @@ grid1_t grid_grid1_z(const grid3_t grid); * Number of elements written. */ int grid_fill1(prec *out, const grid1_t grid, const int isxdir); +/* + * + * Fill the array `out` with the grid point values in the y-direction for a given DM block + * ('blocknum') in one dimension. + * + * Arguments: + * out: Array to fill + * n: Array size. Must be greater than the grid size. + * grid: 1D grid data structure. + * blocknum: Block number. Must be a non-negative integer. + * + * Return value: + * Number of elements written. + */ +int grid_fill_y_dm(prec *out, const grid1_t grid, const int blocknum); /* * Check if a query point is in bounds or not. The query point is in bounds if @@ -212,8 +227,6 @@ int grid_fill1(prec *out, const grid1_t grid, const int isxdir); */ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid); -int grid_in_bounds_force(const _prec *x, const _prec q, const grid1_t grid); -int grid_in_bounds_receiver(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_sgt(const _prec *x, const _prec q, const grid1_t grid); int grid_in_bounds_moment_tensor(const _prec *x, const _prec q, const grid1_t grid); diff --git a/include/interpolation/interpolation.h b/include/interpolation/interpolation.h index 0824216..e7dae04 100644 --- a/include/interpolation/interpolation.h +++ b/include/interpolation/interpolation.h @@ -55,9 +55,8 @@ int interp_grid_argnearest(int *nearest, const prec *x, const prec q, * last: and last index + 1 of grid points in stencil. (output) * lower: Number of points to the left. * upper: Number of points to the right. - * nearest: Index of grid point nearest to query point. (output) + * nearest: Index of grid point nearest to query point. * n: Number of grid points. - * q: Query point. * * Returns: * Error code (SUCCESS, ERR_OUT_OF_BOUNDS_LOWER, ERR_OUT_OF_BOUNDS_UPPER) @@ -66,7 +65,7 @@ int interp_grid_argnearest(int *nearest, const prec *x, const prec q, int interp_argnearest_range(int *first, int *last, const int lower, const int upper, const int nearest, - const int n, const prec query); + const int n); /* Perform 1D Lagrange interpolation by interpolating in the neighborhood of * each query point. @@ -114,6 +113,11 @@ int interp_lagrange3(prec *out, const prec *in, const prec *x, const prec *y, const int deg); +// Get number of points to the left (see interp_argnearest_range) +int interp_get_lower(const prec xnearest, const prec query, const int deg); +// Get number of points to the right (see interp_argnearest_range) +int interp_get_upper(const prec xnearest, const prec query, const int deg); + #ifdef __cplusplus } #endif diff --git a/include/mpi/distribute.h b/include/mpi/distribute.h index 2e0f262..7197562 100644 --- a/include/mpi/distribute.h +++ b/include/mpi/distribute.h @@ -16,7 +16,11 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, const size_t n, const grid3_t grid, const int *grid_numbers, const int grid_number, const enum source_type st, const enum dist_options mode); -int dist_indices_in_bounds(const prec qx, const prec qy, const prec *x, const prec *y, grid1_t grid_x, grid1_t grid_y, const enum source_type st); +int dist_indices_in_bounds(const prec qx, const prec qy, + const prec *x, const size_t mx, + const prec *y, const size_t my, + const prec hx, const prec hy, + const enum source_type st); #ifdef __cplusplus } #endif diff --git a/include/topography/grids.h b/include/topography/grids.h index 0056fe4..e082a07 100644 --- a/include/topography/grids.h +++ b/include/topography/grids.h @@ -36,7 +36,7 @@ grids_t grids_init(const int nx, const int ny, const int nz, const int coord_x, void grids_finalize(grids_t *grids); -void grid_data_init(grid_data_t *grid_data, const grid3_t grid); +void grid_data_init(grid_data_t *grid_data, const grid3_t grid, const int block_number); void grid_data_free(grid_data_t *grid_data); grid3_t grids_select(const enum grid_types grid_type, const grids_t *grids); diff --git a/include/topography/mapping.h b/include/topography/mapping.h index 122f28a..4d08f37 100644 --- a/include/topography/mapping.h +++ b/include/topography/mapping.h @@ -15,7 +15,6 @@ struct mapping { }; - double map_height(const int nz, const double dz); struct mapping map_init(const double dzb, const double dzt, const double h); int map_find_cell_r(const double r, const struct mapping *map); @@ -24,4 +23,10 @@ double map_eval(const double r, const struct mapping *map); double map_eval_derivative(const double r, const struct mapping *map); double map_invert(const double z, const struct mapping *map, const double eps, const int maxiter); +// Error handling +enum map_err_codes {MAP_SUCCESS, MAP_NON_MONOTONIC, MAP_OUTSIDE}; + +const char* map_error_string(const enum map_err_codes err_code); +enum map_err_codes map_get_last_error(void); + #endif diff --git a/src/awp/pmcl3d.c b/src/awp/pmcl3d.c index 8999f16..00bcab1 100644 --- a/src/awp/pmcl3d.c +++ b/src/awp/pmcl3d.c @@ -1809,7 +1809,6 @@ if (usemms) { sgt_write(d_xx[p], d_yy[p], d_zz[p], d_xy[p], d_xz[p], d_yz[p], 0, nt, p); } sources_read(0); - forces_read(0); if (rank == 0) fchk = fopen(CHKFILE, "a+"); @@ -1833,10 +1832,17 @@ if (usemms) { //This loop has no loverlapping because there is source input for (cur_step = 1; cur_step <= nt; cur_step++) { + + forces_read(cur_step - 1); + if (T.use) + forces_add(d_u1[0], d_v1[0], d_w1[0], d_d1[0], cur_step - 1, DH[0], DT, + &T.metrics_f, &T.metrics_g, 0); + else + forces_add_cartesian_velocity(d_u1[0], d_v1[0], d_w1[0], cur_step - 1, nxt[0], nyt[0], nzt[0], DH[0], DT, 0); + energy_zero(&energy, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], 0); energy_update_previous_solutions(&energy, d_u1[0], d_v1[0], d_w1[0], d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0]); - //CUCHK(cudaDeviceSynchronize()); CUCHK(cudaStreamSynchronize(stream_i)); CUCHK(cudaStreamSynchronize(stream_1)); CUCHK(cudaStreamSynchronize(stream_2)); @@ -1854,6 +1860,7 @@ if (usemms) { } CUCHK(cudaGetLastError()); //cerr=cudaGetLastError(); + // for (p = 0; p < ngrids; p++) { @@ -1903,6 +1910,7 @@ if (usemms) { CUCHK(cudaStreamSynchronize(stream_1)); /*these fix sync issues, but not sure why*/ CUCHK(cudaStreamSynchronize(stream_2)); + //usleep(1); if (!usetopo || p > 0) @@ -2072,10 +2080,6 @@ if (usemms) { dump_nonzeros(d_yz[p], nxt[p] + 4 + 8 * loop, nyt[p] + 4 + 8 * loop, nzt[p] + 2 * align, "yz", p, cur_step, 2, rank, size); } - //if (!usetopo) - //forces_add_cartesian(d_xz[0], d_yz[0], d_zz[0], cur_step, nxt[0], nyt[0], nzt[0], DH[0], DT, 0); - if (!usetopo) - forces_add_cartesian_velocity(d_u1[0], d_v1[0], d_w1[0], cur_step, nxt[0], nyt[0], nzt[0], DH[0], DT, 0); if (usemms) { float t = DT * (cur_step); @@ -2268,14 +2272,14 @@ if (usemms) { } sources_read(cur_step); - forces_read(cur_step); + //forces_read(cur_step); if (T.use) { sources_add_curvilinear(d_xx[0], d_yy[0], d_zz[0], d_xy[0], d_xz[0], d_yz[0], cur_step, DH[0], DT, &T.metrics_f, &T.metrics_g, 0); - forces_add(d_u1[0], d_v1[0], d_w1[0], d_d1[0], cur_step, DH[0], DT, - &T.metrics_f, &T.metrics_g, 0); + //forces_add(d_u1[0], d_v1[0], d_w1[0], d_d1[0], cur_step, DH[0], DT, + // &T.metrics_f, &T.metrics_g, 0); for (p = 1; p < ngrids; p++) { sources_add_cartesian(d_xx[p], d_yy[p], d_zz[p], diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index 1dbe1ba..1aad110 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -286,6 +286,17 @@ int grid_fill1(prec *out, const grid1_t grid, const int isxdir) return grid.size; } +int grid_fill_y_dm(prec *out, const grid1_t grid, const int blocknum) { + int count = grid_fill1(out, grid, 0); + if (blocknum > 0) { + _prec h = grid.gridspacing / 3.0; + for (int i = 0; i < grid.size; ++i) { + out[i] += h; + } + } + return count; +} + int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid) { @@ -307,57 +318,6 @@ int grid_in_bounds1(const _prec *x, const _prec q, const grid1_t grid) return SUCCESS; } -int grid_in_bounds_receiver(const _prec *x, const _prec q, const grid1_t grid) -{ - _prec h = grid.gridspacing; - if ( q - (x[0] - h / 2) < 0 ) { - return ERR_OUT_OF_BOUNDS_LOWER; - } - if ( q - (x[grid.size - 1] + h / 2) >= 0) { - return ERR_OUT_OF_BOUNDS_UPPER; - } - return SUCCESS; - -} - -int grid_in_bounds_sgt(const _prec *x, const _prec q, const grid1_t grid) -{ - _prec h = grid.gridspacing; - if ( q - (x[0] - h / 2 + h * ngsl / 2) < 0 ) { - return ERR_OUT_OF_BOUNDS_LOWER; - } - if ( q - (x[grid.size - 1] + h / 2 - h * ngsl / 2) >= 0) { - return ERR_OUT_OF_BOUNDS_UPPER; - } - - return SUCCESS; - -} - -int grid_in_bounds_force(const _prec *x, const _prec q, const grid1_t grid) -{ - _prec h = grid.gridspacing; - if ( q - (x[0] - 2 * h) < 0 ) { - return ERR_OUT_OF_BOUNDS_LOWER; - } - if ( q - (x[grid.size - 1] + 2 * h) >= 0) { - return ERR_OUT_OF_BOUNDS_UPPER; - } - return SUCCESS; -} - -int grid_in_bounds_moment_tensor(const _prec *x, const _prec q, const grid1_t grid) -{ - _prec h = grid.gridspacing; - if ( q - (x[0] - ngsl / 2 * h) < 0 ) { - return ERR_OUT_OF_BOUNDS_LOWER; - } - if ( q - (x[grid.size - 1] + ngsl / 2 * h) >= 0) { - return ERR_OUT_OF_BOUNDS_UPPER; - } - return SUCCESS; -} - int grid_fill_x(prec *out, const fcn_grid_t grid) { grid1_t grid1 = grid_grid1_x(grid); @@ -473,17 +433,12 @@ void global_to_local(_prec *zloc, int *block_index, const _prec z, hloc *= 3; bi = i; - //printf("z0 + H = %g i = %d \n", z0, i); - // Check if the coordinate is in the overlap zone, if so, push it to the next grid if (z0 > 0 && z0 < grid_overlap(hloc / 3) ) { - //printf("in overlap zone, z0 = %g i = %d overlap = %g \n", z0, i, overlap); continue; } if (z0 > 0) break; - - //printf("next, z0 = %g i = %d \n", z0, i); } diff --git a/src/interpolation/interpolation.c b/src/interpolation/interpolation.c index dfef26b..a898de7 100644 --- a/src/interpolation/interpolation.c +++ b/src/interpolation/interpolation.c @@ -49,7 +49,7 @@ int interp_grid_argnearest(int *nearest, const prec *x, const prec q, grid1_t int interp_argnearest_range(int *first, int *last, const int lower, const int upper, const int nearest, - const int n, const prec query) + const int n) { int err = 0; int inearest = nearest; @@ -106,19 +106,11 @@ int interp_lagrange1_coef(prec *xloc, prec *l, int *first, const prec *x, q = x[n-1]; } - if (deg % 2 == 1) { - if (x[nearest] - query > 0) { - lower = (int)ceil((double)deg * 0.5); - upper = (int)floor((double)deg * 0.5); - } else { - lower = (int)floor((double)deg * 0.5); - upper = (int)ceil((double)deg * 0.5); - } - + lower = interp_get_lower(x[nearest], query, deg); + upper = interp_get_upper(x[nearest], query, deg); - } - err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n, - q); + err |= + interp_argnearest_range(&lower, &upper, lower, upper, nearest, n); for (int j = 0; j < deg + 1; ++j) { xloc[j] = x[lower + j]; } @@ -170,3 +162,30 @@ int interp_lagrange3(prec *out, const prec *in, const prec *x, const prec *y, return err; } +int interp_get_lower(const prec xnearest, const prec query, const int deg) { + int lower = (int)ceil((double)deg * 0.5); + if (deg % 2 == 1) { + if (xnearest - query > 0) { + lower = (int)ceil((double)deg * 0.5); + } else { + lower = (int)floor((double)deg * 0.5); + } + } + return lower; +} + +int interp_get_upper(const prec xnearest, const prec query, const int deg) { + int upper = (int)ceil((double)deg * 0.5); + if (deg % 2 == 1) { + if (xnearest - query > 0) { + upper = (int)floor((double)deg * 0.5); + } else { + upper = (int)ceil((double)deg * 0.5); + } + + + } + return upper; +} + + diff --git a/src/mpi/CMakeLists.txt b/src/mpi/CMakeLists.txt index 9259300..9fa7d45 100644 --- a/src/mpi/CMakeLists.txt +++ b/src/mpi/CMakeLists.txt @@ -1,5 +1,4 @@ set(HEADERS - ${AWP_SOURCE_DIR}/include/mpi/partition.h ${AWP_SOURCE_DIR}/include/mpi/distribute.h ${AWP_SOURCE_DIR}/include/mpi/io.h ${AWP_SOURCE_DIR}/include/test/test.h diff --git a/src/mpi/distribute.c b/src/mpi/distribute.c index e052c10..141f60f 100644 --- a/src/mpi/distribute.c +++ b/src/mpi/distribute.c @@ -1,14 +1,76 @@ #include #include #include +#include #include #include #include #include #include +#include #include +int grid_in_bounds_output(const prec *x, const size_t mx, const prec q, const prec h) +{ + prec x_left = x[2 + ngsl] - h / 2.0; + prec x_right = x[mx - 3 - ngsl] + h / 2.0; + + if ( q - x_left < 0 ) { + return ERR_OUT_OF_BOUNDS_LOWER; + } + if ( q - x_right >= 0) { + return ERR_OUT_OF_BOUNDS_UPPER; + } + + return SUCCESS; + +} + +int grid_in_bounds_input(const prec *x, const int mx, const prec q, const prec h) +{ + // Split the input (moment tensor / force) based on the subdomain it belongs to. Inputs that + // fall in the overlap zone belongs to both processes. The force kernels have guard + // statements that make sure that no forces are applied outside the actual compute + // region. For the moment tensor source, it doesn't matter that points outside the compute + // region are modified. + if ( q - x[0] < h / 2 ) { + return ERR_OUT_OF_BOUNDS_LOWER; + } + if ( q - x[mx - 1] >= h / 2) { + return ERR_OUT_OF_BOUNDS_UPPER; + } + return SUCCESS; +} + +int dist_indices_in_bounds(const prec qx, const prec qy, + const prec *x, const size_t mx, + const prec *y, const size_t my, + const prec hx, const prec hy, + const enum source_type st) { + int inbounds_x = 0; + int inbounds_y = 0; + switch (st) { + case MOMENT_TENSOR: + case FORCE: + inbounds_x = grid_in_bounds_input(x, mx, qx, hx); + inbounds_y = grid_in_bounds_input(y, my, qy, hy); + break; + case RECEIVER: + case SGT: + inbounds_x = grid_in_bounds_output(x, mx, qx, hx); + inbounds_y = grid_in_bounds_output(y, my, qy, hy); + break; + default: + fprintf(stderr, "Unknown source type passed to %s:%s!\n", + __FILE__, __func__); + break; + } + if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) + return 1; + return 0; +} + /* Distributes indices based on which part of space they belong to. indices: (output) indices for a particular query point (qx[i], qy[i]) that lies in `grid`. @@ -25,38 +87,9 @@ index array (DIST_INSERT_INDICES) */ - -__inline__ int dist_indices_in_bounds(const prec qx, const prec qy, - const prec *x, const prec *y, - grid1_t grid_x, grid1_t grid_y, - const enum source_type st) { - int inbounds_x = 0; - int inbounds_y = 0; - switch (st) { - case MOMENT_TENSOR: - inbounds_x = grid_in_bounds_moment_tensor(x, qx, grid_x); - inbounds_y = grid_in_bounds_moment_tensor(y, qy, grid_y); - break; - case FORCE: - inbounds_x = grid_in_bounds_force(x, qx, grid_x); - inbounds_y = grid_in_bounds_force(y, qy, grid_y); - break; - case RECEIVER: - inbounds_x = grid_in_bounds_receiver(x, qx, grid_x); - inbounds_y = grid_in_bounds_receiver(y, qy, grid_y); - break; - case SGT: - inbounds_x = grid_in_bounds_sgt(x, qx, grid_x); - inbounds_y = grid_in_bounds_sgt(y, qy, grid_y); - break; - } - if (inbounds_x == SUCCESS && inbounds_y == SUCCESS) - return 1; - return 0; -} - int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, - const size_t n, const grid3_t grid, const int *grid_numbers, + const size_t n, + const grid3_t grid, const int *grid_numbers, const int grid_number, const enum source_type st, const enum dist_options mode) { @@ -64,17 +97,21 @@ int dist_indices(int **indices, size_t *nidx, const prec *qx, const prec *qy, grid1_t grid_x = grid_grid1_x(grid); grid1_t grid_y = grid_grid1_y(grid); + size_t mx = grid_x.size; + size_t my = grid_y.size; + prec hx = grid_x.gridspacing; + prec hy = grid_y.gridspacing; prec *x = malloc(sizeof(x) * grid_x.size); prec *y = malloc(sizeof(y) * grid_y.size); grid_fill1(x, grid_x, 1); - grid_fill1(y, grid_y, 0); + grid_fill_y_dm(y, grid_y, grid_number); size_t j = *nidx; for (size_t i = 0; i < n; ++i) { - if (dist_indices_in_bounds(qx[i], qy[i], x, y, grid_x, grid_y, st) && + if (dist_indices_in_bounds(qx[i], qy[i], x, mx, y, my, hx, hy, st) && grid_numbers[i] == grid_number) { switch (mode) diff --git a/src/topography/grids.c b/src/topography/grids.c index 52a8231..5bbb7db 100644 --- a/src/topography/grids.c +++ b/src/topography/grids.c @@ -15,7 +15,6 @@ grids_t grids_init(const int nx, const int ny, const int nz, const int coord_x, int3_t size = {.x = nx, .y = ny, .z = nz}; int3_t coord = {.x = coord_x, .y = coord_y, .z = 0}; - //FIXME: Adjust depending on grid type: DM, topography, free surface. int3_t bnd1 = {0, 0, 0}; int3_t bnd2 = {0, 0, topography}; @@ -24,20 +23,20 @@ grids_t grids_init(const int nx, const int ny, const int nz, const int coord_x, prec h = gridspacing; // velocity grids - grids.x = grid_init(size, grid_x(), coord, bnd1, bnd2, 0, h); - grids.y = grid_init(size, grid_y(), coord, bnd1, bnd2, 0, h); - grids.z = grid_init(size, grid_z(), coord, bnd1, bnd2, 0, h); + grids.x = grid_init(size, grid_x(), coord, bnd1, bnd2, 2 + ngsl, h); + grids.y = grid_init(size, grid_y(), coord, bnd1, bnd2, 2 + ngsl, h); + grids.z = grid_init(size, grid_z(), coord, bnd1, bnd2, 2 + ngsl, h); // stress grids - grids.xx = grid_init(size, grid_xx(), coord, bnd1, bnd2, ngsl / 2, h); - grids.yy = grid_init(size, grid_yy(), coord, bnd1, bnd2, ngsl / 2, h); - grids.zz = grid_init(size, grid_zz(), coord, bnd1, bnd2, ngsl / 2, h); - grids.xy = grid_init(size, grid_xy(), coord, bnd1, bnd2, ngsl / 2, h); - grids.xz = grid_init(size, grid_xz(), coord, bnd1, bnd2, ngsl / 2, h); - grids.yz = grid_init(size, grid_yz(), coord, bnd1, bnd2, ngsl / 2, h); + grids.xx = grid_init(size, grid_xx(), coord, bnd1, bnd2, 2 + ngsl, h); + grids.yy = grid_init(size, grid_yy(), coord, bnd1, bnd2, 2 + ngsl, h); + grids.zz = grid_init(size, grid_zz(), coord, bnd1, bnd2, 2 + ngsl, h); + grids.xy = grid_init(size, grid_xy(), coord, bnd1, bnd2, 2 + ngsl, h); + grids.xz = grid_init(size, grid_xz(), coord, bnd1, bnd2, 2 + ngsl, h); + grids.yz = grid_init(size, grid_yz(), coord, bnd1, bnd2, 2 + ngsl, h); // Material and topography grid - grids.node = grid_init(size, grid_node(), coord, bnd1, bnd2, 0, h); + grids.node = grid_init(size, grid_node(), coord, bnd1, bnd2, 2 + ngsl, h); return grids; } @@ -46,7 +45,7 @@ void grids_finalize(grids_t *grids) { } -void grid_data_init(grid_data_t *grid_data, const grid3_t grid) +void grid_data_init(grid_data_t *grid_data, const grid3_t grid, const int block_number) { grid1_t xgrid = grid_grid1_x(grid); grid1_t ygrid = grid_grid1_y(grid); @@ -55,7 +54,7 @@ void grid_data_init(grid_data_t *grid_data, const grid3_t grid) grid_data->y = malloc(sizeof grid_data->y * ygrid.size); grid_data->z = malloc(sizeof grid_data->z * zgrid.size); grid_fill1(grid_data->x, xgrid, 1); - grid_fill1(grid_data->y, ygrid, 0); + grid_fill_y_dm(grid_data->y, ygrid, block_number); grid_fill1(grid_data->z, zgrid, 0); } diff --git a/src/topography/mapping.c b/src/topography/mapping.c index 38ad8c7..58cfa3a 100644 --- a/src/topography/mapping.c +++ b/src/topography/mapping.c @@ -7,6 +7,8 @@ const int VERBOSE = 0; #define EPSILON 1e-4 +int map_error = 0; + void hermite_cubic_basis(double b[4], const double t); void hermite_cubic_basis_derivative(double db[4], const double t); void adjust(double *m0, double *m1, const double s); @@ -31,9 +33,11 @@ void adjust(double *m0, double *m1, const double s) { double a = *m0 / s; double b = *m1 / s; - if (a < 0 || b < 0) + if (a < 0 || b < 0) { fprintf(stderr, "%s:%s():%d Non-monotonic mapping function data!\n", __FILE__, __func__, __LINE__); + map_error = MAP_NON_MONOTONIC; + } if (a * a + b * b > 9) { double v = 3.0 / sqrt(a * a + b * b); @@ -92,29 +96,37 @@ struct mapping map_init(const double dzb, const double dzt, const double h) { } int map_find_cell_r(const double r, const struct mapping *map) { - if (r < -EPSILON) + if (r < -EPSILON) { fprintf(stderr, "%s:%s():%d Outside interval (r = %f, r < 0)!\n", __FILE__, __func__, __LINE__, r); + map_error = MAP_OUTSIDE; + } else if (r <= map->h) return 0; else if (r > map->h && r <= 1.0 - map->h) return 1; else if (r <= 1.0) return 2; - if (r > 1.0 + EPSILON) + if (r > 1.0 + EPSILON) { fprintf(stderr, "%s:%s():%d Outside interval (r = %f, r > 1)!\n", __FILE__, __func__, __LINE__, r); + map_error = MAP_OUTSIDE; + } return -1; } int map_find_cell_z(const double z, const struct mapping *map) { - if (z < -EPSILON) + if (z < -EPSILON) { fprintf(stderr, "%s:%s():%d Outside interval (z = %f, z < 0)!\n", __FILE__, __func__, __LINE__, z); + map_error = MAP_OUTSIDE; + } else if (z <= map->dzb) return 0; else if (z > map->dzb && z <= 1.0 - map->dzt) return 1.0; else if (z <= 1.0) return 2; - if (z > 1.0 + EPSILON) + if (z > 1.0 + EPSILON) { fprintf(stderr, "%s:%s():%d Outside interval (z = %f, z > 1)!\n", __FILE__, __func__, __LINE__, z); + map_error = MAP_OUTSIDE; + } return -1; } @@ -166,3 +178,23 @@ double map_invert(const double z, const struct mapping *map, const double eps, c return rk; } + +const char* map_error_string(const enum map_err_codes err_code) { + switch (err_code) { + case MAP_SUCCESS: + return "All mapping operations completed successfully"; + break; + case MAP_NON_MONOTONIC: + return "The mapping function is non-monotonic\n"; + break; + case MAP_OUTSIDE: + return "The query point is outside the domain of definition of the mapping function\n"; + break; + default: + return "Unknown error code\n"; + } +} + +enum map_err_codes map_get_last_error(void) { + return map_error; +} diff --git a/src/topography/sources/forces.c b/src/topography/sources/forces.c index dde5291..0c3b05b 100644 --- a/src/topography/sources/forces.c +++ b/src/topography/sources/forces.c @@ -42,7 +42,7 @@ void interpolate_density(float **d_rho_interp, const float *d_rho, grid_node(), grids->z.coordinate, grids->z.boundary1, grids->z.boundary2, grids->z.gridspacing); grid_data_t xyz; - grid_data_init(&xyz, grid); + grid_data_init(&xyz, grid, 0); AWPCHK(cuinterp_init(&d_interp, xyz.x, xyz.y, xyz.z, grid, F->x[0], F->y[0], F->z[0], F->global_indices[0], diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index c4d44f4..e576b57 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -95,6 +95,8 @@ void source_find_grid_number(const input_t *input, const grids_t *grids, int *gr upper = lower; lower = lower - z1[z_grid.end]; + + _prec h = z_grid.gridspacing; for (int j = 0; j < length; ++j) { @@ -118,7 +120,7 @@ void source_find_grid_number(const input_t *input, const grids_t *grids, int *gr if (i + 1 != num_grids) { - overlap = z_grid.gridspacing * OVERLAP; + overlap = h * OVERLAP; } else { @@ -180,10 +182,14 @@ void source_init_common(source_t *src, const char *filename, src->length = 0; size_t *src_count = malloc(sizeof src_count * ngrids); + + for (int j = 0; j < ngrids; ++j) { size_t num_sources_in_block = 0; grid3_t grid = grids_select(grid_type, &grids[j]); + grid1_t grid_x = grid_grid1_x(grid); + AWPCHK(dist_indices(&src->indices, &num_sources_in_block, x, y, input->length, grid, grid_number, j, st, DIST_COUNT)); @@ -331,7 +337,7 @@ void source_init_common(source_t *src, const char *filename, // Map to parameter space case INPUT_VOLUME_COORD: if (block_height + src->z[j][k] < - MAPPING_START_POINT) { + OVERLAP * grid.gridspacing) { fprintf(stderr, "Source/Receiver cannot exist " "in the overlap zone on the " @@ -342,6 +348,8 @@ void source_init_common(source_t *src, const char *filename, // curvilinear grid transform double h = grid.gridspacing; + //fprintf(stderr, "block_height + src = %g, overlap = %g \n", + // block_height + src->z[j][k], h * OVERLAP); double H = block_height - h * OVERLAP; double Hf = f_interp[k] * H; double x = (H + src->z[j][k]) / Hf; @@ -352,21 +360,9 @@ void source_init_common(source_t *src, const char *filename, case INPUT_SURFACE_COORD: src->z[j][k] = z1[z_grid.size - 2]; break; - // FIXME: INPUT_BATHYMETRY_COORD - // Implement treatment for ocean - // bathymetry. - // Recommendation: Add a - // function to "receivers.c" and - // a function to to "receiver.c" - // Place the implementation in - // "receiver.c" but call this - // function for each receiver - // component in "receivers.c" } } - // TODO: Add inversion step if grid stretching function - // is used free(f_interp); free(x1); @@ -409,7 +405,7 @@ void source_init_common(source_t *src, const char *filename, grid.inner_size, grid.shift, grid.coordinate, grid.boundary1, grid.boundary2, grid.gridspacing); grid_data_t xyz; - grid_data_init(&xyz, full_grid); + grid_data_init(&xyz, grid, j); // Compute interpolation coefficients on the full grid AWPCHK(cuinterp_init(&src->interpolation[j], xyz.x, xyz.y, xyz.z, @@ -428,48 +424,8 @@ void source_init_common(source_t *src, const char *filename, } } - cuinterp_htod(&src->interpolation[j]); - - //Special treatment for sources located in the overlap zone - if (ngrids > 1) - { - for (size_t k = 0; k < src->lengths[j]; ++k) - { - //top block - if (j == 0) - { - //bottom two grids will not be used - if (src->interpolation[j].iz[k] < 2) - { - src->interpolation[j].iz[k] = 2; - } - } - //blocks in between - else if (j > 0 && j != ngrids - 1) - { - //bottom two grids will not be used - if (src->interpolation[j].iz[k] < 2) - { - src->interpolation[j].iz[k] = 2; - } - else if (src->interpolation[j].iz[k] > grid.size.z - 3) - { - //the top two grids in the coarse grid will not be used - src->interpolation[j].iz[k] = grid.size.z - 3; - } - } - //bottom block - else if (j > 0 && j == ngrids - 1) - { - if (src->interpolation[j].iz[k] > grid.size.z - 3) - { - //the top two grids in the coarse grid will not be used - src->interpolation[j].iz[k] = grid.size.z - 3; - } - } - } //k loop - } + cuinterp_htod(&src->interpolation[j]); #ifdef DEBUG_SOURCE { @@ -493,9 +449,10 @@ void source_init_common(source_t *src, const char *filename, } printf("\n"); - if (grid_type == X || grid_type == Y || grid_type == Z || grid_type == SX || grid_type == SY || grid_type == SZ || grid_type == XX || grid_type == XZ || grid_type == NODE) + if (grid_type == SX ) + //if (grid_type == X || grid_type == Y || grid_type == Z || grid_type == SX || grid_type == SY || grid_type == SZ || grid_type == XX || grid_type == XZ || grid_type == NODE) { - printf("rank = %d, grid_type = %s, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", + fprintf(stderr, "rank = %d, grid_type = %s, shift = %d %d %d id = %d origin = %f %f %f h = %f\n", rank, grid_typename(grid_type), grid.shift.x, grid.shift.y, grid.shift.z, j, x1[ngsl / 2], y1[ngsl / 2], z1[0], @@ -503,7 +460,7 @@ void source_init_common(source_t *src, const char *filename, for (size_t k = 0; k < src->lengths[j]; ++k) { - printf("query int x y z = %f %f %f | nearest x y z = %f %f %f | index = %d %d %d\n", + fprintf(stderr, "query int x y z = %f %f %f | nearest x y z = %f %f %f | index = %d %d %d\n", src->x[j][k], src->y[j][k], src->z[j][k], x1[ngsl / 2 + src->interpolation[j].ix[k] - ngsl], y1[ngsl / 2 + src->interpolation[j].iy[k] - ngsl], @@ -511,24 +468,26 @@ void source_init_common(source_t *src, const char *filename, src->interpolation[j].ix[k], src->interpolation[j].iy[k], src->interpolation[j].iz[k]); - printf("index-x: %d \n", + fprintf(stderr, "index-x: %d \n", src->interpolation[j].ix[0]); - print("weights-x: %f %f %f %f \n", + fprintf(stderr, "index-y: %d \n", + src->interpolation[j].iy[0]); + fprintf(stderr, "weights-x: %f %f %f %f \n", src->interpolation[j].lx[0], src->interpolation[j].lx[1], src->interpolation[j].lx[2], src->interpolation[j].lx[3]); - print("weights-y: %f %f %f %f \n", + fprintf(stderr, "weights-y: %f %f %f %f \n", src->interpolation[j].ly[0], src->interpolation[j].ly[1], src->interpolation[j].ly[2], src->interpolation[j].ly[3]); - print("weights-z: %f %f %f %f \n", + fprintf(stderr, "weights-z: %f %f %f %f \n", src->interpolation[j].lz[0], src->interpolation[j].lz[1], src->interpolation[j].lz[2], src->interpolation[j].lz[3]); - printf("---------------------------------------\n\n"); + fprintf(stderr, "---------------------------------------\n\n"); } } fflush(stdout); diff --git a/src/topography/sources/source.cu b/src/topography/sources/source.cu index 4798981..c76e040 100644 --- a/src/topography/sources/source.cu +++ b/src/topography/sources/source.cu @@ -104,6 +104,7 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, const prec hhatweights[4] = {2.9022824945274315, 2.28681149230364, 0.7658753535345706, 1.0959408329892313}; + int nx = grid.size.x - 4 - 2 * ngsl; int nz = grid.size.z; for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { @@ -111,7 +112,6 @@ __global__ void cusource_add_curvilinear(prec *out, const prec *in, prec Ji = 1.0 / (_f(i + ix[q], j + iy[q]) * _dg(iz[q] + k)); - int pos = (iz[q] + k) + align + (2 * align + nz) * (ix[q] + i) * (2 * ngsl + ny + 4) + @@ -197,8 +197,8 @@ __global__ void cusource_add_force(prec *out, const prec *in, const prec *d1, for (int j = 0; j < num_basis; ++j) { for (int k = 0; k < num_basis; ++k) { // Do not apply stencil at halo points - if ( ix[q] + i >= 2 + nx + ngsl || ix[q] + i < 2 + ngsl || - iy[q] + j >= 2 + ny + ngsl || iy[q] + j < 2 + ngsl ) continue; + if ( ix[q] + i >= 2 + nx + ngsl / 2 || ix[q] + i < 2 + ngsl / 2 || + iy[q] + j >= 2 + ny + ngsl / 2 || iy[q] + j < 2 + ngsl / 2 ) continue; prec J = _f(i + ix[q], j + iy[q]) * _dg(iz[q] + k); prec Ji = - quad_weight /(J * d1[q]); @@ -284,8 +284,8 @@ __global__ void cusource_add_force_velocity(prec *out, const prec *in, const pre for (int i = 0; i < num_basis; ++i) { for (int j = 0; j < num_basis; ++j) { // Do not apply stencil at halo points - if ( ix[q] + i >= 2 + nx + ngsl || ix[q] + i < 2 + ngsl || - iy[q] + j >= 2 + ny + ngsl || iy[q] + j < 2 + ngsl ) continue; + if ( ix[q] + i >= 2 + nx + ngsl / 2 || ix[q] + i < 2 + ngsl / 2 || + iy[q] + j >= 2 + ny + ngsl / 2 || iy[q] + j < 2 + ngsl / 2 ) continue; int pos = (k) + align + diff --git a/src/topography/sources/sources.c b/src/topography/sources/sources.c index 85c7d2a..6812e19 100644 --- a/src/topography/sources/sources.c +++ b/src/topography/sources/sources.c @@ -44,7 +44,6 @@ void sources_init(const char *filename, const grids_t *grids, const struct mappi } AWPCHK(input_broadcast(&input, rank, 0, comm)); - Mxx = source_init("xx", XX, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); Myy = source_init("yy", YY, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); Mzz = source_init("zz", ZZ, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); @@ -52,31 +51,6 @@ void sources_init(const char *filename, const grids_t *grids, const struct mappi Mxz = source_init("xz", XZ, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); Myz = source_init("yz", YZ, &input, grids, map, ngrids, f, rank, comm, MOMENT_TENSOR); - // Interpolate mapping to the source location - // Work in progress. This idea simplifies the source application - // if (f == NULL) return; - //size_t num_bytes = sizeof F_interp * Mxx.lengths[0]; - //F_interp = malloc(num_bytes); - //grid3_t grid = grid_init_full_grid(grids->z.inner_size, - // grid_node(), grids->z.coordinate, grids->z.boundary1, - // grids->z.boundary2, grids->z.gridspacing); - //grid1_t x_grid = grid_grid1_x(grid); - //grid1_t y_grid = grid_grid1_y(grid); - //grid1_t z_grid = grid_grid1_z(grid); - //prec *x1 = malloc(sizeof x1 * x_grid.size); - //prec *y1 = malloc(sizeof y1 * y_grid.size); - //prec *z1 = malloc(sizeof z1 * z_grid.size); - //grid_fill1(x1, x_grid); - //grid_fill1(y1, y_grid); - //grid_fill1(z1, z_grid); - //metrics_interpolate_jacobian(f, F_interp, f->f, g->g3, x1, y1, z1, - // grid, Mxx.x[0], Mxx.y[0], Mxx.z[0], - // Mxx.lengths[0], input.degree); - //cudaMalloc((void**)&d_F_interp, num_bytes); - //cudaMemcpy(d_F_interp, F_interp, num_bytes, cudaMemcpyHostToDevice); - //free(x1); - //free(y1); - //free(z1); } void sources_read(size_t step) @@ -128,20 +102,6 @@ void sources_add_curvilinear(prec *d_xx, prec *d_yy, prec *d_zz, prec *d_xy, grid_num, 0); source_add_curvilinear(d_yz, &Myz, step, h, dt, f->d_f_2, ny, g->d_g3, grid_num, 0); - - // Interpolates the Jacobian to the source location (simpler, less accurate) - //source_add_curvilinear(d_xx, &Mxx, step, h, dt, d_F_interp, ny, g->d_g3_c, - // grid_num, 1); - //source_add_curvilinear(d_yy, &Myy, step, h, dt, d_F_interp, ny, g->d_g3_c, - // grid_num, 1); - //source_add_curvilinear(d_zz, &Mzz, step, h, dt, d_F_interp, ny, g->d_g3_c, - // grid_num, 1); - //source_add_curvilinear(d_xy, &Mxy, step, h, dt, d_F_interp, ny, g->d_g3_c, - // grid_num, 1); - //source_add_curvilinear(d_xz, &Mxz, step, h, dt, d_F_interp, ny, g->d_g3, - // grid_num, 0); - //source_add_curvilinear(d_yz, &Myz, step, h, dt, d_F_interp, ny, g->d_g3, - // grid_num, 0); } source_t sources_get_source(enum grid_types grid_type) diff --git a/src/topography/topography.c b/src/topography/topography.c index 309845a..dc58bc0 100644 --- a/src/topography/topography.c +++ b/src/topography/topography.c @@ -64,10 +64,6 @@ topo_t topo_init(const int USETOPO, .off_x = {2, 2 + ngsl, 2 + ngsl + nxt, 2 + ngsl2 + nxt}, .off_y = {2, 2 + ngsl, 2 + ngsl + nyt, 2 + ngsl2 + nyt}, .off_z = {0, align, align + nzt, 2*align + nzt}, - // Grid affinity - .sxx = {0, 1, 1}, .syy = {0, 1, 1}, .szz = {0, 1, 1}, - .sxy = {1, 0, 1}, .sxz = {1, 1, 0}, .syz = {0, 0, 0}, - .su1 = {1, 1, 1}, .sv1 = {0, 0, 1}, .sw1 = {0, 1, 0}, .gridsize = gridsize, .slice = slice, .line = line, .slice_gl = slice_gl, diff --git a/tests/fixtures/source_x.txt b/tests/fixtures/source_x.txt index 23430a1..90b81e8 100644 --- a/tests/fixtures/source_x.txt +++ b/tests/fixtures/source_x.txt @@ -10,5 +10,5 @@ num_writes=2 coordinates 0 9.0 8.5 -2.0 -0 9.0 8.5 -11.0 -0 9.0 8.5 -34.0 +0 9.0 9.5 -11.0 +0 9.0 7.5 -34.0 diff --git a/tests/fixtures/source_xx.txt b/tests/fixtures/source_xx.txt index 91feabc..32e7959 100644 --- a/tests/fixtures/source_xx.txt +++ b/tests/fixtures/source_xx.txt @@ -7,12 +7,7 @@ degree=0 gpu_buffer_size=2 cpu_buffer_size=3 num_writes=2 -# If the finest grid has grid spacing h = 1.0 (top block), -# then: -# * the first source should map to i=1 j=2 in block 0 (top block) -# * the second source should map to i=0 j=0 in block 1 (bottom block) - coordinates 0 9.5 8.5 -2.0 -0 9.5 8.5 -11.0 -0 9.5 8.5 -34.0 +0 10.5 9.5 -11.0 +0 13.5 7.5 -34.0 diff --git a/tests/fixtures/source_xy.txt b/tests/fixtures/source_xy.txt index 0e7298d..7041aa5 100644 --- a/tests/fixtures/source_xy.txt +++ b/tests/fixtures/source_xy.txt @@ -14,5 +14,5 @@ num_writes=2 coordinates 0 9.0 9.0 -2.0 -0 9.0 9.0 -11.0 -0 9.0 9.0 -34.0 +0 9.0 10.0 -11.0 +0 9.0 12.0 -34.0 diff --git a/tests/fixtures/source_xz.txt b/tests/fixtures/source_xz.txt index 23430a1..90b81e8 100644 --- a/tests/fixtures/source_xz.txt +++ b/tests/fixtures/source_xz.txt @@ -10,5 +10,5 @@ num_writes=2 coordinates 0 9.0 8.5 -2.0 -0 9.0 8.5 -11.0 -0 9.0 8.5 -34.0 +0 9.0 9.5 -11.0 +0 9.0 7.5 -34.0 diff --git a/tests/fixtures/source_y.txt b/tests/fixtures/source_y.txt index 7d1d18c..279e6fa 100644 --- a/tests/fixtures/source_y.txt +++ b/tests/fixtures/source_y.txt @@ -10,5 +10,5 @@ num_writes=2 coordinates 0 9.5 9.0 -2.0 -0 9.5 9.0 -11.0 -0 9.5 9.0 -34.0 +0 10.5 10.0 -11.0 +0 13.5 12.0 -34.0 diff --git a/tests/fixtures/source_yz.txt b/tests/fixtures/source_yz.txt index 7d1d18c..279e6fa 100644 --- a/tests/fixtures/source_yz.txt +++ b/tests/fixtures/source_yz.txt @@ -10,5 +10,5 @@ num_writes=2 coordinates 0 9.5 9.0 -2.0 -0 9.5 9.0 -11.0 -0 9.5 9.0 -34.0 +0 10.5 10.0 -11.0 +0 13.5 12.0 -34.0 diff --git a/tests/fixtures/source_z.txt b/tests/fixtures/source_z.txt index 9dbcc78..e36dad8 100644 --- a/tests/fixtures/source_z.txt +++ b/tests/fixtures/source_z.txt @@ -10,5 +10,5 @@ num_writes=2 coordinates 0 9.5 8.5 -2.0 -0 9.5 8.5 -11.0 -0 9.5 8.5 -34.0 +0 10.5 9.5 -11.0 +0 13.5 7.5 -34.0 diff --git a/tests/interpolation/test_interpolation.c b/tests/interpolation/test_interpolation.c index d31b951..e98a07d 100644 --- a/tests/interpolation/test_interpolation.c +++ b/tests/interpolation/test_interpolation.c @@ -130,8 +130,7 @@ int test_argnearest_range(void) xs = 4.3; err |= interp_argnearest(&nearest, x, n, xs); - err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n, - xs); + err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n); err |= s_assert(nearest == 4); err |= s_assert(lower == 4); err |= s_assert(upper == 5); @@ -141,8 +140,7 @@ int test_argnearest_range(void) lower = 1; upper = 1; err |= interp_argnearest(&nearest, x, n, xs); - err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n, - xs); + err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n); err |= test_finalize(&test, err); err |= s_assert(nearest == 4); @@ -158,8 +156,7 @@ int test_argnearest_range(void) int nearest = -1, lower = 2, upper = 2; xs = 0.1; err |= interp_argnearest(&nearest, x, n, xs); - err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n, - xs); + err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n); err |= s_assert(nearest == 0); err |= s_assert(lower == 0); err |= s_assert(upper == 5); @@ -175,8 +172,7 @@ int test_argnearest_range(void) int nearest = -1, lower = 2, upper = 2; xs = 8.9; err |= interp_argnearest(&nearest, x, n, xs); - err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n, - xs); + err |= interp_argnearest_range(&lower, &upper, lower, upper, nearest, n); err |= s_assert(nearest == 9); err |= s_assert(lower == 5); err |= s_assert(upper == 10); diff --git a/tests/topography/sources/CMakeLists.txt b/tests/topography/sources/CMakeLists.txt index d36757b..7af1617 100644 --- a/tests/topography/sources/CMakeLists.txt +++ b/tests/topography/sources/CMakeLists.txt @@ -1,5 +1,6 @@ add_executable(test_topography_sources test_sources.c) add_executable(test_topography_sources_dm test_sources_dm.c) +add_executable(test_topography_source_distribution test_source_distribution.c) target_link_libraries(test_topography_sources topography @@ -15,6 +16,13 @@ target_link_libraries(test_topography_sources_dm testing ) +target_link_libraries(test_topography_source_distribution + topography + buffers + ${MPI_C_LIBRARIES} + testing + ) + target_include_directories(test_topography_sources PUBLIC ${AWP_SOURCE_DIR}/include/ @@ -25,12 +33,21 @@ target_include_directories(test_topography_sources_dm ${AWP_SOURCE_DIR}/include/ ) +target_include_directories(test_topography_source_distribution + PUBLIC + ${AWP_SOURCE_DIR}/include/ + ) + add_test(NAME test_topography_sources_dm COMMAND test_topography_sources_dm) +add_test(NAME test_topography_source_distribution COMMAND + test_topography_source_distribution) + add_test(NAME test_topography_sources COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 --oversubscribe test_topography_sources ${AWP_SOURCE_DIR}/tests/fixtures/source.txt) + diff --git a/tests/topography/sources/test_source_distribution.c b/tests/topography/sources/test_source_distribution.c new file mode 100644 index 0000000..7f04139 --- /dev/null +++ b/tests/topography/sources/test_source_distribution.c @@ -0,0 +1,115 @@ +#include +#include +#include +#include +#include +#include +#include + +#define STR_LEN 2048 +#define ADDLINENUM 1 +#define ADDRANK 1 +#define RANK rank +#define STR_LEN 2048 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void init(float **x, float **y, int nx, int ny, int px, int py, float h); +int inbounds(int nx, int ny, int blocknum, int px, int py, float h, int degree, const enum source_type st); + +int main(int argc, char **argv) +{ + test_divider(); + printf("Testing test_source_distribution.c\n"); + + int nx = 32; + int ny = 32; + float h = 1.0f; + + int degree = 3; + + int err = 0; + err |= inbounds(nx, ny, 0, 0, 0, h, 3, RECEIVER); + err |= inbounds(nx, ny, 0, 1, 0, h, 3, RECEIVER); + + + + +} + + +int inbounds(int nx, int ny, int blocknum, int px, int py, float h, int degree, const enum source_type st) { + + int err = 0; + float *x, *y; + init(&x, &y, nx, ny, px, py, h); + + int overlap = 0; + switch(st) { + case MOMENT_TENSOR: + overlap = 2; + break; + case FORCE: + overlap = 2; + break; + case RECEIVER: + overlap = 0; + break; + case SGT: + overlap = 0; + break; + } + + float qx, qy; + + int half_width = (degree + 1) / 2; + + + // inbounds + { + qx = (nx - half_width - 1 - overlap) * h; + qy = (ny - half_width - 1 - overlap) * h; + printf("Query point: (%g, %g), \n", qx, qy); + printf("x = %g %g %g, y = %g %g %g \n", x[0], x[1], x[2], y[0], y[1], y[2]); + printf("Velocity bounds. In bounds if %g <= qx <= %g, %g <= qy <= %g \n", + x[2 + ngsl], x[2 + ngsl + nx - 1], + y[2 + ngsl], y[2 + ngsl + ny - 1]); + printf("Stress bounds. In bounds if %g <= qx <= %g, %g <= qy <= %g \n", + x[2 + ngsl / 2], x[2 + 3 / 2 * ngsl + nx - 1], + y[2 + ngsl / 2], y[2 + 3 / 2 * ngsl + ny - 1]); + } + + free(x); + free(y); + + return err; +} + + +void init(float **x, float **y, int nx, int ny, int px, int py, float h) { + int3_t gsize = {nx, ny, 1}; + int3_t shift = {0, 0, 0}; + int3_t coordinate = {px, py, 0}; + int3_t boundary1 = {0, 0, 0}; + int3_t boundary2 = {0, 0, 0}; + + grid3_t grid = grid_init(gsize, shift, coordinate, boundary1, boundary2, ngsl + 2, h); + grid1_t xgrid = grid_grid1_x(grid); + grid1_t ygrid = grid_grid1_y(grid); + *x = malloc(sizeof(float) * xgrid.size); + *y = malloc(sizeof(float) * ygrid.size); + + grid_fill1(*x, xgrid, 1); + grid_fill_y_dm(*y, ygrid, 0); +} + diff --git a/tests/topography/sources/test_sources_dm.c b/tests/topography/sources/test_sources_dm.c index 97a3ef6..596f409 100644 --- a/tests/topography/sources/test_sources_dm.c +++ b/tests/topography/sources/test_sources_dm.c @@ -36,9 +36,9 @@ int main(int argc, char **argv) int px = 2; - int3_t src1 = {11, 11, 0}; - int3_t src2 = {5, 5, 0}; - int3_t src3 = {3, 3, 0}; + int3_t src1 = {9, 9, 0}; + int3_t src2 = {3, 3, 0}; + int3_t src3 = {1, 1, 0}; if (argc == 2) { printf("Source input file: %s \n", argv[1]); @@ -141,7 +141,7 @@ int test_sources_dm(const char *sourcefile, int rank, int size, const int px, co prec *z1 = malloc(sizeof z1 * z_grid.size); grid_fill1(x1, x_grid, 1); - grid_fill1(y1, y_grid, 0); + grid_fill_y_dm(y1, y_grid, i); grid_fill1(z1, z_grid, 0); // The user coordinate system (user) defines (0, 0, 0) at // material grid point and is a global coordinate system (a @@ -157,8 +157,8 @@ int test_sources_dm(const char *sourcefile, int rank, int size, const int px, co // (see shift.c, xx = [1, 1, 1]), // // - int ix = M.interpolation[i].ix[j] - ngsl; - int iy = M.interpolation[i].iy[j] - ngsl; + int ix = M.interpolation[i].ix[j] - ngsl - 2; + int iy = M.interpolation[i].iy[j] - ngsl - 2; int iz = M.interpolation[i].iz[j]; // Once setup has been confirmed, we can add some test cases to From bf83acb9583b27df08d9883120230227056d905c Mon Sep 17 00:00:00 2001 From: Ossian O'Reilly Date: Mon, 11 Oct 2021 20:24:55 -0700 Subject: [PATCH 48/56] Fix dm overlap placement (#30) * force source/recvs in the overlap zone to be placed on the coarser grid. * cleanup. * fix find_grid_number so that it maps surface coordinates to the top block. --- include/topography/sources/source.h | 3 +- src/grid/grid_3d.c | 2 +- src/topography/sources/source.c | 84 ++++++++++++++--------------- 3 files changed, 42 insertions(+), 47 deletions(-) diff --git a/include/topography/sources/source.h b/include/topography/sources/source.h index f99e2f4..4923374 100644 --- a/include/topography/sources/source.h +++ b/include/topography/sources/source.h @@ -74,7 +74,8 @@ void source_find_grid_number(const input_t *input, const grids_t *grids, int *grid_number, const int *indices, const int length, - const int num_grids); + const int num_grids, + const int is_topo); void source_init_common(source_t *src, const char *filename, const enum grid_types grid_type, const input_t *input, diff --git a/src/grid/grid_3d.c b/src/grid/grid_3d.c index 1aad110..d173e72 100644 --- a/src/grid/grid_3d.c +++ b/src/grid/grid_3d.c @@ -433,7 +433,7 @@ void global_to_local(_prec *zloc, int *block_index, const _prec z, hloc *= 3; bi = i; - // Check if the coordinate is in the overlap zone, if so, push it to the next grid + // Check if the coordinate touches the last two grid points, if so, push it to the next grid if (z0 > 0 && z0 < grid_overlap(hloc / 3) ) { continue; } diff --git a/src/topography/sources/source.c b/src/topography/sources/source.c index e576b57..c2ebe3c 100644 --- a/src/topography/sources/source.c +++ b/src/topography/sources/source.c @@ -82,54 +82,44 @@ void source_finalize(source_t *src) void source_find_grid_number(const input_t *input, const grids_t *grids, int *grid_number, const int *indices, const int length, - const int num_grids) + const int num_grids, + const int is_topo) { - _prec lower = 0; - _prec upper = 0; - _prec overlap = 0; - for (int i = 0; i < num_grids; ++i) - { - prec *z1 = malloc(sizeof z1 * grids[i].z.size.z); + int *nz = malloc(sizeof nz * num_grids); + for (int i = 0; i < num_grids; ++i) { + nz[i] = grids[i].z.size.z; + for (int j = 0; j < length; ++j) + grid_number[j] = -1; + } + + for (int i = 0; i < num_grids; ++i) { + float *z1 = malloc(sizeof z1 * nz[i]); grid1_t z_grid = grid_grid1_z(grids[i].z); grid_fill1(z1, z_grid, 0); - - upper = lower; - lower = lower - z1[z_grid.end]; - _prec h = z_grid.gridspacing; - + _prec zloc = 0.0; + _prec hw = 0.5 * (input->degree + 1) * h; for (int j = 0; j < length; ++j) { - _prec z = input->z[indices[j]]; - // Take into account that topography can yield positive - // z-values - if (input->type[indices[j]] == INPUT_SURFACE_COORD) - { - grid_number[j] = 0; - continue; - } - else if (z > 0) - { - grid_number[j] = 0; - } - else if (z > lower && z <= upper - overlap) - { - grid_number[j] = i; - } - } + // Skip assignment if this source/recv has already been assigned a grid number + if (grid_number[j] != -1) continue; + + // Surface coordinates map to the top block (block 0) + if (input->type[indices[j]] == INPUT_SURFACE_COORD) { + grid_number[j] = 0; + continue; + } + _prec z = input->z[indices[j]]; + global_to_local(&zloc, &grid_number[j], z - hw, h, nz, num_grids, is_topo); - if (i + 1 != num_grids) - { - overlap = h * OVERLAP; - } - else - { - overlap = 0.0f; } - lower = lower + overlap; + free(z1); + } + free(nz); + for (int j = 0; j < length; ++j) { if (grid_number[j] == -1) @@ -158,6 +148,8 @@ void source_init_common(source_t *src, const char *filename, _prec *y = malloc(sizeof y * input->length); _prec *z = malloc(sizeof z * input->length); + int is_topo = f == NULL ? 0 : 1; + { int *grid_number = malloc(sizeof grid_number * input->length); int *indices = malloc(sizeof indices * input->length); @@ -168,7 +160,7 @@ void source_init_common(source_t *src, const char *filename, } source_find_grid_number(input, grids, grid_number, indices, - input->length, ngrids); + input->length, ngrids, is_topo); for (size_t i = 0; i < input->length; ++i) { @@ -188,7 +180,6 @@ void source_init_common(source_t *src, const char *filename, { size_t num_sources_in_block = 0; grid3_t grid = grids_select(grid_type, &grids[j]); - grid1_t grid_x = grid_grid1_x(grid); AWPCHK(dist_indices(&src->indices, &num_sources_in_block, x, y, input->length, grid, grid_number, j, @@ -228,7 +219,7 @@ void source_init_common(source_t *src, const char *filename, // identify grid number for each local source int *grid_number = malloc(sizeof grid_number * src->length); source_find_grid_number(input, grids, grid_number, src->indices, - src->length, ngrids); + src->length, ngrids, is_topo); // count number of local sources for each grid for (size_t i = 0; i < src->length; ++i) @@ -330,26 +321,29 @@ void source_init_common(source_t *src, const char *filename, metric_grid, src->x[j], src->y[j], src->lengths[j], input->degree); + _prec h = grid.gridspacing; + _prec hw = 0.5 * (input->degree + 1) * h; for (size_t k = 0; k < src->lengths[j]; ++k) { switch (src->type[j][k]) { // Map to parameter space case INPUT_VOLUME_COORD: - if (block_height + src->z[j][k] < - OVERLAP * grid.gridspacing) { + if (block_height + (src->z[j][k] - hw) < + overlap * h && grid_number[j] == 0) { fprintf(stderr, "Source/Receiver cannot exist " - "in the overlap zone on the " + "at the first two grid points on the " "fine grid, id = %ld \n", k); + fprintf(stderr, "z = %g \n", src->z[j][k]); + fprintf(stderr, "This is a bug, please report it.\n"); + exit(-1); } else { // Source / receiver is in the top part // of the block that experiences the // curvilinear grid transform double h = grid.gridspacing; - //fprintf(stderr, "block_height + src = %g, overlap = %g \n", - // block_height + src->z[j][k], h * OVERLAP); double H = block_height - h * OVERLAP; double Hf = f_interp[k] * H; double x = (H + src->z[j][k]) / Hf; From c91561c1c86178bf83322be5073e7f1d14ed6673 Mon Sep 17 00:00:00 2001 From: Te-Yang Yeh Date: Tue, 7 Dec 2021 19:02:50 -0500 Subject: [PATCH 49/56] Redesign cerjan function so that ND is no longer bounded by min(nxt,nyt) --- src/awp/cerjan.c | 103 ++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 50 deletions(-) diff --git a/src/awp/cerjan.c b/src/awp/cerjan.c index ac907d8..dc82e63 100644 --- a/src/awp/cerjan.c +++ b/src/awp/cerjan.c @@ -4,61 +4,64 @@ void inicrj(_prec ARBC, int *coords, int nxt, int nyt, int nzt, int NX, int NY, int ND, Grid1D dcrjx, Grid1D dcrjy, Grid1D dcrjz, int islowest, int NPC) { - int nxp, nyp, nzp; - int i, j, k; + + int i, j, k, ix, iy, iz; _prec alpha; - alpha = sqrt(-log(ARBC))/ND; + alpha = sqrt(-log(ARBC))/(ND-1); + + if (NPC < 2) + { + for(i=0;i<4+nxt;i++) + { + ix = nxt*coords[0] + i + 1 - 2; //ix is one-indexing + if((ix>=1) && (ix<=ND)) + { + dcrjx[ngsl+i] = dcrjx[ngsl+i]*(exp(-((alpha*(ND-ix))*(alpha*(ND-ix))))); + } + + if( (ix>=(NX-ND+1)) && (ix<=NX)) + { + dcrjx[ngsl+i] = dcrjx[ngsl+i]*(exp(-((alpha*(ix-(NX-ND)-1))*(alpha*(ix-(NX-ND)-1))))); + } + + if((ix<1) || (ix>NX)) + { + dcrjx[ngsl+i] = ARBC; + } + } + + for(j=0;j<4+nyt;j++) + { + iy = nyt*coords[1] + j + 1 - 2; //iy is one-indexing + if((iy>=1) && (iy<=ND)) + { + dcrjy[ngsl+j] = dcrjy[ngsl+j]*(exp(-((alpha*(ND-iy))*(alpha*(ND-iy))))); + } + + if((iy>=(NY-ND+1)) && (iyNY)) + { + dcrjy[ngsl+j] = ARBC; + } + } + } - nxp = nxt*coords[0] + 1; - if ((nxp <= ND) && (NPC < 2)) /* added by Daniel for periodic BCs */ - { - for(i=0;i= (NX-ND+1)) && (NPC < 2)) /* added by Daniel for periodic BCs */ - { - for(i=nxt-ND;i= (NY-ND+1)) && (NPC < 2)) - { - for(j=nyt-ND;j Date: Mon, 10 Oct 2022 23:24:33 -0400 Subject: [PATCH 50/56] Fix write_grid tool so that it works with multiple processors. Fix an issue in write_grid tool with allocation of memory. --- tools/write_grid/write_grid.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/tools/write_grid/write_grid.c b/tools/write_grid/write_grid.c index e180047..7bddebe 100644 --- a/tools/write_grid/write_grid.c +++ b/tools/write_grid/write_grid.c @@ -55,11 +55,9 @@ struct Mpi int coord[2]; MPI_Comm MCW, MC1; }; - void mpi_init(struct Mpi *m, int argc, char **argv); void mpi_cart(struct Mpi *m, const int *size, const int *part); MPI_Datatype data_type(const struct Mpi *mpi, int nz); - int main(int argc, char **argv) { struct Mpi m; @@ -154,6 +152,7 @@ int main(int argc, char **argv) } } + fflush(stdout); int size[3] = {nx, ny, nz}; int part[2] = {px, py}; @@ -183,7 +182,6 @@ int main(int argc, char **argv) err |= topo_read_serial(input, m.rank, px, py, m.coord, m.nxt, m.nyt, alloc, &f); - MPI_Datatype readtype = data_type(&m, nz); MPI_Datatype readtype_m = data_type(&m, mz); MPI_File fh, fm, fp; @@ -194,19 +192,20 @@ int main(int argc, char **argv) MPICHK(MPI_File_set_view(fh, 0, MPI_FLOAT, readtype, "native", MPI_INFO_NULL)); - int buffer_size = m.nxt * m.nyt * nvars; - float *buffer = (float*) calloc(buffer_size * nz, sizeof(float)); + float *buffer = (float*) calloc(buffer_size, sizeof(float)); float *prop = (float*) calloc(buffer_size * mz, sizeof(float)); float *buffer_m = (float*) calloc(buffer_size * nz, sizeof(float)); for (int j = 0; j < m.nyt; ++j) { for (int i = 0; i < m.nxt; ++i) { - buffer[0 + nvars * i + j * nvars * m.nxt] = i * h; - buffer[1 + nvars * i + j * nvars * m.nxt] = j * h; + buffer[0 + nvars * i + j * nvars * m.nxt] = (m.coord[0]*m.nxt + i) * h; + buffer[1 + nvars * i + j * nvars * m.nxt] = (m.coord[1]*m.nyt + j) * h; + //buffer[0 + nvars * i + j * nvars * m.nxt] = i * h; + //buffer[1 + nvars * i + j * nvars * m.nxt] = j * h; } } - + if (mesh_out == 1) { MPICHK(MPI_File_open(m.MCW, mesh, MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, &fm)); @@ -223,6 +222,7 @@ int main(int argc, char **argv) printf("%d) ERROR! MPI-IO reading property file set view: %s\n", m.rank, mpiErrStr); } + err = MPI_File_read_all(fp, prop, buffer_size * mz, MPI_FLOAT, &filestatus); if (err != MPI_SUCCESS) { @@ -232,6 +232,8 @@ int main(int argc, char **argv) } } + + int show_info = (int) (nz / 10); show_info = show_info == 0 ? 1 : show_info; @@ -245,7 +247,6 @@ int main(int argc, char **argv) // If k > 0 and we need repeat (rpt == 1), // we shift the domain up by 1 k0 = k == 0 ? k : k - rpt; - // Define index that is kuniform = 0 at the start of the overlapping zone int kuniform = k - (nz - 1) + MAPPING_START_POINT; double rk; @@ -258,6 +259,7 @@ int main(int argc, char **argv) MPI_Barrier(MPI_COMM_WORLD); for (int i = 0; i < m.nxt; ++i) { for (int j = 0; j < m.nyt; ++j) { + size_t lmy = 4 + m.nyt + 2 * metrics_padding + 2 * align; size_t local_pos = 2 + align + (j + metrics_padding) + (2 + i + metrics_padding) * lmy; @@ -284,6 +286,7 @@ int main(int argc, char **argv) MPI_Finalize(); return(-1); } + size_t pos = nvars * (idx_z * m.nxt * m.nyt + j * m.nxt + i); memcpy(buffer_m + nvars * (k * m.nxt * m.nyt + From 0f658d6445e008b7ab69c33ac7f81f1949f905f8 Mon Sep 17 00:00:00 2001 From: Te-Yang Yeh Date: Thu, 4 Apr 2024 21:40:41 -0400 Subject: [PATCH 51/56] * Adding new user input flags specifying Q model parameters and caps on velocity (QSI, QPQSR, MAXVPVSR, VMIN, VMAX, and DMIN). --- .gitignore | 2 +- include/awp/pmcl3d.h | 4 +- release/CMakeCache.txt | 572 + .../CMakeFiles/3.27.7/CMakeCCompiler.cmake | 74 + .../CMakeFiles/3.27.7/CMakeCUDACompiler.cmake | 76 + .../3.27.7/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 79392 bytes .../3.27.7/CMakeDetermineCompilerABI_CUDA.bin | Bin 0 -> 926288 bytes release/CMakeFiles/3.27.7/CMakeSystem.cmake | 15 + .../3.27.7/CompilerIdC/CMakeCCompilerId.c | 866 + release/CMakeFiles/3.27.7/CompilerIdC/a.out | Bin 0 -> 79512 bytes .../CompilerIdCUDA/CMakeCUDACompilerId.cu | 468 + .../CMakeFiles/3.27.7/CompilerIdCUDA/a.out | Bin 0 -> 926560 bytes .../tmp/CMakeCUDACompilerId.cpp1.ii | 23636 ++++++++++++++++ .../tmp/CMakeCUDACompilerId.cpp4.ii | 18673 ++++++++++++ .../tmp/CMakeCUDACompilerId.cudafe1.c | 35 + .../tmp/CMakeCUDACompilerId.cudafe1.cpp | 19830 +++++++++++++ .../tmp/CMakeCUDACompilerId.cudafe1.gpu | 7 + .../tmp/CMakeCUDACompilerId.cudafe1.stub.c | 15 + .../tmp/CMakeCUDACompilerId.fatbin | Bin 0 -> 1000 bytes .../tmp/CMakeCUDACompilerId.fatbin.c | 57 + .../tmp/CMakeCUDACompilerId.module_id | 1 + .../CompilerIdCUDA/tmp/CMakeCUDACompilerId.o | Bin 0 -> 7776 bytes .../tmp/CMakeCUDACompilerId.ptx | 14 + .../tmp/CMakeCUDACompilerId.sm_52.cubin | Bin 0 -> 792 bytes .../3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin | Bin 0 -> 1040 bytes .../CompilerIdCUDA/tmp/a_dlink.fatbin.c | 58 + .../3.27.7/CompilerIdCUDA/tmp/a_dlink.o | Bin 0 -> 3240 bytes .../3.27.7/CompilerIdCUDA/tmp/a_dlink.reg.c | 1 + .../CompilerIdCUDA/tmp/a_dlink.sm_52.cubin | Bin 0 -> 960 bytes release/CMakeFiles/CMakeConfigureLog.yaml | 863 + .../CMakeDirectoryInformation.cmake | 16 + release/CMakeFiles/CMakeRuleHashes.txt | 29 + .../Continuous.dir/DependInfo.cmake | 18 + release/CMakeFiles/Continuous.dir/build.make | 87 + .../Continuous.dir/cmake_clean.cmake | 8 + .../Continuous.dir/compiler_depend.make | 2 + .../Continuous.dir/compiler_depend.ts | 2 + .../CMakeFiles/Continuous.dir/progress.make | 1 + .../ContinuousBuild.dir/DependInfo.cmake | 18 + .../CMakeFiles/ContinuousBuild.dir/build.make | 87 + .../ContinuousBuild.dir/cmake_clean.cmake | 8 + .../ContinuousBuild.dir/compiler_depend.make | 2 + .../ContinuousBuild.dir/compiler_depend.ts | 2 + .../ContinuousBuild.dir/progress.make | 1 + .../ContinuousConfigure.dir/DependInfo.cmake | 18 + .../ContinuousConfigure.dir/build.make | 87 + .../ContinuousConfigure.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../ContinuousConfigure.dir/progress.make | 1 + .../ContinuousCoverage.dir/DependInfo.cmake | 18 + .../ContinuousCoverage.dir/build.make | 87 + .../ContinuousCoverage.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../ContinuousCoverage.dir/compiler_depend.ts | 2 + .../ContinuousCoverage.dir/progress.make | 1 + .../ContinuousMemCheck.dir/DependInfo.cmake | 18 + .../ContinuousMemCheck.dir/build.make | 87 + .../ContinuousMemCheck.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../ContinuousMemCheck.dir/compiler_depend.ts | 2 + .../ContinuousMemCheck.dir/progress.make | 1 + .../ContinuousStart.dir/DependInfo.cmake | 18 + .../CMakeFiles/ContinuousStart.dir/build.make | 87 + .../ContinuousStart.dir/cmake_clean.cmake | 8 + .../ContinuousStart.dir/compiler_depend.make | 2 + .../ContinuousStart.dir/compiler_depend.ts | 2 + .../ContinuousStart.dir/progress.make | 1 + .../ContinuousSubmit.dir/DependInfo.cmake | 18 + .../ContinuousSubmit.dir/build.make | 87 + .../ContinuousSubmit.dir/cmake_clean.cmake | 8 + .../ContinuousSubmit.dir/compiler_depend.make | 2 + .../ContinuousSubmit.dir/compiler_depend.ts | 2 + .../ContinuousSubmit.dir/progress.make | 1 + .../ContinuousTest.dir/DependInfo.cmake | 18 + .../CMakeFiles/ContinuousTest.dir/build.make | 87 + .../ContinuousTest.dir/cmake_clean.cmake | 8 + .../ContinuousTest.dir/compiler_depend.make | 2 + .../ContinuousTest.dir/compiler_depend.ts | 2 + .../ContinuousTest.dir/progress.make | 1 + .../ContinuousUpdate.dir/DependInfo.cmake | 18 + .../ContinuousUpdate.dir/build.make | 87 + .../ContinuousUpdate.dir/cmake_clean.cmake | 8 + .../ContinuousUpdate.dir/compiler_depend.make | 2 + .../ContinuousUpdate.dir/compiler_depend.ts | 2 + .../ContinuousUpdate.dir/progress.make | 1 + .../Experimental.dir/DependInfo.cmake | 18 + .../CMakeFiles/Experimental.dir/build.make | 87 + .../Experimental.dir/cmake_clean.cmake | 8 + .../Experimental.dir/compiler_depend.make | 2 + .../Experimental.dir/compiler_depend.ts | 2 + .../CMakeFiles/Experimental.dir/progress.make | 1 + .../ExperimentalBuild.dir/DependInfo.cmake | 18 + .../ExperimentalBuild.dir/build.make | 87 + .../ExperimentalBuild.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../ExperimentalBuild.dir/compiler_depend.ts | 2 + .../ExperimentalBuild.dir/progress.make | 1 + .../DependInfo.cmake | 18 + .../ExperimentalConfigure.dir/build.make | 87 + .../cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../ExperimentalConfigure.dir/progress.make | 1 + .../ExperimentalCoverage.dir/DependInfo.cmake | 18 + .../ExperimentalCoverage.dir/build.make | 87 + .../cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../ExperimentalCoverage.dir/progress.make | 1 + .../ExperimentalMemCheck.dir/DependInfo.cmake | 18 + .../ExperimentalMemCheck.dir/build.make | 87 + .../cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../ExperimentalMemCheck.dir/progress.make | 1 + .../ExperimentalStart.dir/DependInfo.cmake | 18 + .../ExperimentalStart.dir/build.make | 87 + .../ExperimentalStart.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../ExperimentalStart.dir/compiler_depend.ts | 2 + .../ExperimentalStart.dir/progress.make | 1 + .../ExperimentalSubmit.dir/DependInfo.cmake | 18 + .../ExperimentalSubmit.dir/build.make | 87 + .../ExperimentalSubmit.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../ExperimentalSubmit.dir/compiler_depend.ts | 2 + .../ExperimentalSubmit.dir/progress.make | 1 + .../ExperimentalTest.dir/DependInfo.cmake | 18 + .../ExperimentalTest.dir/build.make | 87 + .../ExperimentalTest.dir/cmake_clean.cmake | 8 + .../ExperimentalTest.dir/compiler_depend.make | 2 + .../ExperimentalTest.dir/compiler_depend.ts | 2 + .../ExperimentalTest.dir/progress.make | 1 + .../ExperimentalUpdate.dir/DependInfo.cmake | 18 + .../ExperimentalUpdate.dir/build.make | 87 + .../ExperimentalUpdate.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../ExperimentalUpdate.dir/compiler_depend.ts | 2 + .../ExperimentalUpdate.dir/progress.make | 1 + release/CMakeFiles/FindMPI/test_mpi_C.bin | Bin 0 -> 79600 bytes release/CMakeFiles/Makefile.cmake | 266 + release/CMakeFiles/Makefile2 | 2832 ++ .../CMakeFiles/Nightly.dir/DependInfo.cmake | 18 + release/CMakeFiles/Nightly.dir/build.make | 87 + .../CMakeFiles/Nightly.dir/cmake_clean.cmake | 8 + .../Nightly.dir/compiler_depend.make | 2 + .../CMakeFiles/Nightly.dir/compiler_depend.ts | 2 + release/CMakeFiles/Nightly.dir/progress.make | 1 + .../NightlyBuild.dir/DependInfo.cmake | 18 + .../CMakeFiles/NightlyBuild.dir/build.make | 87 + .../NightlyBuild.dir/cmake_clean.cmake | 8 + .../NightlyBuild.dir/compiler_depend.make | 2 + .../NightlyBuild.dir/compiler_depend.ts | 2 + .../CMakeFiles/NightlyBuild.dir/progress.make | 1 + .../NightlyConfigure.dir/DependInfo.cmake | 18 + .../NightlyConfigure.dir/build.make | 87 + .../NightlyConfigure.dir/cmake_clean.cmake | 8 + .../NightlyConfigure.dir/compiler_depend.make | 2 + .../NightlyConfigure.dir/compiler_depend.ts | 2 + .../NightlyConfigure.dir/progress.make | 1 + .../NightlyCoverage.dir/DependInfo.cmake | 18 + .../CMakeFiles/NightlyCoverage.dir/build.make | 87 + .../NightlyCoverage.dir/cmake_clean.cmake | 8 + .../NightlyCoverage.dir/compiler_depend.make | 2 + .../NightlyCoverage.dir/compiler_depend.ts | 2 + .../NightlyCoverage.dir/progress.make | 1 + .../NightlyMemCheck.dir/DependInfo.cmake | 18 + .../CMakeFiles/NightlyMemCheck.dir/build.make | 87 + .../NightlyMemCheck.dir/cmake_clean.cmake | 8 + .../NightlyMemCheck.dir/compiler_depend.make | 2 + .../NightlyMemCheck.dir/compiler_depend.ts | 2 + .../NightlyMemCheck.dir/progress.make | 1 + .../NightlyMemoryCheck.dir/DependInfo.cmake | 18 + .../NightlyMemoryCheck.dir/build.make | 87 + .../NightlyMemoryCheck.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../NightlyMemoryCheck.dir/compiler_depend.ts | 2 + .../NightlyMemoryCheck.dir/progress.make | 1 + .../NightlyStart.dir/DependInfo.cmake | 18 + .../CMakeFiles/NightlyStart.dir/build.make | 87 + .../NightlyStart.dir/cmake_clean.cmake | 8 + .../NightlyStart.dir/compiler_depend.make | 2 + .../NightlyStart.dir/compiler_depend.ts | 2 + .../CMakeFiles/NightlyStart.dir/progress.make | 1 + .../NightlySubmit.dir/DependInfo.cmake | 18 + .../CMakeFiles/NightlySubmit.dir/build.make | 87 + .../NightlySubmit.dir/cmake_clean.cmake | 8 + .../NightlySubmit.dir/compiler_depend.make | 2 + .../NightlySubmit.dir/compiler_depend.ts | 2 + .../NightlySubmit.dir/progress.make | 1 + .../NightlyTest.dir/DependInfo.cmake | 18 + release/CMakeFiles/NightlyTest.dir/build.make | 87 + .../NightlyTest.dir/cmake_clean.cmake | 8 + .../NightlyTest.dir/compiler_depend.make | 2 + .../NightlyTest.dir/compiler_depend.ts | 2 + .../CMakeFiles/NightlyTest.dir/progress.make | 1 + .../NightlyUpdate.dir/DependInfo.cmake | 18 + .../CMakeFiles/NightlyUpdate.dir/build.make | 87 + .../NightlyUpdate.dir/cmake_clean.cmake | 8 + .../NightlyUpdate.dir/compiler_depend.make | 2 + .../NightlyUpdate.dir/compiler_depend.ts | 2 + .../NightlyUpdate.dir/progress.make | 1 + release/CMakeFiles/TargetDirectories.txt | 182 + release/CMakeFiles/cmake.check_cache | 1 + release/CMakeFiles/progress.marks | 1 + release/CTestTestfile.cmake | 9 + release/DartConfiguration.tcl | 106 + release/Makefile | 1145 + release/cmake_install.cmake | 62 + .../CMakeDirectoryInformation.cmake | 16 + release/src/CMakeFiles/progress.marks | 1 + release/src/CTestTestfile.cmake | 17 + release/src/Makefile | 151 + .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/argparse.dir/DependInfo.cmake | 19 + .../CMakeFiles/argparse.dir/argparse.c.o | Bin 0 -> 13760 bytes .../CMakeFiles/argparse.dir/argparse.c.o.d | 24 + .../CMakeFiles/argparse.dir/build.make | 111 + .../CMakeFiles/argparse.dir/cmake_clean.cmake | 11 + .../argparse.dir/cmake_clean_target.cmake | 3 + .../argparse.dir/compiler_depend.make | 2 + .../argparse.dir/compiler_depend.ts | 2 + .../CMakeFiles/argparse.dir/depend.make | 2 + .../CMakeFiles/argparse.dir/flags.make | 10 + .../argparse/CMakeFiles/argparse.dir/link.txt | 2 + .../CMakeFiles/argparse.dir/progress.make | 3 + .../src/argparse/CMakeFiles/progress.marks | 1 + release/src/argparse/CTestTestfile.cmake | 6 + release/src/argparse/Makefile | 193 + release/src/argparse/cmake_install.cmake | 44 + release/src/argparse/libargparse.a | Bin 0 -> 13992 bytes .../CMakeDirectoryInformation.cmake | 16 + .../awp/CMakeFiles/awp.dir/DependInfo.cmake | 19 + release/src/awp/CMakeFiles/awp.dir/build.make | 112 + .../awp/CMakeFiles/awp.dir/cmake_clean.cmake | 11 + .../awp.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/awp.dir/compiler_depend.make | 2 + .../awp/CMakeFiles/awp.dir/compiler_depend.ts | 2 + .../src/awp/CMakeFiles/awp.dir/depend.make | 2 + release/src/awp/CMakeFiles/awp.dir/flags.make | 10 + .../awp/CMakeFiles/awp.dir/includes_CUDA.rsp | 1 + .../src/awp/CMakeFiles/awp.dir/kernel.cu.o | Bin 0 -> 1096344 bytes .../src/awp/CMakeFiles/awp.dir/kernel.cu.o.d | 166 + release/src/awp/CMakeFiles/awp.dir/link.txt | 2 + .../src/awp/CMakeFiles/awp.dir/progress.make | 3 + .../awp/CMakeFiles/error.dir/DependInfo.cmake | 19 + .../src/awp/CMakeFiles/error.dir/build.make | 111 + .../CMakeFiles/error.dir/cmake_clean.cmake | 11 + .../error.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/error.dir/compiler_depend.make | 2 + .../CMakeFiles/error.dir/compiler_depend.ts | 2 + .../src/awp/CMakeFiles/error.dir/depend.make | 2 + .../src/awp/CMakeFiles/error.dir/error.c.o | Bin 0 -> 5520 bytes .../src/awp/CMakeFiles/error.dir/error.c.o.d | 17 + .../src/awp/CMakeFiles/error.dir/flags.make | 10 + release/src/awp/CMakeFiles/error.dir/link.txt | 2 + .../awp/CMakeFiles/error.dir/progress.make | 3 + .../CMakeFiles/lpmcl3d.dir/DependInfo.cmake | 30 + .../src/awp/CMakeFiles/lpmcl3d.dir/build.make | 288 + .../src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o | Bin 0 -> 2880 bytes .../src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o.d | 44 + .../src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o | Bin 0 -> 3296 bytes .../awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o.d | 47 + .../CMakeFiles/lpmcl3d.dir/cmake_clean.cmake | 33 + .../lpmcl3d.dir/cmake_clean_target.cmake | 3 + .../awp/CMakeFiles/lpmcl3d.dir/command.c.o | Bin 0 -> 23120 bytes .../awp/CMakeFiles/lpmcl3d.dir/command.c.o.d | 51 + .../lpmcl3d.dir/compiler_depend.make | 2 + .../CMakeFiles/lpmcl3d.dir/compiler_depend.ts | 2 + .../awp/CMakeFiles/lpmcl3d.dir/depend.make | 2 + .../src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o | Bin 0 -> 5664 bytes .../src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o.d | 41 + .../src/awp/CMakeFiles/lpmcl3d.dir/flags.make | 17 + .../src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o | Bin 0 -> 5488 bytes .../src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o.d | 49 + .../CMakeFiles/lpmcl3d.dir/includes_CUDA.rsp | 1 + .../src/awp/CMakeFiles/lpmcl3d.dir/init.c.o | Bin 0 -> 3328 bytes .../src/awp/CMakeFiles/lpmcl3d.dir/init.c.o.d | 50 + release/src/awp/CMakeFiles/lpmcl3d.dir/io.c.o | Bin 0 -> 28536 bytes .../src/awp/CMakeFiles/lpmcl3d.dir/io.c.o.d | 49 + .../awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o | Bin 0 -> 1096344 bytes .../awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o.d | 166 + .../src/awp/CMakeFiles/lpmcl3d.dir/link.txt | 2 + .../src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o | Bin 0 -> 98120 bytes .../src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o.d | 68 + .../awp/CMakeFiles/lpmcl3d.dir/progress.make | 14 + .../src/awp/CMakeFiles/lpmcl3d.dir/source.c.o | Bin 0 -> 61160 bytes .../awp/CMakeFiles/lpmcl3d.dir/source.c.o.d | 73 + .../src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o | Bin 0 -> 53736 bytes .../src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o.d | 46 + .../src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o | Bin 0 -> 3984 bytes .../awp/CMakeFiles/lpmcl3d.dir/utils.c.o.d | 28 + release/src/awp/CMakeFiles/progress.marks | 1 + release/src/awp/CTestTestfile.cmake | 6 + release/src/awp/Makefile | 592 + release/src/awp/cmake_install.cmake | 44 + release/src/awp/libawp.a | Bin 0 -> 1102028 bytes release/src/awp/liberror.a | Bin 0 -> 5686 bytes release/src/awp/liblpmcl3d.a | Bin 0 -> 1394008 bytes .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/buffers.dir/DependInfo.cmake | 19 + .../buffers/CMakeFiles/buffers.dir/buffer.c.o | Bin 0 -> 8080 bytes .../CMakeFiles/buffers.dir/buffer.c.o.d | 50 + .../buffers/CMakeFiles/buffers.dir/build.make | 111 + .../CMakeFiles/buffers.dir/cmake_clean.cmake | 11 + .../buffers.dir/cmake_clean_target.cmake | 3 + .../buffers.dir/compiler_depend.make | 2 + .../CMakeFiles/buffers.dir/compiler_depend.ts | 2 + .../CMakeFiles/buffers.dir/depend.make | 2 + .../buffers/CMakeFiles/buffers.dir/flags.make | 10 + .../buffers/CMakeFiles/buffers.dir/link.txt | 2 + .../CMakeFiles/buffers.dir/progress.make | 3 + release/src/buffers/CMakeFiles/progress.marks | 1 + release/src/buffers/CTestTestfile.cmake | 6 + release/src/buffers/Makefile | 193 + release/src/buffers/cmake_install.cmake | 44 + release/src/buffers/libbuffers.a | Bin 0 -> 8478 bytes .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/checksum.dir/DependInfo.cmake | 20 + .../CMakeFiles/checksum.dir/build.make | 127 + .../CMakeFiles/checksum.dir/checksum.c.o | Bin 0 -> 3264 bytes .../CMakeFiles/checksum.dir/checksum.c.o.d | 17 + .../CMakeFiles/checksum.dir/cmake_clean.cmake | 13 + .../checksum.dir/cmake_clean_target.cmake | 3 + .../checksum.dir/compiler_depend.make | 2 + .../checksum.dir/compiler_depend.ts | 2 + .../CMakeFiles/checksum.dir/depend.make | 2 + .../CMakeFiles/checksum.dir/flags.make | 10 + .../checksum/CMakeFiles/checksum.dir/link.txt | 2 + .../CMakeFiles/checksum.dir/md5/md5.c.o | Bin 0 -> 12432 bytes .../CMakeFiles/checksum.dir/md5/md5.c.o.d | 9 + .../CMakeFiles/checksum.dir/progress.make | 4 + .../src/checksum/CMakeFiles/progress.marks | 1 + release/src/checksum/CTestTestfile.cmake | 6 + release/src/checksum/Makefile | 220 + release/src/checksum/cmake_install.cmake | 44 + release/src/checksum/libchecksum.a | Bin 0 -> 16010 bytes release/src/cmake_install.cmake | 60 + .../CMakeDirectoryInformation.cmake | 16 + .../grid/CMakeFiles/grid.dir/DependInfo.cmake | 20 + .../src/grid/CMakeFiles/grid.dir/build.make | 127 + .../CMakeFiles/grid.dir/cmake_clean.cmake | 13 + .../grid.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/grid.dir/compiler_depend.make | 2 + .../CMakeFiles/grid.dir/compiler_depend.ts | 2 + .../src/grid/CMakeFiles/grid.dir/depend.make | 2 + .../src/grid/CMakeFiles/grid.dir/flags.make | 10 + .../src/grid/CMakeFiles/grid.dir/grid_3d.c.o | Bin 0 -> 19176 bytes .../grid/CMakeFiles/grid.dir/grid_3d.c.o.d | 35 + release/src/grid/CMakeFiles/grid.dir/link.txt | 2 + .../grid/CMakeFiles/grid.dir/progress.make | 4 + .../src/grid/CMakeFiles/grid.dir/shift.c.o | Bin 0 -> 9536 bytes .../src/grid/CMakeFiles/grid.dir/shift.c.o.d | 8 + release/src/grid/CMakeFiles/progress.marks | 1 + release/src/grid/CTestTestfile.cmake | 6 + release/src/grid/Makefile | 220 + release/src/grid/cmake_install.cmake | 44 + release/src/grid/libgrid.a | Bin 0 -> 29814 bytes .../CMakeDirectoryInformation.cmake | 16 + .../interpolation.dir/DependInfo.cmake | 21 + .../CMakeFiles/interpolation.dir/build.make | 144 + .../interpolation.dir/cmake_clean.cmake | 15 + .../cmake_clean_target.cmake | 3 + .../interpolation.dir/compiler_depend.make | 2 + .../interpolation.dir/compiler_depend.ts | 2 + .../CMakeFiles/interpolation.dir/depend.make | 2 + .../CMakeFiles/interpolation.dir/flags.make | 17 + .../interpolation.dir/includes_CUDA.rsp | 1 + .../interpolation.dir/interpolation.c.o | Bin 0 -> 8224 bytes .../interpolation.dir/interpolation.c.o.d | 37 + .../interpolation.dir/interpolation.cu.o | Bin 0 -> 37272 bytes .../interpolation.dir/interpolation.cu.o.d | 177 + .../CMakeFiles/interpolation.dir/lagrange.c.o | Bin 0 -> 2984 bytes .../interpolation.dir/lagrange.c.o.d | 21 + .../CMakeFiles/interpolation.dir/link.txt | 2 + .../interpolation.dir/progress.make | 5 + .../interpolation/CMakeFiles/progress.marks | 1 + release/src/interpolation/CTestTestfile.cmake | 6 + release/src/interpolation/Makefile | 247 + release/src/interpolation/cmake_install.cmake | 44 + release/src/interpolation/libinterpolation.a | Bin 0 -> 49350 bytes .../CMakeDirectoryInformation.cmake | 16 + .../mpi/CMakeFiles/mpi.dir/DependInfo.cmake | 21 + release/src/mpi/CMakeFiles/mpi.dir/build.make | 143 + .../mpi/CMakeFiles/mpi.dir/cmake_clean.cmake | 15 + .../mpi.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/mpi.dir/compiler_depend.make | 2 + .../mpi/CMakeFiles/mpi.dir/compiler_depend.ts | 2 + .../src/mpi/CMakeFiles/mpi.dir/depend.make | 2 + .../src/mpi/CMakeFiles/mpi.dir/distribute.c.o | Bin 0 -> 5128 bytes .../mpi/CMakeFiles/mpi.dir/distribute.c.o.d | 69 + release/src/mpi/CMakeFiles/mpi.dir/flags.make | 10 + release/src/mpi/CMakeFiles/mpi.dir/io.c.o | Bin 0 -> 19776 bytes release/src/mpi/CMakeFiles/mpi.dir/io.c.o.d | 27 + release/src/mpi/CMakeFiles/mpi.dir/link.txt | 2 + .../src/mpi/CMakeFiles/mpi.dir/partition.c.o | Bin 0 -> 2360 bytes .../mpi/CMakeFiles/mpi.dir/partition.c.o.d | 7 + .../src/mpi/CMakeFiles/mpi.dir/progress.make | 5 + release/src/mpi/CMakeFiles/progress.marks | 1 + release/src/mpi/CTestTestfile.cmake | 6 + release/src/mpi/Makefile | 247 + release/src/mpi/cmake_install.cmake | 44 + release/src/mpi/libmpi.a | Bin 0 -> 27766 bytes .../CMakeDirectoryInformation.cmake | 16 + release/src/readers/CMakeFiles/progress.marks | 1 + .../CMakeFiles/readers.dir/DependInfo.cmake | 20 + .../readers/CMakeFiles/readers.dir/build.make | 127 + .../CMakeFiles/readers.dir/cmake_clean.cmake | 13 + .../readers.dir/cmake_clean_target.cmake | 3 + .../readers.dir/compiler_depend.make | 2 + .../CMakeFiles/readers.dir/compiler_depend.ts | 2 + .../CMakeFiles/readers.dir/depend.make | 2 + .../readers/CMakeFiles/readers.dir/flags.make | 10 + .../readers/CMakeFiles/readers.dir/input.c.o | Bin 0 -> 16136 bytes .../CMakeFiles/readers.dir/input.c.o.d | 33 + .../readers/CMakeFiles/readers.dir/link.txt | 2 + .../CMakeFiles/readers.dir/progress.make | 4 + .../CMakeFiles/readers.dir/version.c.o | Bin 0 -> 5136 bytes .../CMakeFiles/readers.dir/version.c.o.d | 21 + release/src/readers/CTestTestfile.cmake | 6 + release/src/readers/Makefile | 220 + release/src/readers/cmake_install.cmake | 44 + release/src/readers/libreaders.a | Bin 0 -> 21952 bytes .../CMakeDirectoryInformation.cmake | 16 + release/src/test/CMakeFiles/progress.marks | 1 + .../CMakeFiles/testing.dir/DependInfo.cmake | 21 + .../test/CMakeFiles/testing.dir/build.make | 143 + .../src/test/CMakeFiles/testing.dir/check.c.o | Bin 0 -> 2832 bytes .../test/CMakeFiles/testing.dir/check.c.o.d | 26 + .../CMakeFiles/testing.dir/cmake_clean.cmake | 15 + .../testing.dir/cmake_clean_target.cmake | 3 + .../testing.dir/compiler_depend.make | 2 + .../CMakeFiles/testing.dir/compiler_depend.ts | 2 + .../test/CMakeFiles/testing.dir/depend.make | 2 + .../test/CMakeFiles/testing.dir/flags.make | 10 + .../CMakeFiles/testing.dir/grid_check.c.o | Bin 0 -> 8864 bytes .../CMakeFiles/testing.dir/grid_check.c.o.d | 31 + .../src/test/CMakeFiles/testing.dir/link.txt | 2 + .../test/CMakeFiles/testing.dir/progress.make | 5 + .../src/test/CMakeFiles/testing.dir/test.c.o | Bin 0 -> 6720 bytes .../test/CMakeFiles/testing.dir/test.c.o.d | 32 + release/src/test/CTestTestfile.cmake | 6 + release/src/test/Makefile | 247 + release/src/test/cmake_install.cmake | 44 + release/src/test/libtesting.a | Bin 0 -> 19010 bytes .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/mapping.dir/DependInfo.cmake | 19 + .../CMakeFiles/mapping.dir/build.make | 111 + .../CMakeFiles/mapping.dir/cmake_clean.cmake | 11 + .../mapping.dir/cmake_clean_target.cmake | 3 + .../mapping.dir/compiler_depend.make | 2 + .../CMakeFiles/mapping.dir/compiler_depend.ts | 2 + .../CMakeFiles/mapping.dir/depend.make | 2 + .../CMakeFiles/mapping.dir/flags.make | 10 + .../CMakeFiles/mapping.dir/link.txt | 2 + .../CMakeFiles/mapping.dir/mapping.c.o | Bin 0 -> 12680 bytes .../CMakeFiles/mapping.dir/mapping.c.o.d | 23 + .../CMakeFiles/mapping.dir/progress.make | 3 + .../src/topography/CMakeFiles/progress.marks | 1 + .../topography.dir/DependInfo.cmake | 26 + .../CMakeFiles/topography.dir/build.make | 227 + .../topography.dir/cmake_clean.cmake | 25 + .../topography.dir/cmake_clean_target.cmake | 3 + .../topography.dir/compiler_depend.make | 2 + .../topography.dir/compiler_depend.ts | 2 + .../CMakeFiles/topography.dir/depend.make | 2 + .../CMakeFiles/topography.dir/energy.cu.o | Bin 0 -> 74936 bytes .../CMakeFiles/topography.dir/energy.cu.o.d | 163 + .../CMakeFiles/topography.dir/flags.make | 17 + .../CMakeFiles/topography.dir/geometry.c.o | Bin 0 -> 6216 bytes .../CMakeFiles/topography.dir/geometry.c.o.d | 61 + .../CMakeFiles/topography.dir/grids.c.o | Bin 0 -> 9312 bytes .../CMakeFiles/topography.dir/grids.c.o.d | 30 + .../CMakeFiles/topography.dir/host.c.o | Bin 0 -> 11624 bytes .../CMakeFiles/topography.dir/host.c.o.d | 56 + .../topography.dir/includes_CUDA.rsp | 1 + .../CMakeFiles/topography.dir/link.txt | 2 + .../CMakeFiles/topography.dir/mms.cu.o | Bin 0 -> 150728 bytes .../CMakeFiles/topography.dir/mms.cu.o.d | 167 + .../CMakeFiles/topography.dir/progress.make | 10 + .../CMakeFiles/topography.dir/stress.cu.o | Bin 0 -> 800424 bytes .../CMakeFiles/topography.dir/stress.cu.o.d | 182 + .../CMakeFiles/topography.dir/topography.c.o | Bin 0 -> 48064 bytes .../topography.dir/topography.c.o.d | 69 + .../CMakeFiles/topography.dir/velocity.cu.o | Bin 0 -> 889120 bytes .../CMakeFiles/topography.dir/velocity.cu.o.d | 182 + .../topography_no_bc.dir/DependInfo.cmake | 26 + .../topography_no_bc.dir/build.make | 227 + .../topography_no_bc.dir/cmake_clean.cmake | 25 + .../cmake_clean_target.cmake | 3 + .../topography_no_bc.dir/compiler_depend.make | 2 + .../topography_no_bc.dir/compiler_depend.ts | 2 + .../topography_no_bc.dir/depend.make | 2 + .../topography_no_bc.dir/energy.cu.o | Bin 0 -> 74936 bytes .../topography_no_bc.dir/energy.cu.o.d | 163 + .../topography_no_bc.dir/flags.make | 17 + .../topography_no_bc.dir/geometry.c.o | Bin 0 -> 6216 bytes .../topography_no_bc.dir/geometry.c.o.d | 61 + .../CMakeFiles/topography_no_bc.dir/grids.c.o | Bin 0 -> 9312 bytes .../topography_no_bc.dir/grids.c.o.d | 30 + .../CMakeFiles/topography_no_bc.dir/host.c.o | Bin 0 -> 11624 bytes .../topography_no_bc.dir/host.c.o.d | 56 + .../topography_no_bc.dir/includes_CUDA.rsp | 1 + .../CMakeFiles/topography_no_bc.dir/link.txt | 2 + .../CMakeFiles/topography_no_bc.dir/mms.cu.o | Bin 0 -> 150728 bytes .../topography_no_bc.dir/mms.cu.o.d | 167 + .../topography_no_bc.dir/progress.make | 10 + .../topography_no_bc.dir/stress.cu.o | Bin 0 -> 800424 bytes .../topography_no_bc.dir/stress.cu.o.d | 182 + .../topography_no_bc.dir/topography.c.o | Bin 0 -> 48064 bytes .../topography_no_bc.dir/topography.c.o.d | 69 + .../topography_no_bc.dir/velocity.cu.o | Bin 0 -> 889088 bytes .../topography_no_bc.dir/velocity.cu.o.d | 182 + release/src/topography/CTestTestfile.cmake | 14 + release/src/topography/Makefile | 463 + release/src/topography/cmake_install.cmake | 57 + .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/functions.dir/DependInfo.cmake | 21 + .../CMakeFiles/functions.dir/build.make | 143 + .../functions.dir/cmake_clean.cmake | 15 + .../functions.dir/cmake_clean_target.cmake | 3 + .../functions.dir/compiler_depend.make | 2 + .../functions.dir/compiler_depend.ts | 2 + .../CMakeFiles/functions.dir/depend.make | 2 + .../CMakeFiles/functions.dir/flags.make | 10 + .../CMakeFiles/functions.dir/functions.c.o | Bin 0 -> 9168 bytes .../CMakeFiles/functions.dir/functions.c.o.d | 27 + .../CMakeFiles/functions.dir/link.txt | 2 + .../CMakeFiles/functions.dir/norm.c.o | Bin 0 -> 2160 bytes .../CMakeFiles/functions.dir/norm.c.o.d | 14 + .../CMakeFiles/functions.dir/progress.make | 5 + .../CMakeFiles/functions.dir/random.c.o | Bin 0 -> 2064 bytes .../CMakeFiles/functions.dir/random.c.o.d | 15 + .../functions/CMakeFiles/progress.marks | 1 + .../topography/functions/CTestTestfile.cmake | 6 + release/src/topography/functions/Makefile | 247 + .../topography/functions/cmake_install.cmake | 44 + .../src/topography/functions/libfunctions.a | Bin 0 -> 13836 bytes .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/geometry.dir/DependInfo.cmake | 19 + .../CMakeFiles/geometry.dir/build.make | 111 + .../CMakeFiles/geometry.dir/cmake_clean.cmake | 11 + .../geometry.dir/cmake_clean_target.cmake | 3 + .../geometry.dir/compiler_depend.make | 2 + .../geometry.dir/compiler_depend.ts | 2 + .../CMakeFiles/geometry.dir/depend.make | 2 + .../CMakeFiles/geometry.dir/flags.make | 10 + .../CMakeFiles/geometry.dir/geometry.c.o | Bin 0 -> 12624 bytes .../CMakeFiles/geometry.dir/geometry.c.o.d | 38 + .../geometry/CMakeFiles/geometry.dir/link.txt | 2 + .../CMakeFiles/geometry.dir/progress.make | 3 + .../geometry/CMakeFiles/progress.marks | 1 + .../topography/geometry/CTestTestfile.cmake | 6 + release/src/topography/geometry/Makefile | 193 + .../topography/geometry/cmake_install.cmake | 44 + release/src/topography/geometry/libgeometry.a | Bin 0 -> 12986 bytes .../CMakeDirectoryInformation.cmake | 16 + .../initializations/CMakeFiles/progress.marks | 1 + .../DependInfo.cmake | 23 + .../topography_initializations.dir/build.make | 175 + .../topography_initializations.dir/cerjan.c.o | Bin 0 -> 4064 bytes .../cerjan.c.o.d | 55 + .../cmake_clean.cmake | 19 + .../cmake_clean_target.cmake | 3 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../constant.c.o | Bin 0 -> 5144 bytes .../constant.c.o.d | 55 + .../depend.make | 2 + .../topography_initializations.dir/flags.make | 10 + .../topography_initializations.dir/linear.c.o | Bin 0 -> 5640 bytes .../linear.c.o.d | 55 + .../topography_initializations.dir/link.txt | 2 + .../progress.make | 7 + .../quadratic.c.o | Bin 0 -> 5696 bytes .../quadratic.c.o.d | 55 + .../topography_initializations.dir/random.c.o | Bin 0 -> 3392 bytes .../random.c.o.d | 56 + .../initializations/CTestTestfile.cmake | 6 + .../src/topography/initializations/Makefile | 301 + .../initializations/cmake_install.cmake | 44 + .../libtopography_initializations.a | Bin 0 -> 24544 bytes .../CMakeDirectoryInformation.cmake | 16 + .../kernels/CMakeFiles/progress.marks | 1 + .../topography/kernels/CTestTestfile.cmake | 6 + release/src/topography/kernels/Makefile | 151 + .../topography/kernels/cmake_install.cmake | 44 + release/src/topography/libmapping.a | Bin 0 -> 13090 bytes release/src/topography/libtopography.a | Bin 0 -> 1998558 bytes release/src/topography/libtopography_no_bc.a | Bin 0 -> 1998526 bytes .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/metrics.dir/DependInfo.cmake | 21 + .../metrics/CMakeFiles/metrics.dir/build.make | 143 + .../CMakeFiles/metrics.dir/cmake_clean.cmake | 15 + .../metrics.dir/cmake_clean_target.cmake | 3 + .../metrics.dir/compiler_depend.make | 2 + .../CMakeFiles/metrics.dir/compiler_depend.ts | 2 + .../CMakeFiles/metrics.dir/depend.make | 2 + .../metrics/CMakeFiles/metrics.dir/flags.make | 10 + .../metrics/CMakeFiles/metrics.dir/kernel.c.o | Bin 0 -> 19944 bytes .../CMakeFiles/metrics.dir/kernel.c.o.d | 19 + .../metrics/CMakeFiles/metrics.dir/link.txt | 2 + .../CMakeFiles/metrics.dir/metrics.c.o | Bin 0 -> 40728 bytes .../CMakeFiles/metrics.dir/metrics.c.o.d | 62 + .../CMakeFiles/metrics.dir/progress.make | 5 + .../metrics/CMakeFiles/metrics.dir/shift.c.o | Bin 0 -> 1744 bytes .../CMakeFiles/metrics.dir/shift.c.o.d | 20 + .../metrics/CMakeFiles/progress.marks | 1 + .../topography/metrics/CTestTestfile.cmake | 6 + release/src/topography/metrics/Makefile | 247 + .../topography/metrics/cmake_install.cmake | 44 + release/src/topography/metrics/libmetrics.a | Bin 0 -> 63746 bytes .../CMakeDirectoryInformation.cmake | 16 + .../readers/CMakeFiles/progress.marks | 1 + .../topography_readers.dir/DependInfo.cmake | 19 + .../topography_readers.dir/build.make | 111 + .../topography_readers.dir/cmake_clean.cmake | 11 + .../cmake_clean_target.cmake | 3 + .../compiler_depend.make | 2 + .../topography_readers.dir/compiler_depend.ts | 2 + .../topography_readers.dir/depend.make | 2 + .../topography_readers.dir/flags.make | 10 + .../topography_readers.dir/link.txt | 2 + .../topography_readers.dir/progress.make | 3 + .../topography_readers.dir/serial_reader.c.o | Bin 0 -> 4096 bytes .../serial_reader.c.o.d | 32 + .../topography/readers/CTestTestfile.cmake | 6 + release/src/topography/readers/Makefile | 193 + .../topography/readers/cmake_install.cmake | 44 + .../readers/libtopography_readers.a | Bin 0 -> 4330 bytes .../CMakeDirectoryInformation.cmake | 16 + .../receivers/CMakeFiles/progress.marks | 1 + .../topography_receivers.dir/DependInfo.cmake | 21 + .../topography_receivers.dir/build.make | 143 + .../cmake_clean.cmake | 15 + .../cmake_clean_target.cmake | 3 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../topography_receivers.dir/depend.make | 2 + .../topography_receivers.dir/flags.make | 10 + .../topography_receivers.dir/link.txt | 2 + .../topography_receivers.dir/progress.make | 5 + .../topography_receivers.dir/receiver.c.o | Bin 0 -> 5504 bytes .../topography_receivers.dir/receiver.c.o.d | 72 + .../topography_receivers.dir/receivers.c.o | Bin 0 -> 11824 bytes .../topography_receivers.dir/receivers.c.o.d | 69 + .../topography_receivers.dir/sgt.c.o | Bin 0 -> 12952 bytes .../topography_receivers.dir/sgt.c.o.d | 69 + .../topography/receivers/CTestTestfile.cmake | 6 + release/src/topography/receivers/Makefile | 247 + .../topography/receivers/cmake_install.cmake | 44 + .../receivers/libtopography_receivers.a | Bin 0 -> 30874 bytes .../CMakeDirectoryInformation.cmake | 16 + .../sources/CMakeFiles/progress.marks | 1 + .../topography_sources.dir/DependInfo.cmake | 22 + .../topography_sources.dir/build.make | 160 + .../topography_sources.dir/cmake_clean.cmake | 17 + .../cmake_clean_target.cmake | 3 + .../compiler_depend.make | 2 + .../topography_sources.dir/compiler_depend.ts | 2 + .../topography_sources.dir/depend.make | 2 + .../topography_sources.dir/flags.make | 17 + .../topography_sources.dir/forces.c.o | Bin 0 -> 15456 bytes .../topography_sources.dir/forces.c.o.d | 70 + .../topography_sources.dir/includes_CUDA.rsp | 1 + .../topography_sources.dir/link.txt | 2 + .../topography_sources.dir/progress.make | 6 + .../topography_sources.dir/source.c.o | Bin 0 -> 21000 bytes .../topography_sources.dir/source.c.o.d | 72 + .../topography_sources.dir/source.cu.o | Bin 0 -> 134088 bytes .../topography_sources.dir/source.cu.o.d | 175 + .../topography_sources.dir/sources.c.o | Bin 0 -> 13208 bytes .../topography_sources.dir/sources.c.o.d | 70 + .../topography/sources/CTestTestfile.cmake | 6 + release/src/topography/sources/Makefile | 274 + .../topography/sources/cmake_install.cmake | 44 + .../sources/libtopography_sources.a | Bin 0 -> 185578 bytes .../CMakeDirectoryInformation.cmake | 16 + release/src/vtk/CMakeFiles/progress.marks | 1 + .../vtk/CMakeFiles/vtk.dir/DependInfo.cmake | 19 + release/src/vtk/CMakeFiles/vtk.dir/build.make | 111 + .../vtk/CMakeFiles/vtk.dir/cmake_clean.cmake | 11 + .../vtk.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/vtk.dir/compiler_depend.make | 2 + .../vtk/CMakeFiles/vtk.dir/compiler_depend.ts | 2 + .../src/vtk/CMakeFiles/vtk.dir/depend.make | 2 + release/src/vtk/CMakeFiles/vtk.dir/flags.make | 10 + release/src/vtk/CMakeFiles/vtk.dir/link.txt | 2 + .../src/vtk/CMakeFiles/vtk.dir/progress.make | 3 + release/src/vtk/CMakeFiles/vtk.dir/vtk.c.o | Bin 0 -> 8328 bytes release/src/vtk/CMakeFiles/vtk.dir/vtk.c.o.d | 28 + release/src/vtk/CTestTestfile.cmake | 6 + release/src/vtk/Makefile | 193 + release/src/vtk/cmake_install.cmake | 44 + release/src/vtk/libvtk.a | Bin 0 -> 8548 bytes .../CMakeDirectoryInformation.cmake | 16 + release/tests/CMakeFiles/progress.marks | 1 + .../test_attenuation.dir/DependInfo.cmake | 19 + .../test_attenuation.dir/build.make | 138 + .../test_attenuation.dir/cmake_clean.cmake | 11 + .../test_attenuation.dir/compiler_depend.make | 2 + .../test_attenuation.dir/compiler_depend.ts | 2 + .../test_attenuation.dir/depend.make | 2 + .../test_attenuation.dir/flags.make | 10 + .../test_attenuation.dir/includes_CUDA.rsp | 1 + .../CMakeFiles/test_attenuation.dir/link.txt | 1 + .../test_attenuation.dir/linkLibs.rsp | 1 + .../test_attenuation.dir/objects1.rsp | 1 + .../test_attenuation.dir/progress.make | 3 + .../test_attenuation.cu.o | Bin 0 -> 21960 bytes .../test_attenuation.cu.o.d | 212 + release/tests/CTestTestfile.cmake | 12 + release/tests/Makefile | 193 + .../CMakeDirectoryInformation.cmake | 16 + .../tests/buffers/CMakeFiles/progress.marks | 1 + .../test_buffer.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_buffer.dir/build.make | 117 + .../test_buffer.dir/cmake_clean.cmake | 11 + .../test_buffer.dir/compiler_depend.make | 2 + .../test_buffer.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_buffer.dir/depend.make | 2 + .../CMakeFiles/test_buffer.dir/flags.make | 10 + .../test_buffer.dir/includes_CUDA.rsp | 1 + .../CMakeFiles/test_buffer.dir/link.txt | 1 + .../CMakeFiles/test_buffer.dir/linkLibs.rsp | 1 + .../CMakeFiles/test_buffer.dir/objects1.rsp | 1 + .../CMakeFiles/test_buffer.dir/progress.make | 3 + .../test_buffer.dir/test_buffer.cu.o | Bin 0 -> 30776 bytes .../test_buffer.dir/test_buffer.cu.o.d | 175 + release/tests/buffers/CTestTestfile.cmake | 8 + release/tests/buffers/Makefile | 193 + release/tests/buffers/cmake_install.cmake | 44 + release/tests/buffers/test_buffer | Bin 0 -> 928336 bytes release/tests/cmake_install.cmake | 55 + .../CMakeDirectoryInformation.cmake | 16 + release/tests/grid/CMakeFiles/progress.marks | 1 + .../test_grid_3d.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_grid_3d.dir/build.make | 114 + .../test_grid_3d.dir/cmake_clean.cmake | 11 + .../test_grid_3d.dir/compiler_depend.make | 2 + .../test_grid_3d.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_grid_3d.dir/depend.make | 2 + .../CMakeFiles/test_grid_3d.dir/flags.make | 10 + .../grid/CMakeFiles/test_grid_3d.dir/link.txt | 1 + .../CMakeFiles/test_grid_3d.dir/progress.make | 3 + .../test_grid_3d.dir/test_grid_3d.c.o | Bin 0 -> 49888 bytes .../test_grid_3d.dir/test_grid_3d.c.o.d | 36 + release/tests/grid/CTestTestfile.cmake | 8 + release/tests/grid/Makefile | 193 + release/tests/grid/cmake_install.cmake | 44 + release/tests/grid/test_grid_3d | Bin 0 -> 84296 bytes .../CMakeDirectoryInformation.cmake | 16 + .../interpolation/CMakeFiles/progress.marks | 1 + .../test_interpolation.dir/DependInfo.cmake | 19 + .../test_interpolation.dir/build.make | 119 + .../test_interpolation.dir/cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../test_interpolation.dir/compiler_depend.ts | 2 + .../test_interpolation.dir/depend.make | 2 + .../test_interpolation.dir/flags.make | 10 + .../test_interpolation.dir/link.txt | 1 + .../test_interpolation.dir/linkLibs.rsp | 1 + .../test_interpolation.dir/objects1.rsp | 1 + .../test_interpolation.dir/progress.make | 3 + .../test_interpolation.c.o | Bin 0 -> 26448 bytes .../test_interpolation.c.o.d | 38 + .../test_interpolationcu.dir/DependInfo.cmake | 19 + .../test_interpolationcu.dir/build.make | 120 + .../cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../test_interpolationcu.dir/depend.make | 2 + .../test_interpolationcu.dir/flags.make | 10 + .../includes_CUDA.rsp | 1 + .../test_interpolationcu.dir/link.txt | 1 + .../test_interpolationcu.dir/linkLibs.rsp | 1 + .../test_interpolationcu.dir/objects1.rsp | 1 + .../test_interpolationcu.dir/progress.make | 3 + .../test_interpolation.cu.o | Bin 0 -> 11512 bytes .../test_interpolation.cu.o.d | 178 + .../test_lagrange.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_lagrange.dir/build.make | 118 + .../test_lagrange.dir/cmake_clean.cmake | 11 + .../test_lagrange.dir/compiler_depend.make | 2 + .../test_lagrange.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_lagrange.dir/depend.make | 2 + .../CMakeFiles/test_lagrange.dir/flags.make | 10 + .../CMakeFiles/test_lagrange.dir/link.txt | 1 + .../CMakeFiles/test_lagrange.dir/linkLibs.rsp | 1 + .../CMakeFiles/test_lagrange.dir/objects1.rsp | 1 + .../test_lagrange.dir/progress.make | 3 + .../test_lagrange.dir/test_lagrange.c.o | Bin 0 -> 6824 bytes .../test_lagrange.dir/test_lagrange.c.o.d | 34 + .../tests/interpolation/CTestTestfile.cmake | 12 + release/tests/interpolation/Makefile | 277 + .../tests/interpolation/cmake_install.cmake | 44 + .../tests/interpolation/test_interpolation | Bin 0 -> 83912 bytes .../tests/interpolation/test_interpolationcu | Bin 0 -> 931480 bytes release/tests/interpolation/test_lagrange | Bin 0 -> 81104 bytes .../CMakeDirectoryInformation.cmake | 16 + release/tests/mpi/CMakeFiles/progress.marks | 1 + .../test_indexed.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_indexed.dir/build.make | 113 + .../test_indexed.dir/cmake_clean.cmake | 11 + .../test_indexed.dir/compiler_depend.make | 2 + .../test_indexed.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_indexed.dir/depend.make | 2 + .../CMakeFiles/test_indexed.dir/flags.make | 10 + .../mpi/CMakeFiles/test_indexed.dir/link.txt | 1 + .../CMakeFiles/test_indexed.dir/progress.make | 3 + .../test_indexed.dir/test_indexed.c.o | Bin 0 -> 15752 bytes .../test_indexed.dir/test_indexed.c.o.d | 34 + .../test_mpi_io.dir/DependInfo.cmake | 19 + .../mpi/CMakeFiles/test_mpi_io.dir/build.make | 115 + .../test_mpi_io.dir/cmake_clean.cmake | 11 + .../test_mpi_io.dir/compiler_depend.make | 2 + .../test_mpi_io.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_mpi_io.dir/depend.make | 2 + .../mpi/CMakeFiles/test_mpi_io.dir/flags.make | 10 + .../mpi/CMakeFiles/test_mpi_io.dir/link.txt | 1 + .../CMakeFiles/test_mpi_io.dir/progress.make | 3 + .../CMakeFiles/test_mpi_io.dir/test_io.c.o | Bin 0 -> 12976 bytes .../CMakeFiles/test_mpi_io.dir/test_io.c.o.d | 59 + release/tests/mpi/CTestTestfile.cmake | 10 + release/tests/mpi/Makefile | 235 + release/tests/mpi/cmake_install.cmake | 44 + release/tests/mpi/test_indexed | Bin 0 -> 83496 bytes release/tests/mpi/test_mpi_io | Bin 0 -> 84888 bytes .../CMakeDirectoryInformation.cmake | 16 + .../tests/readers/CMakeFiles/progress.marks | 1 + .../test_input.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_input.dir/build.make | 115 + .../test_input.dir/cmake_clean.cmake | 11 + .../test_input.dir/compiler_depend.make | 2 + .../test_input.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_input.dir/depend.make | 2 + .../CMakeFiles/test_input.dir/flags.make | 10 + .../CMakeFiles/test_input.dir/link.txt | 1 + .../CMakeFiles/test_input.dir/progress.make | 3 + .../CMakeFiles/test_input.dir/test_input.c.o | Bin 0 -> 22352 bytes .../test_input.dir/test_input.c.o.d | 30 + .../test_version.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_version.dir/build.make | 114 + .../test_version.dir/cmake_clean.cmake | 11 + .../test_version.dir/compiler_depend.make | 2 + .../test_version.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_version.dir/depend.make | 2 + .../CMakeFiles/test_version.dir/flags.make | 10 + .../CMakeFiles/test_version.dir/link.txt | 1 + .../CMakeFiles/test_version.dir/progress.make | 3 + .../test_version.dir/test_version.c.o | Bin 0 -> 12768 bytes .../test_version.dir/test_version.c.o.d | 28 + release/tests/readers/CTestTestfile.cmake | 10 + release/tests/readers/Makefile | 235 + release/tests/readers/cmake_install.cmake | 44 + release/tests/readers/test_input | Bin 0 -> 84784 bytes release/tests/readers/test_version | Bin 0 -> 82392 bytes release/tests/test_attenuation | Bin 0 -> 2855464 bytes .../CMakeDirectoryInformation.cmake | 16 + .../topography/CMakeFiles/progress.marks | 1 + release/tests/topography/CTestTestfile.cmake | 13 + release/tests/topography/Makefile | 151 + .../CMakeDirectoryInformation.cmake | 16 + .../accuracy/CMakeFiles/progress.marks | 1 + .../test_convergence.dir/DependInfo.cmake | 19 + .../test_convergence.dir/build.make | 133 + .../test_convergence.dir/cmake_clean.cmake | 11 + .../test_convergence.dir/compiler_depend.make | 2 + .../test_convergence.dir/compiler_depend.ts | 2 + .../test_convergence.dir/depend.make | 2 + .../test_convergence.dir/flags.make | 10 + .../test_convergence.dir/includes_CUDA.rsp | 1 + .../CMakeFiles/test_convergence.dir/link.txt | 1 + .../test_convergence.dir/linkLibs.rsp | 1 + .../test_convergence.dir/objects1.rsp | 1 + .../test_convergence.dir/progress.make | 3 + .../test_convergence.cu.o | Bin 0 -> 74056 bytes .../test_convergence.cu.o.d | 189 + .../topography/accuracy/CTestTestfile.cmake | 8 + release/tests/topography/accuracy/Makefile | 193 + .../topography/accuracy/cmake_install.cmake | 44 + .../topography/accuracy/test_convergence | Bin 0 -> 2716072 bytes release/tests/topography/cmake_install.cmake | 56 + .../CMakeDirectoryInformation.cmake | 16 + .../geometry/CMakeFiles/progress.marks | 1 + .../DependInfo.cmake | 19 + .../test_topography_geometry.dir/build.make | 125 + .../cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../test_topography_geometry.dir/depend.make | 2 + .../test_topography_geometry.dir/flags.make | 10 + .../test_topography_geometry.dir/link.txt | 1 + .../test_topography_geometry.dir/linkLibs.rsp | 1 + .../test_topography_geometry.dir/objects1.rsp | 1 + .../progress.make | 3 + .../test_geometry.c.o | Bin 0 -> 12720 bytes .../test_geometry.c.o.d | 62 + .../topography/geometry/CTestTestfile.cmake | 8 + release/tests/topography/geometry/Makefile | 193 + .../topography/geometry/cmake_install.cmake | 44 + .../geometry/test_topography_geometry | Bin 0 -> 999808 bytes .../CMakeDirectoryInformation.cmake | 16 + .../mapping/CMakeFiles/progress.marks | 1 + .../test_mapping.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_mapping.dir/build.make | 129 + .../test_mapping.dir/cmake_clean.cmake | 11 + .../test_mapping.dir/compiler_depend.make | 2 + .../test_mapping.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_mapping.dir/depend.make | 2 + .../CMakeFiles/test_mapping.dir/flags.make | 10 + .../CMakeFiles/test_mapping.dir/link.txt | 1 + .../CMakeFiles/test_mapping.dir/linkLibs.rsp | 1 + .../CMakeFiles/test_mapping.dir/objects1.rsp | 1 + .../CMakeFiles/test_mapping.dir/progress.make | 3 + .../test_mapping.dir/test_mapping.c.o | Bin 0 -> 7112 bytes .../test_mapping.dir/test_mapping.c.o.d | 23 + .../topography/mapping/CTestTestfile.cmake | 8 + release/tests/topography/mapping/Makefile | 193 + .../topography/mapping/cmake_install.cmake | 44 + release/tests/topography/mapping/test_mapping | Bin 0 -> 80824 bytes .../CMakeDirectoryInformation.cmake | 16 + .../metrics/CMakeFiles/progress.marks | 1 + .../test_metrics.dir/DependInfo.cmake | 19 + .../CMakeFiles/test_metrics.dir/build.make | 121 + .../test_metrics.dir/cmake_clean.cmake | 11 + .../test_metrics.dir/compiler_depend.make | 2 + .../test_metrics.dir/compiler_depend.ts | 2 + .../CMakeFiles/test_metrics.dir/depend.make | 2 + .../CMakeFiles/test_metrics.dir/flags.make | 10 + .../CMakeFiles/test_metrics.dir/link.txt | 1 + .../CMakeFiles/test_metrics.dir/linkLibs.rsp | 1 + .../CMakeFiles/test_metrics.dir/objects1.rsp | 1 + .../CMakeFiles/test_metrics.dir/progress.make | 3 + .../test_metrics.dir/test_metrics.c.o | Bin 0 -> 24808 bytes .../test_metrics.dir/test_metrics.c.o.d | 54 + .../topography/metrics/CTestTestfile.cmake | 8 + release/tests/topography/metrics/Makefile | 193 + .../topography/metrics/cmake_install.cmake | 44 + release/tests/topography/metrics/test_metrics | Bin 0 -> 998992 bytes .../CMakeDirectoryInformation.cmake | 16 + .../readers/CMakeFiles/progress.marks | 1 + .../DependInfo.cmake | 19 + .../build.make | 125 + .../cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../depend.make | 2 + .../flags.make | 10 + .../link.txt | 1 + .../linkLibs.rsp | 1 + .../objects1.rsp | 1 + .../progress.make | 3 + .../test_serial_reader.c.o | Bin 0 -> 8056 bytes .../test_serial_reader.c.o.d | 62 + .../topography/readers/CTestTestfile.cmake | 8 + release/tests/topography/readers/Makefile | 193 + .../topography/readers/cmake_install.cmake | 44 + .../readers/test_topography_serial_reader | Bin 0 -> 82360 bytes .../CMakeDirectoryInformation.cmake | 16 + .../receivers/CMakeFiles/progress.marks | 1 + .../DependInfo.cmake | 19 + .../test_topography_receivers.dir/build.make | 133 + .../cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../test_topography_receivers.dir/depend.make | 2 + .../test_topography_receivers.dir/flags.make | 10 + .../test_topography_receivers.dir/link.txt | 1 + .../linkLibs.rsp | 1 + .../objects1.rsp | 1 + .../progress.make | 3 + .../test_receivers.c.o | Bin 0 -> 13880 bytes .../test_receivers.c.o.d | 69 + .../topography/receivers/CTestTestfile.cmake | 8 + release/tests/topography/receivers/Makefile | 193 + .../topography/receivers/cmake_install.cmake | 44 + .../receivers/test_topography_receivers | Bin 0 -> 1205032 bytes .../CMakeDirectoryInformation.cmake | 16 + .../sources/CMakeFiles/progress.marks | 1 + .../DependInfo.cmake | 19 + .../build.make | 133 + .../cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../depend.make | 2 + .../flags.make | 10 + .../link.txt | 1 + .../linkLibs.rsp | 1 + .../objects1.rsp | 1 + .../progress.make | 3 + .../test_source_distribution.c.o | Bin 0 -> 5336 bytes .../test_source_distribution.c.o.d | 72 + .../DependInfo.cmake | 19 + .../test_topography_sources.dir/build.make | 133 + .../cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../test_topography_sources.dir/depend.make | 2 + .../test_topography_sources.dir/flags.make | 10 + .../test_topography_sources.dir/link.txt | 1 + .../test_topography_sources.dir/linkLibs.rsp | 1 + .../test_topography_sources.dir/objects1.rsp | 1 + .../test_topography_sources.dir/progress.make | 3 + .../test_sources.c.o | Bin 0 -> 19016 bytes .../test_sources.c.o.d | 69 + .../DependInfo.cmake | 19 + .../test_topography_sources_dm.dir/build.make | 133 + .../cmake_clean.cmake | 11 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../depend.make | 2 + .../test_topography_sources_dm.dir/flags.make | 10 + .../test_topography_sources_dm.dir/link.txt | 1 + .../linkLibs.rsp | 1 + .../objects1.rsp | 1 + .../progress.make | 3 + .../test_sources_dm.c.o | Bin 0 -> 13520 bytes .../test_sources_dm.c.o.d | 72 + .../topography/sources/CTestTestfile.cmake | 12 + release/tests/topography/sources/Makefile | 277 + .../topography/sources/cmake_install.cmake | 44 + .../test_topography_source_distribution | Bin 0 -> 82616 bytes .../sources/test_topography_sources | Bin 0 -> 1204776 bytes .../sources/test_topography_sources_dm | Bin 0 -> 1205600 bytes .../CMakeDirectoryInformation.cmake | 16 + release/tools/CMakeFiles/progress.marks | 1 + release/tools/CTestTestfile.cmake | 7 + release/tools/Makefile | 151 + release/tools/cmake_install.cmake | 50 + .../CMakeDirectoryInformation.cmake | 16 + .../write_grid/CMakeFiles/progress.marks | 1 + .../write_grid.dir/DependInfo.cmake | 19 + .../CMakeFiles/write_grid.dir/build.make | 114 + .../write_grid.dir/cmake_clean.cmake | 11 + .../write_grid.dir/compiler_depend.make | 2 + .../write_grid.dir/compiler_depend.ts | 2 + .../CMakeFiles/write_grid.dir/depend.make | 2 + .../CMakeFiles/write_grid.dir/flags.make | 10 + .../CMakeFiles/write_grid.dir/link.txt | 1 + .../CMakeFiles/write_grid.dir/progress.make | 3 + .../CMakeFiles/write_grid.dir/write_grid.c.o | Bin 0 -> 31896 bytes .../write_grid.dir/write_grid.c.o.d | 36 + release/tools/write_grid/CTestTestfile.cmake | 6 + release/tools/write_grid/Makefile | 193 + release/tools/write_grid/cmake_install.cmake | 44 + release/tools/write_grid/write_grid | Bin 0 -> 84504 bytes src/awp/command.c | 50 +- src/awp/mesh.c | 148 +- src/awp/pmcl3d.c | 18 +- 1051 files changed, 98334 insertions(+), 75 deletions(-) create mode 100644 release/CMakeCache.txt create mode 100644 release/CMakeFiles/3.27.7/CMakeCCompiler.cmake create mode 100644 release/CMakeFiles/3.27.7/CMakeCUDACompiler.cmake create mode 100755 release/CMakeFiles/3.27.7/CMakeDetermineCompilerABI_C.bin create mode 100755 release/CMakeFiles/3.27.7/CMakeDetermineCompilerABI_CUDA.bin create mode 100644 release/CMakeFiles/3.27.7/CMakeSystem.cmake create mode 100644 release/CMakeFiles/3.27.7/CompilerIdC/CMakeCCompilerId.c create mode 100755 release/CMakeFiles/3.27.7/CompilerIdC/a.out create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/CMakeCUDACompilerId.cu create mode 100755 release/CMakeFiles/3.27.7/CompilerIdCUDA/a.out create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp1.ii create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp4.ii create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.c create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.cpp create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.gpu create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.stub.c create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.fatbin create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.fatbin.c create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.module_id create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.o create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.ptx create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.sm_52.cubin create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin.c create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.o create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.reg.c create mode 100644 release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.sm_52.cubin create mode 100644 release/CMakeFiles/CMakeConfigureLog.yaml create mode 100644 release/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/CMakeFiles/CMakeRuleHashes.txt create mode 100644 release/CMakeFiles/Continuous.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/Continuous.dir/build.make create mode 100644 release/CMakeFiles/Continuous.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/Continuous.dir/compiler_depend.make create mode 100644 release/CMakeFiles/Continuous.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/Continuous.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousBuild.dir/build.make create mode 100644 release/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousBuild.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousBuild.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousBuild.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousConfigure.dir/build.make create mode 100644 release/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousConfigure.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousCoverage.dir/build.make create mode 100644 release/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousCoverage.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousMemCheck.dir/build.make create mode 100644 release/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousMemCheck.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousStart.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousStart.dir/build.make create mode 100644 release/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousStart.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousStart.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousStart.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousSubmit.dir/build.make create mode 100644 release/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousSubmit.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousTest.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousTest.dir/build.make create mode 100644 release/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousTest.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousTest.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousTest.dir/progress.make create mode 100644 release/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ContinuousUpdate.dir/build.make create mode 100644 release/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ContinuousUpdate.dir/progress.make create mode 100644 release/CMakeFiles/Experimental.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/Experimental.dir/build.make create mode 100644 release/CMakeFiles/Experimental.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/Experimental.dir/compiler_depend.make create mode 100644 release/CMakeFiles/Experimental.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/Experimental.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalBuild.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalBuild.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalConfigure.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalConfigure.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalCoverage.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalCoverage.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalMemCheck.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalMemCheck.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalStart.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalStart.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalStart.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalStart.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalSubmit.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalSubmit.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalTest.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalTest.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalTest.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalTest.dir/progress.make create mode 100644 release/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/ExperimentalUpdate.dir/build.make create mode 100644 release/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.make create mode 100644 release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/ExperimentalUpdate.dir/progress.make create mode 100755 release/CMakeFiles/FindMPI/test_mpi_C.bin create mode 100644 release/CMakeFiles/Makefile.cmake create mode 100644 release/CMakeFiles/Makefile2 create mode 100644 release/CMakeFiles/Nightly.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/Nightly.dir/build.make create mode 100644 release/CMakeFiles/Nightly.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/Nightly.dir/compiler_depend.make create mode 100644 release/CMakeFiles/Nightly.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/Nightly.dir/progress.make create mode 100644 release/CMakeFiles/NightlyBuild.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyBuild.dir/build.make create mode 100644 release/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyBuild.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyBuild.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyBuild.dir/progress.make create mode 100644 release/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyConfigure.dir/build.make create mode 100644 release/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyConfigure.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyConfigure.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyConfigure.dir/progress.make create mode 100644 release/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyCoverage.dir/build.make create mode 100644 release/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyCoverage.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyCoverage.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyCoverage.dir/progress.make create mode 100644 release/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyMemCheck.dir/build.make create mode 100644 release/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyMemCheck.dir/progress.make create mode 100644 release/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyMemoryCheck.dir/build.make create mode 100644 release/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyMemoryCheck.dir/progress.make create mode 100644 release/CMakeFiles/NightlyStart.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyStart.dir/build.make create mode 100644 release/CMakeFiles/NightlyStart.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyStart.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyStart.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyStart.dir/progress.make create mode 100644 release/CMakeFiles/NightlySubmit.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlySubmit.dir/build.make create mode 100644 release/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlySubmit.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlySubmit.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlySubmit.dir/progress.make create mode 100644 release/CMakeFiles/NightlyTest.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyTest.dir/build.make create mode 100644 release/CMakeFiles/NightlyTest.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyTest.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyTest.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyTest.dir/progress.make create mode 100644 release/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake create mode 100644 release/CMakeFiles/NightlyUpdate.dir/build.make create mode 100644 release/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake create mode 100644 release/CMakeFiles/NightlyUpdate.dir/compiler_depend.make create mode 100644 release/CMakeFiles/NightlyUpdate.dir/compiler_depend.ts create mode 100644 release/CMakeFiles/NightlyUpdate.dir/progress.make create mode 100644 release/CMakeFiles/TargetDirectories.txt create mode 100644 release/CMakeFiles/cmake.check_cache create mode 100644 release/CMakeFiles/progress.marks create mode 100644 release/CTestTestfile.cmake create mode 100644 release/DartConfiguration.tcl create mode 100644 release/Makefile create mode 100644 release/cmake_install.cmake create mode 100644 release/src/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/CMakeFiles/progress.marks create mode 100644 release/src/CTestTestfile.cmake create mode 100644 release/src/Makefile create mode 100644 release/src/argparse/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/DependInfo.cmake create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/argparse.c.o create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/argparse.c.o.d create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/build.make create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/cmake_clean.cmake create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/cmake_clean_target.cmake create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.make create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.ts create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/depend.make create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/flags.make create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/link.txt create mode 100644 release/src/argparse/CMakeFiles/argparse.dir/progress.make create mode 100644 release/src/argparse/CMakeFiles/progress.marks create mode 100644 release/src/argparse/CTestTestfile.cmake create mode 100644 release/src/argparse/Makefile create mode 100644 release/src/argparse/cmake_install.cmake create mode 100644 release/src/argparse/libargparse.a create mode 100644 release/src/awp/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/awp/CMakeFiles/awp.dir/DependInfo.cmake create mode 100644 release/src/awp/CMakeFiles/awp.dir/build.make create mode 100644 release/src/awp/CMakeFiles/awp.dir/cmake_clean.cmake create mode 100644 release/src/awp/CMakeFiles/awp.dir/cmake_clean_target.cmake create mode 100644 release/src/awp/CMakeFiles/awp.dir/compiler_depend.make create mode 100644 release/src/awp/CMakeFiles/awp.dir/compiler_depend.ts create mode 100644 release/src/awp/CMakeFiles/awp.dir/depend.make create mode 100644 release/src/awp/CMakeFiles/awp.dir/flags.make create mode 100644 release/src/awp/CMakeFiles/awp.dir/includes_CUDA.rsp create mode 100644 release/src/awp/CMakeFiles/awp.dir/kernel.cu.o create mode 100644 release/src/awp/CMakeFiles/awp.dir/kernel.cu.o.d create mode 100644 release/src/awp/CMakeFiles/awp.dir/link.txt create mode 100644 release/src/awp/CMakeFiles/awp.dir/progress.make create mode 100644 release/src/awp/CMakeFiles/error.dir/DependInfo.cmake create mode 100644 release/src/awp/CMakeFiles/error.dir/build.make create mode 100644 release/src/awp/CMakeFiles/error.dir/cmake_clean.cmake create mode 100644 release/src/awp/CMakeFiles/error.dir/cmake_clean_target.cmake create mode 100644 release/src/awp/CMakeFiles/error.dir/compiler_depend.make create mode 100644 release/src/awp/CMakeFiles/error.dir/compiler_depend.ts create mode 100644 release/src/awp/CMakeFiles/error.dir/depend.make create mode 100644 release/src/awp/CMakeFiles/error.dir/error.c.o create mode 100644 release/src/awp/CMakeFiles/error.dir/error.c.o.d create mode 100644 release/src/awp/CMakeFiles/error.dir/flags.make create mode 100644 release/src/awp/CMakeFiles/error.dir/link.txt create mode 100644 release/src/awp/CMakeFiles/error.dir/progress.make create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/DependInfo.cmake create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/build.make create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean.cmake create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean_target.cmake create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/command.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/command.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.make create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/depend.make create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/flags.make create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/includes_CUDA.rsp create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/init.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/init.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/io.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/io.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/link.txt create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/progress.make create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/source.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/source.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o.d create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o create mode 100644 release/src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o.d create mode 100644 release/src/awp/CMakeFiles/progress.marks create mode 100644 release/src/awp/CTestTestfile.cmake create mode 100644 release/src/awp/Makefile create mode 100644 release/src/awp/cmake_install.cmake create mode 100644 release/src/awp/libawp.a create mode 100644 release/src/awp/liberror.a create mode 100644 release/src/awp/liblpmcl3d.a create mode 100644 release/src/buffers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/DependInfo.cmake create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/buffer.c.o create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/buffer.c.o.d create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/build.make create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/cmake_clean.cmake create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/cmake_clean_target.cmake create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.make create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.ts create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/depend.make create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/flags.make create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/link.txt create mode 100644 release/src/buffers/CMakeFiles/buffers.dir/progress.make create mode 100644 release/src/buffers/CMakeFiles/progress.marks create mode 100644 release/src/buffers/CTestTestfile.cmake create mode 100644 release/src/buffers/Makefile create mode 100644 release/src/buffers/cmake_install.cmake create mode 100644 release/src/buffers/libbuffers.a create mode 100644 release/src/checksum/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/DependInfo.cmake create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/build.make create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/checksum.c.o create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/checksum.c.o.d create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/cmake_clean.cmake create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/cmake_clean_target.cmake create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/compiler_depend.make create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/compiler_depend.ts create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/depend.make create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/flags.make create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/link.txt create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o.d create mode 100644 release/src/checksum/CMakeFiles/checksum.dir/progress.make create mode 100644 release/src/checksum/CMakeFiles/progress.marks create mode 100644 release/src/checksum/CTestTestfile.cmake create mode 100644 release/src/checksum/Makefile create mode 100644 release/src/checksum/cmake_install.cmake create mode 100644 release/src/checksum/libchecksum.a create mode 100644 release/src/cmake_install.cmake create mode 100644 release/src/grid/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/grid/CMakeFiles/grid.dir/DependInfo.cmake create mode 100644 release/src/grid/CMakeFiles/grid.dir/build.make create mode 100644 release/src/grid/CMakeFiles/grid.dir/cmake_clean.cmake create mode 100644 release/src/grid/CMakeFiles/grid.dir/cmake_clean_target.cmake create mode 100644 release/src/grid/CMakeFiles/grid.dir/compiler_depend.make create mode 100644 release/src/grid/CMakeFiles/grid.dir/compiler_depend.ts create mode 100644 release/src/grid/CMakeFiles/grid.dir/depend.make create mode 100644 release/src/grid/CMakeFiles/grid.dir/flags.make create mode 100644 release/src/grid/CMakeFiles/grid.dir/grid_3d.c.o create mode 100644 release/src/grid/CMakeFiles/grid.dir/grid_3d.c.o.d create mode 100644 release/src/grid/CMakeFiles/grid.dir/link.txt create mode 100644 release/src/grid/CMakeFiles/grid.dir/progress.make create mode 100644 release/src/grid/CMakeFiles/grid.dir/shift.c.o create mode 100644 release/src/grid/CMakeFiles/grid.dir/shift.c.o.d create mode 100644 release/src/grid/CMakeFiles/progress.marks create mode 100644 release/src/grid/CTestTestfile.cmake create mode 100644 release/src/grid/Makefile create mode 100644 release/src/grid/cmake_install.cmake create mode 100644 release/src/grid/libgrid.a create mode 100644 release/src/interpolation/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/DependInfo.cmake create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/build.make create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean.cmake create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean_target.cmake create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.make create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.ts create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/depend.make create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/flags.make create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/includes_CUDA.rsp create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o.d create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o.d create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o.d create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/link.txt create mode 100644 release/src/interpolation/CMakeFiles/interpolation.dir/progress.make create mode 100644 release/src/interpolation/CMakeFiles/progress.marks create mode 100644 release/src/interpolation/CTestTestfile.cmake create mode 100644 release/src/interpolation/Makefile create mode 100644 release/src/interpolation/cmake_install.cmake create mode 100644 release/src/interpolation/libinterpolation.a create mode 100644 release/src/mpi/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/DependInfo.cmake create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/build.make create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/cmake_clean.cmake create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/cmake_clean_target.cmake create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.make create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.ts create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/depend.make create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/distribute.c.o create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/distribute.c.o.d create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/flags.make create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/io.c.o create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/io.c.o.d create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/link.txt create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/partition.c.o create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/partition.c.o.d create mode 100644 release/src/mpi/CMakeFiles/mpi.dir/progress.make create mode 100644 release/src/mpi/CMakeFiles/progress.marks create mode 100644 release/src/mpi/CTestTestfile.cmake create mode 100644 release/src/mpi/Makefile create mode 100644 release/src/mpi/cmake_install.cmake create mode 100644 release/src/mpi/libmpi.a create mode 100644 release/src/readers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/readers/CMakeFiles/progress.marks create mode 100644 release/src/readers/CMakeFiles/readers.dir/DependInfo.cmake create mode 100644 release/src/readers/CMakeFiles/readers.dir/build.make create mode 100644 release/src/readers/CMakeFiles/readers.dir/cmake_clean.cmake create mode 100644 release/src/readers/CMakeFiles/readers.dir/cmake_clean_target.cmake create mode 100644 release/src/readers/CMakeFiles/readers.dir/compiler_depend.make create mode 100644 release/src/readers/CMakeFiles/readers.dir/compiler_depend.ts create mode 100644 release/src/readers/CMakeFiles/readers.dir/depend.make create mode 100644 release/src/readers/CMakeFiles/readers.dir/flags.make create mode 100644 release/src/readers/CMakeFiles/readers.dir/input.c.o create mode 100644 release/src/readers/CMakeFiles/readers.dir/input.c.o.d create mode 100644 release/src/readers/CMakeFiles/readers.dir/link.txt create mode 100644 release/src/readers/CMakeFiles/readers.dir/progress.make create mode 100644 release/src/readers/CMakeFiles/readers.dir/version.c.o create mode 100644 release/src/readers/CMakeFiles/readers.dir/version.c.o.d create mode 100644 release/src/readers/CTestTestfile.cmake create mode 100644 release/src/readers/Makefile create mode 100644 release/src/readers/cmake_install.cmake create mode 100644 release/src/readers/libreaders.a create mode 100644 release/src/test/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/test/CMakeFiles/progress.marks create mode 100644 release/src/test/CMakeFiles/testing.dir/DependInfo.cmake create mode 100644 release/src/test/CMakeFiles/testing.dir/build.make create mode 100644 release/src/test/CMakeFiles/testing.dir/check.c.o create mode 100644 release/src/test/CMakeFiles/testing.dir/check.c.o.d create mode 100644 release/src/test/CMakeFiles/testing.dir/cmake_clean.cmake create mode 100644 release/src/test/CMakeFiles/testing.dir/cmake_clean_target.cmake create mode 100644 release/src/test/CMakeFiles/testing.dir/compiler_depend.make create mode 100644 release/src/test/CMakeFiles/testing.dir/compiler_depend.ts create mode 100644 release/src/test/CMakeFiles/testing.dir/depend.make create mode 100644 release/src/test/CMakeFiles/testing.dir/flags.make create mode 100644 release/src/test/CMakeFiles/testing.dir/grid_check.c.o create mode 100644 release/src/test/CMakeFiles/testing.dir/grid_check.c.o.d create mode 100644 release/src/test/CMakeFiles/testing.dir/link.txt create mode 100644 release/src/test/CMakeFiles/testing.dir/progress.make create mode 100644 release/src/test/CMakeFiles/testing.dir/test.c.o create mode 100644 release/src/test/CMakeFiles/testing.dir/test.c.o.d create mode 100644 release/src/test/CTestTestfile.cmake create mode 100644 release/src/test/Makefile create mode 100644 release/src/test/cmake_install.cmake create mode 100644 release/src/test/libtesting.a create mode 100644 release/src/topography/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/CMakeFiles/mapping.dir/DependInfo.cmake create mode 100644 release/src/topography/CMakeFiles/mapping.dir/build.make create mode 100644 release/src/topography/CMakeFiles/mapping.dir/cmake_clean.cmake create mode 100644 release/src/topography/CMakeFiles/mapping.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/CMakeFiles/mapping.dir/compiler_depend.make create mode 100644 release/src/topography/CMakeFiles/mapping.dir/compiler_depend.ts create mode 100644 release/src/topography/CMakeFiles/mapping.dir/depend.make create mode 100644 release/src/topography/CMakeFiles/mapping.dir/flags.make create mode 100644 release/src/topography/CMakeFiles/mapping.dir/link.txt create mode 100644 release/src/topography/CMakeFiles/mapping.dir/mapping.c.o create mode 100644 release/src/topography/CMakeFiles/mapping.dir/mapping.c.o.d create mode 100644 release/src/topography/CMakeFiles/mapping.dir/progress.make create mode 100644 release/src/topography/CMakeFiles/progress.marks create mode 100644 release/src/topography/CMakeFiles/topography.dir/DependInfo.cmake create mode 100644 release/src/topography/CMakeFiles/topography.dir/build.make create mode 100644 release/src/topography/CMakeFiles/topography.dir/cmake_clean.cmake create mode 100644 release/src/topography/CMakeFiles/topography.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/CMakeFiles/topography.dir/compiler_depend.make create mode 100644 release/src/topography/CMakeFiles/topography.dir/compiler_depend.ts create mode 100644 release/src/topography/CMakeFiles/topography.dir/depend.make create mode 100644 release/src/topography/CMakeFiles/topography.dir/energy.cu.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/energy.cu.o.d create mode 100644 release/src/topography/CMakeFiles/topography.dir/flags.make create mode 100644 release/src/topography/CMakeFiles/topography.dir/geometry.c.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/geometry.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography.dir/grids.c.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/grids.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography.dir/host.c.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/host.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp create mode 100644 release/src/topography/CMakeFiles/topography.dir/link.txt create mode 100644 release/src/topography/CMakeFiles/topography.dir/mms.cu.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/mms.cu.o.d create mode 100644 release/src/topography/CMakeFiles/topography.dir/progress.make create mode 100644 release/src/topography/CMakeFiles/topography.dir/stress.cu.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/stress.cu.o.d create mode 100644 release/src/topography/CMakeFiles/topography.dir/topography.c.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/topography.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography.dir/velocity.cu.o create mode 100644 release/src/topography/CMakeFiles/topography.dir/velocity.cu.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/DependInfo.cmake create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/build.make create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/cmake_clean.cmake create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/compiler_depend.make create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/compiler_depend.ts create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/depend.make create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/energy.cu.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/energy.cu.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/flags.make create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/geometry.c.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/geometry.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/grids.c.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/grids.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/host.c.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/host.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/includes_CUDA.rsp create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/link.txt create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/mms.cu.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/mms.cu.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/progress.make create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/stress.cu.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/stress.cu.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/topography.c.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/topography.c.o.d create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/velocity.cu.o create mode 100644 release/src/topography/CMakeFiles/topography_no_bc.dir/velocity.cu.o.d create mode 100644 release/src/topography/CTestTestfile.cmake create mode 100644 release/src/topography/Makefile create mode 100644 release/src/topography/cmake_install.cmake create mode 100644 release/src/topography/functions/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/DependInfo.cmake create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/build.make create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/cmake_clean.cmake create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/compiler_depend.make create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/compiler_depend.ts create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/depend.make create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/flags.make create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/functions.c.o create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/functions.c.o.d create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/link.txt create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/norm.c.o create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/norm.c.o.d create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/progress.make create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/random.c.o create mode 100644 release/src/topography/functions/CMakeFiles/functions.dir/random.c.o.d create mode 100644 release/src/topography/functions/CMakeFiles/progress.marks create mode 100644 release/src/topography/functions/CTestTestfile.cmake create mode 100644 release/src/topography/functions/Makefile create mode 100644 release/src/topography/functions/cmake_install.cmake create mode 100644 release/src/topography/functions/libfunctions.a create mode 100644 release/src/topography/geometry/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/DependInfo.cmake create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/build.make create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/cmake_clean.cmake create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/compiler_depend.make create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/compiler_depend.ts create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/depend.make create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/flags.make create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/geometry.c.o create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/geometry.c.o.d create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/link.txt create mode 100644 release/src/topography/geometry/CMakeFiles/geometry.dir/progress.make create mode 100644 release/src/topography/geometry/CMakeFiles/progress.marks create mode 100644 release/src/topography/geometry/CTestTestfile.cmake create mode 100644 release/src/topography/geometry/Makefile create mode 100644 release/src/topography/geometry/cmake_install.cmake create mode 100644 release/src/topography/geometry/libgeometry.a create mode 100644 release/src/topography/initializations/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/initializations/CMakeFiles/progress.marks create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/DependInfo.cmake create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/build.make create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/cerjan.c.o create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/cerjan.c.o.d create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/cmake_clean.cmake create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/compiler_depend.make create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/compiler_depend.ts create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/constant.c.o create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/constant.c.o.d create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/depend.make create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/flags.make create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/linear.c.o create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/linear.c.o.d create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/link.txt create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/progress.make create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/quadratic.c.o create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/quadratic.c.o.d create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/random.c.o create mode 100644 release/src/topography/initializations/CMakeFiles/topography_initializations.dir/random.c.o.d create mode 100644 release/src/topography/initializations/CTestTestfile.cmake create mode 100644 release/src/topography/initializations/Makefile create mode 100644 release/src/topography/initializations/cmake_install.cmake create mode 100644 release/src/topography/initializations/libtopography_initializations.a create mode 100644 release/src/topography/kernels/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/kernels/CMakeFiles/progress.marks create mode 100644 release/src/topography/kernels/CTestTestfile.cmake create mode 100644 release/src/topography/kernels/Makefile create mode 100644 release/src/topography/kernels/cmake_install.cmake create mode 100644 release/src/topography/libmapping.a create mode 100644 release/src/topography/libtopography.a create mode 100644 release/src/topography/libtopography_no_bc.a create mode 100644 release/src/topography/metrics/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/DependInfo.cmake create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/build.make create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/cmake_clean.cmake create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/compiler_depend.make create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/compiler_depend.ts create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/depend.make create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/flags.make create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/kernel.c.o create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/kernel.c.o.d create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/link.txt create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/metrics.c.o create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/metrics.c.o.d create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/progress.make create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/shift.c.o create mode 100644 release/src/topography/metrics/CMakeFiles/metrics.dir/shift.c.o.d create mode 100644 release/src/topography/metrics/CMakeFiles/progress.marks create mode 100644 release/src/topography/metrics/CTestTestfile.cmake create mode 100644 release/src/topography/metrics/Makefile create mode 100644 release/src/topography/metrics/cmake_install.cmake create mode 100644 release/src/topography/metrics/libmetrics.a create mode 100644 release/src/topography/readers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/readers/CMakeFiles/progress.marks create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/DependInfo.cmake create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/build.make create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/cmake_clean.cmake create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/compiler_depend.make create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/compiler_depend.ts create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/depend.make create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/flags.make create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/link.txt create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/progress.make create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/serial_reader.c.o create mode 100644 release/src/topography/readers/CMakeFiles/topography_readers.dir/serial_reader.c.o.d create mode 100644 release/src/topography/readers/CTestTestfile.cmake create mode 100644 release/src/topography/readers/Makefile create mode 100644 release/src/topography/readers/cmake_install.cmake create mode 100644 release/src/topography/readers/libtopography_readers.a create mode 100644 release/src/topography/receivers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/receivers/CMakeFiles/progress.marks create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/DependInfo.cmake create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/build.make create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/cmake_clean.cmake create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/compiler_depend.make create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/compiler_depend.ts create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/depend.make create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/flags.make create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/link.txt create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/progress.make create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/receiver.c.o create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/receiver.c.o.d create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/receivers.c.o create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/receivers.c.o.d create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/sgt.c.o create mode 100644 release/src/topography/receivers/CMakeFiles/topography_receivers.dir/sgt.c.o.d create mode 100644 release/src/topography/receivers/CTestTestfile.cmake create mode 100644 release/src/topography/receivers/Makefile create mode 100644 release/src/topography/receivers/cmake_install.cmake create mode 100644 release/src/topography/receivers/libtopography_receivers.a create mode 100644 release/src/topography/sources/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/topography/sources/CMakeFiles/progress.marks create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/DependInfo.cmake create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/build.make create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/cmake_clean.cmake create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/cmake_clean_target.cmake create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/compiler_depend.make create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/compiler_depend.ts create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/depend.make create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/flags.make create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/forces.c.o create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/forces.c.o.d create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/includes_CUDA.rsp create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/link.txt create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/progress.make create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/source.c.o create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/source.c.o.d create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/source.cu.o create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/source.cu.o.d create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/sources.c.o create mode 100644 release/src/topography/sources/CMakeFiles/topography_sources.dir/sources.c.o.d create mode 100644 release/src/topography/sources/CTestTestfile.cmake create mode 100644 release/src/topography/sources/Makefile create mode 100644 release/src/topography/sources/cmake_install.cmake create mode 100644 release/src/topography/sources/libtopography_sources.a create mode 100644 release/src/vtk/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/src/vtk/CMakeFiles/progress.marks create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/DependInfo.cmake create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/build.make create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/cmake_clean.cmake create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/cmake_clean_target.cmake create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/compiler_depend.make create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/compiler_depend.ts create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/depend.make create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/flags.make create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/link.txt create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/progress.make create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/vtk.c.o create mode 100644 release/src/vtk/CMakeFiles/vtk.dir/vtk.c.o.d create mode 100644 release/src/vtk/CTestTestfile.cmake create mode 100644 release/src/vtk/Makefile create mode 100644 release/src/vtk/cmake_install.cmake create mode 100644 release/src/vtk/libvtk.a create mode 100644 release/tests/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/CMakeFiles/progress.marks create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/DependInfo.cmake create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/build.make create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/cmake_clean.cmake create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/compiler_depend.make create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/compiler_depend.ts create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/depend.make create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/flags.make create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/includes_CUDA.rsp create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/link.txt create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/linkLibs.rsp create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/objects1.rsp create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/progress.make create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/test_attenuation.cu.o create mode 100644 release/tests/CMakeFiles/test_attenuation.dir/test_attenuation.cu.o.d create mode 100644 release/tests/CTestTestfile.cmake create mode 100644 release/tests/Makefile create mode 100644 release/tests/buffers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/buffers/CMakeFiles/progress.marks create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/DependInfo.cmake create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/build.make create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/cmake_clean.cmake create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/compiler_depend.make create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/compiler_depend.ts create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/depend.make create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/flags.make create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/includes_CUDA.rsp create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/link.txt create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/linkLibs.rsp create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/objects1.rsp create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/progress.make create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/test_buffer.cu.o create mode 100644 release/tests/buffers/CMakeFiles/test_buffer.dir/test_buffer.cu.o.d create mode 100644 release/tests/buffers/CTestTestfile.cmake create mode 100644 release/tests/buffers/Makefile create mode 100644 release/tests/buffers/cmake_install.cmake create mode 100755 release/tests/buffers/test_buffer create mode 100644 release/tests/cmake_install.cmake create mode 100644 release/tests/grid/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/grid/CMakeFiles/progress.marks create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/DependInfo.cmake create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/build.make create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/cmake_clean.cmake create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/compiler_depend.make create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/compiler_depend.ts create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/depend.make create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/flags.make create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/link.txt create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/progress.make create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/test_grid_3d.c.o create mode 100644 release/tests/grid/CMakeFiles/test_grid_3d.dir/test_grid_3d.c.o.d create mode 100644 release/tests/grid/CTestTestfile.cmake create mode 100644 release/tests/grid/Makefile create mode 100644 release/tests/grid/cmake_install.cmake create mode 100755 release/tests/grid/test_grid_3d create mode 100644 release/tests/interpolation/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/interpolation/CMakeFiles/progress.marks create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/DependInfo.cmake create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/build.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/cmake_clean.cmake create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/compiler_depend.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/compiler_depend.ts create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/depend.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/flags.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/link.txt create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/linkLibs.rsp create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/objects1.rsp create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/progress.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/test_interpolation.c.o create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolation.dir/test_interpolation.c.o.d create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/DependInfo.cmake create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/build.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/cmake_clean.cmake create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/compiler_depend.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/compiler_depend.ts create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/depend.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/flags.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/includes_CUDA.rsp create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/link.txt create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/linkLibs.rsp create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/objects1.rsp create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/progress.make create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/test_interpolation.cu.o create mode 100644 release/tests/interpolation/CMakeFiles/test_interpolationcu.dir/test_interpolation.cu.o.d create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/DependInfo.cmake create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/build.make create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/cmake_clean.cmake create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/compiler_depend.make create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/compiler_depend.ts create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/depend.make create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/flags.make create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/link.txt create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/linkLibs.rsp create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/objects1.rsp create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/progress.make create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/test_lagrange.c.o create mode 100644 release/tests/interpolation/CMakeFiles/test_lagrange.dir/test_lagrange.c.o.d create mode 100644 release/tests/interpolation/CTestTestfile.cmake create mode 100644 release/tests/interpolation/Makefile create mode 100644 release/tests/interpolation/cmake_install.cmake create mode 100755 release/tests/interpolation/test_interpolation create mode 100755 release/tests/interpolation/test_interpolationcu create mode 100755 release/tests/interpolation/test_lagrange create mode 100644 release/tests/mpi/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/mpi/CMakeFiles/progress.marks create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/DependInfo.cmake create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/build.make create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/cmake_clean.cmake create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/compiler_depend.make create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/compiler_depend.ts create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/depend.make create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/flags.make create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/link.txt create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/progress.make create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/test_indexed.c.o create mode 100644 release/tests/mpi/CMakeFiles/test_indexed.dir/test_indexed.c.o.d create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/DependInfo.cmake create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/build.make create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/cmake_clean.cmake create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/compiler_depend.make create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/compiler_depend.ts create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/depend.make create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/flags.make create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/link.txt create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/progress.make create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/test_io.c.o create mode 100644 release/tests/mpi/CMakeFiles/test_mpi_io.dir/test_io.c.o.d create mode 100644 release/tests/mpi/CTestTestfile.cmake create mode 100644 release/tests/mpi/Makefile create mode 100644 release/tests/mpi/cmake_install.cmake create mode 100755 release/tests/mpi/test_indexed create mode 100755 release/tests/mpi/test_mpi_io create mode 100644 release/tests/readers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/readers/CMakeFiles/progress.marks create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/DependInfo.cmake create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/build.make create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/cmake_clean.cmake create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/compiler_depend.make create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/compiler_depend.ts create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/depend.make create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/flags.make create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/link.txt create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/progress.make create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/test_input.c.o create mode 100644 release/tests/readers/CMakeFiles/test_input.dir/test_input.c.o.d create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/DependInfo.cmake create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/build.make create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/cmake_clean.cmake create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/compiler_depend.make create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/compiler_depend.ts create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/depend.make create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/flags.make create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/link.txt create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/progress.make create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/test_version.c.o create mode 100644 release/tests/readers/CMakeFiles/test_version.dir/test_version.c.o.d create mode 100644 release/tests/readers/CTestTestfile.cmake create mode 100644 release/tests/readers/Makefile create mode 100644 release/tests/readers/cmake_install.cmake create mode 100755 release/tests/readers/test_input create mode 100755 release/tests/readers/test_version create mode 100755 release/tests/test_attenuation create mode 100644 release/tests/topography/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/CMakeFiles/progress.marks create mode 100644 release/tests/topography/CTestTestfile.cmake create mode 100644 release/tests/topography/Makefile create mode 100644 release/tests/topography/accuracy/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/accuracy/CMakeFiles/progress.marks create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/DependInfo.cmake create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/build.make create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/cmake_clean.cmake create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/compiler_depend.make create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/compiler_depend.ts create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/depend.make create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/flags.make create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/includes_CUDA.rsp create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/link.txt create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/linkLibs.rsp create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/objects1.rsp create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/progress.make create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/test_convergence.cu.o create mode 100644 release/tests/topography/accuracy/CMakeFiles/test_convergence.dir/test_convergence.cu.o.d create mode 100644 release/tests/topography/accuracy/CTestTestfile.cmake create mode 100644 release/tests/topography/accuracy/Makefile create mode 100644 release/tests/topography/accuracy/cmake_install.cmake create mode 100755 release/tests/topography/accuracy/test_convergence create mode 100644 release/tests/topography/cmake_install.cmake create mode 100644 release/tests/topography/geometry/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/geometry/CMakeFiles/progress.marks create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/DependInfo.cmake create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/build.make create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/cmake_clean.cmake create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/compiler_depend.make create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/compiler_depend.ts create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/depend.make create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/flags.make create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/link.txt create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/linkLibs.rsp create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/objects1.rsp create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/progress.make create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/test_geometry.c.o create mode 100644 release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/test_geometry.c.o.d create mode 100644 release/tests/topography/geometry/CTestTestfile.cmake create mode 100644 release/tests/topography/geometry/Makefile create mode 100644 release/tests/topography/geometry/cmake_install.cmake create mode 100755 release/tests/topography/geometry/test_topography_geometry create mode 100644 release/tests/topography/mapping/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/mapping/CMakeFiles/progress.marks create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/DependInfo.cmake create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/build.make create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/cmake_clean.cmake create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/compiler_depend.make create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/compiler_depend.ts create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/depend.make create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/flags.make create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/link.txt create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/linkLibs.rsp create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/objects1.rsp create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/progress.make create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/test_mapping.c.o create mode 100644 release/tests/topography/mapping/CMakeFiles/test_mapping.dir/test_mapping.c.o.d create mode 100644 release/tests/topography/mapping/CTestTestfile.cmake create mode 100644 release/tests/topography/mapping/Makefile create mode 100644 release/tests/topography/mapping/cmake_install.cmake create mode 100755 release/tests/topography/mapping/test_mapping create mode 100644 release/tests/topography/metrics/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/metrics/CMakeFiles/progress.marks create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/DependInfo.cmake create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/build.make create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/cmake_clean.cmake create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/compiler_depend.make create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/compiler_depend.ts create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/depend.make create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/flags.make create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/link.txt create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/linkLibs.rsp create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/objects1.rsp create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/progress.make create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/test_metrics.c.o create mode 100644 release/tests/topography/metrics/CMakeFiles/test_metrics.dir/test_metrics.c.o.d create mode 100644 release/tests/topography/metrics/CTestTestfile.cmake create mode 100644 release/tests/topography/metrics/Makefile create mode 100644 release/tests/topography/metrics/cmake_install.cmake create mode 100755 release/tests/topography/metrics/test_metrics create mode 100644 release/tests/topography/readers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/readers/CMakeFiles/progress.marks create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/DependInfo.cmake create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/build.make create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/cmake_clean.cmake create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/compiler_depend.make create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/compiler_depend.ts create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/depend.make create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/flags.make create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/link.txt create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/linkLibs.rsp create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/objects1.rsp create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/progress.make create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/test_serial_reader.c.o create mode 100644 release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/test_serial_reader.c.o.d create mode 100644 release/tests/topography/readers/CTestTestfile.cmake create mode 100644 release/tests/topography/readers/Makefile create mode 100644 release/tests/topography/readers/cmake_install.cmake create mode 100755 release/tests/topography/readers/test_topography_serial_reader create mode 100644 release/tests/topography/receivers/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/receivers/CMakeFiles/progress.marks create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/DependInfo.cmake create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/build.make create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/cmake_clean.cmake create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/compiler_depend.make create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/compiler_depend.ts create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/depend.make create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/flags.make create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/link.txt create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/linkLibs.rsp create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/objects1.rsp create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/progress.make create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/test_receivers.c.o create mode 100644 release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/test_receivers.c.o.d create mode 100644 release/tests/topography/receivers/CTestTestfile.cmake create mode 100644 release/tests/topography/receivers/Makefile create mode 100644 release/tests/topography/receivers/cmake_install.cmake create mode 100755 release/tests/topography/receivers/test_topography_receivers create mode 100644 release/tests/topography/sources/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tests/topography/sources/CMakeFiles/progress.marks create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/DependInfo.cmake create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/build.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/cmake_clean.cmake create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/compiler_depend.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/compiler_depend.ts create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/depend.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/flags.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/link.txt create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/linkLibs.rsp create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/objects1.rsp create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/progress.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/test_source_distribution.c.o create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/test_source_distribution.c.o.d create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/DependInfo.cmake create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/build.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/cmake_clean.cmake create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/compiler_depend.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/compiler_depend.ts create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/depend.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/flags.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/link.txt create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/linkLibs.rsp create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/objects1.rsp create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/progress.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/test_sources.c.o create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources.dir/test_sources.c.o.d create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/DependInfo.cmake create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/build.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/cmake_clean.cmake create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/compiler_depend.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/compiler_depend.ts create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/depend.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/flags.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/link.txt create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/linkLibs.rsp create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/objects1.rsp create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/progress.make create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/test_sources_dm.c.o create mode 100644 release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/test_sources_dm.c.o.d create mode 100644 release/tests/topography/sources/CTestTestfile.cmake create mode 100644 release/tests/topography/sources/Makefile create mode 100644 release/tests/topography/sources/cmake_install.cmake create mode 100755 release/tests/topography/sources/test_topography_source_distribution create mode 100755 release/tests/topography/sources/test_topography_sources create mode 100755 release/tests/topography/sources/test_topography_sources_dm create mode 100644 release/tools/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tools/CMakeFiles/progress.marks create mode 100644 release/tools/CTestTestfile.cmake create mode 100644 release/tools/Makefile create mode 100644 release/tools/cmake_install.cmake create mode 100644 release/tools/write_grid/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 release/tools/write_grid/CMakeFiles/progress.marks create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/DependInfo.cmake create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/build.make create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/cmake_clean.cmake create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/compiler_depend.make create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/compiler_depend.ts create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/depend.make create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/flags.make create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/link.txt create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/progress.make create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/write_grid.c.o create mode 100644 release/tools/write_grid/CMakeFiles/write_grid.dir/write_grid.c.o.d create mode 100644 release/tools/write_grid/CTestTestfile.cmake create mode 100644 release/tools/write_grid/Makefile create mode 100644 release/tools/write_grid/cmake_install.cmake create mode 100755 release/tools/write_grid/write_grid diff --git a/.gitignore b/.gitignore index 73531ab..267d5c6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,6 @@ build/* profile/*.[0-9]* profile/*/ .*/* - +release_* pmcl3d* !pmcl3d*h diff --git a/include/awp/pmcl3d.h b/include/awp/pmcl3d.h index 7af0d65..f6a6cb3 100644 --- a/include/awp/pmcl3d.h +++ b/include/awp/pmcl3d.h @@ -37,7 +37,8 @@ void command(int argc, char **argv, _prec *TMAX, _prec *DH, _prec *DT, int *USESOURCEFILE, char *RECVFILE, int *USERECVFILE, char *FORCEFILE, int *USEFORCEFILE, char *SGTFILE, int *USESGTFILE, char *MMSFILE, int *USEMMSFILE, float *DHB, float *DHT, - char *ENERGYFILE, int *USEENERGYFILE); + char *ENERGYFILE, int *USEENERGYFILE, + _prec *QSI, _prec *QPQSR, _prec *MAXVPVSR, _prec *VMIN, _prec *VMAX, _prec *DMIN); int read_src_ifault_2(int rank, int READ_STEP, char *INSRC, char *INSRC_I2, @@ -73,6 +74,7 @@ void inimesh(int rank, int MEDIASTART, Grid3D d1, Grid3D mu, Grid3D lam, Grid3D Grid3D tau, Grid3D weights,Grid1D coeff, int nvar, _prec FP, _prec FAC, _prec Q0, _prec EX, int nxt, int nyt, int nzt, int PX, int PY, int NX, int NY, int NZ, int *coords, MPI_Comm MCW, int IDYNA, int NVE, int SoCalQ, char *INVEL, + _prec qsi, _prec qpqsr, _prec maxvpvsr, _prec vmin, _prec vmax, _prec dmin, _prec *vse, _prec *vpe, _prec *dde); int checkmesh(int nxtl, int nytl, int nztl, int nxth, int nyth, int nzth, Grid3D varl, Grid3D varh, diff --git a/release/CMakeCache.txt b/release/CMakeCache.txt new file mode 100644 index 0000000..c8f89ff --- /dev/null +++ b/release/CMakeCache.txt @@ -0,0 +1,572 @@ +# This is the CMakeCache file. +# For build in directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release +# It was generated by CMake: /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Value Computed by CMake +AWP_BINARY_DIR:STATIC=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +//Value Computed by CMake +AWP_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +AWP_SOURCE_DIR:STATIC=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +//Build the testing tree. +BUILD_TESTING:BOOL=ON + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CUDA compiler +CMAKE_CUDA_COMPILER:FILEPATH=/sw/summit/cuda/11.7.1/bin/nvcc + +//Flags used by the CUDA compiler during all build types. +CMAKE_CUDA_FLAGS:STRING= + +//Flags used by the CUDA compiler during DEBUG builds. +CMAKE_CUDA_FLAGS_DEBUG:STRING=-g + +//Flags used by the CUDA compiler during MINSIZEREL builds. +CMAKE_CUDA_FLAGS_MINSIZEREL:STRING=-O1 -DNDEBUG + +//Flags used by the CUDA compiler during RELEASE builds. +CMAKE_CUDA_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CUDA compiler during RELWITHDEBINFO builds. +CMAKE_CUDA_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=AWP + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=1.0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to the coverage program that CTest uses for performing coverage +// inspection +COVERAGE_COMMAND:FILEPATH=/sw/summit/gcc/9.3.0-2/bin/gcov + +//Extra command line flags to pass to the coverage tool +COVERAGE_EXTRA_FLAGS:STRING=-l + +//How many times to retry timed-out CTest submissions. +CTEST_SUBMIT_RETRY_COUNT:STRING=3 + +//How long to wait between timed-out CTest submissions. +CTEST_SUBMIT_RETRY_DELAY:STRING=5 + +//Maximum time allowed before CTest will kill the test. +DART_TESTING_TIMEOUT:STRING=1500 + +//Path to a program. +GITCOMMAND:FILEPATH=/usr/bin/git + +//Command to build the project +MAKECOMMAND:STRING=/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" + +//Path to the memory checking command, used for memory error detection. +MEMORYCHECK_COMMAND:FILEPATH=/sw/summit/cuda/11.7.1/bin/cuda-memcheck + +//File that contains suppressions for the memory checker +MEMORYCHECK_SUPPRESSIONS_FILE:FILEPATH= + +//Executable for running MPI programs. +MPIEXEC_EXECUTABLE:FILEPATH=/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/bin/mpiexec + +//Maximum number of processors available to run MPI applications. +MPIEXEC_MAX_NUMPROCS:STRING=1 + +//Flag used by MPI to specify the number of processes for mpiexec; +// the next option will be the number of processes. +MPIEXEC_NUMPROC_FLAG:STRING=-n + +//These flags will be placed after all flags passed to mpiexec. +MPIEXEC_POSTFLAGS:STRING= + +//These flags will be directly before the executable that is being +// run by mpiexec. +MPIEXEC_PREFLAGS:STRING= + +//MPI C additional include directories +MPI_C_ADDITIONAL_INCLUDE_DIRS:STRING= + +//MPI compiler for C +MPI_C_COMPILER:FILEPATH=/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/bin/mpicc + +//MPI C compiler wrapper include directories +MPI_C_COMPILER_INCLUDE_DIRS:STRING=/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include + +//MPI C compilation definitions +MPI_C_COMPILE_DEFINITIONS:STRING= + +//MPI C compilation options +MPI_C_COMPILE_OPTIONS:STRING=-pthread + +//Path to a file. +MPI_C_HEADER_DIR:PATH=/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include + +//MPI C libraries to link against +MPI_C_LIB_NAMES:STRING=mpiprofilesupport;mpi_ibm + +//MPI C linker flags +MPI_C_LINK_FLAGS:STRING=-L/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib -pthread + +//Location of the mpi_ibm library for MPI +MPI_mpi_ibm_LIBRARY:FILEPATH=/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so + +//Location of the mpiprofilesupport library for MPI +MPI_mpiprofilesupport_LIBRARY:FILEPATH=/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so + +//Arguments to supply to pkg-config +PKG_CONFIG_ARGN:STRING= + +//pkg-config executable +PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config + +//Name of the computer/site where compile is being run +SITE:STRING=login4 + +//Dependencies for the target +buffers_LIB_DEPENDS:STATIC=general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so;general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so; + +//Dependencies for the target +functions_LIB_DEPENDS:STATIC=general;grid;general;m; + +//Dependencies for the target +geometry_LIB_DEPENDS:STATIC=general;grid;general;functions;general;mapping; + +//Dependencies for the target +grid_LIB_DEPENDS:STATIC=general;m; + +//Dependencies for the target +interpolation_LIB_DEPENDS:STATIC=general;grid; + +//Dependencies for the target +lpmcl3d_LIB_DEPENDS:STATIC=general;topography;general;buffers;general;mpi;general;checksum; + +//Dependencies for the target +metrics_LIB_DEPENDS:STATIC=general;interpolation;general;functions; + +//Dependencies for the target +readers_LIB_DEPENDS:STATIC=general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so;general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so; + +//Dependencies for the target +testing_LIB_DEPENDS:STATIC=general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so;general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so;general;m; + +//Dependencies for the target +topography_LIB_DEPENDS:STATIC=general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so;general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so;general;grid;general;metrics;general;geometry;general;topography_readers;general;vtk;general;topography_sources;general;topography_receivers;general;readers;general;error;general;nvToolsExt;general;nvToolsExt;general;functions; + +//Dependencies for the target +topography_no_bc_LIB_DEPENDS:STATIC=general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so;general;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so;general;grid;general;metrics;general;geometry;general;topography_readers;general;vtk;general;topography_sources;general;topography_receivers;general;readers;general;error;general;nvToolsExt;general;nvToolsExt;general;functions; + +//Dependencies for the target +topography_receivers_LIB_DEPENDS:STATIC=general;topography_sources; + +//Dependencies for the target +topography_sources_LIB_DEPENDS:STATIC=general;readers;general;buffers;general;mpi;general;metrics;general;mapping; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=27 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=7 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cpack +//ADVANCED property for variable: CMAKE_CTEST_COMMAND +CMAKE_CTEST_COMMAND-ADVANCED:INTERNAL=1 +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest +//ADVANCED property for variable: CMAKE_CUDA_COMPILER +CMAKE_CUDA_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CUDA_FLAGS +CMAKE_CUDA_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CUDA_FLAGS_DEBUG +CMAKE_CUDA_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CUDA_FLAGS_MINSIZEREL +CMAKE_CUDA_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CUDA_FLAGS_RELEASE +CMAKE_CUDA_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CUDA_FLAGS_RELWITHDEBINFO +CMAKE_CUDA_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=37 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: COVERAGE_COMMAND +COVERAGE_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: COVERAGE_EXTRA_FLAGS +COVERAGE_EXTRA_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CTEST_SUBMIT_RETRY_COUNT +CTEST_SUBMIT_RETRY_COUNT-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CTEST_SUBMIT_RETRY_DELAY +CTEST_SUBMIT_RETRY_DELAY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DART_TESTING_TIMEOUT +DART_TESTING_TIMEOUT-ADVANCED:INTERNAL=1 +//Details about finding MPI +FIND_PACKAGE_MESSAGE_DETAILS_MPI:INTERNAL=[TRUE][c ][v3.1()] +//Details about finding MPI_C +FIND_PACKAGE_MESSAGE_DETAILS_MPI_C:INTERNAL=[/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so][/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so][mpiprofilesupport;mpi_ibm][/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include][TRUE][v3.1()] +//ADVANCED property for variable: GITCOMMAND +GITCOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MAKECOMMAND +MAKECOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MEMORYCHECK_COMMAND +MEMORYCHECK_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MEMORYCHECK_SUPPRESSIONS_FILE +MEMORYCHECK_SUPPRESSIONS_FILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPIEXEC_EXECUTABLE +MPIEXEC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPIEXEC_MAX_NUMPROCS +MPIEXEC_MAX_NUMPROCS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPIEXEC_NUMPROC_FLAG +MPIEXEC_NUMPROC_FLAG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPIEXEC_POSTFLAGS +MPIEXEC_POSTFLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPIEXEC_PREFLAGS +MPIEXEC_PREFLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_ADDITIONAL_INCLUDE_DIRS +MPI_C_ADDITIONAL_INCLUDE_DIRS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_COMPILER +MPI_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_COMPILER_INCLUDE_DIRS +MPI_C_COMPILER_INCLUDE_DIRS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_COMPILE_DEFINITIONS +MPI_C_COMPILE_DEFINITIONS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_COMPILE_OPTIONS +MPI_C_COMPILE_OPTIONS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_HEADER_DIR +MPI_C_HEADER_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_LIB_NAMES +MPI_C_LIB_NAMES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_C_LINK_FLAGS +MPI_C_LINK_FLAGS-ADVANCED:INTERNAL=1 +//Result of TRY_COMPILE +MPI_RESULT_C_test_mpi_normal:INTERNAL=TRUE +//ADVANCED property for variable: MPI_mpi_ibm_LIBRARY +MPI_mpi_ibm_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MPI_mpiprofilesupport_LIBRARY +MPI_mpiprofilesupport_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PKG_CONFIG_ARGN +PKG_CONFIG_ARGN-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE +PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SITE +SITE-ADVANCED:INTERNAL=1 +//linker supports push/pop state +_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE + diff --git a/release/CMakeFiles/3.27.7/CMakeCCompiler.cmake b/release/CMakeFiles/3.27.7/CMakeCCompiler.cmake new file mode 100644 index 0000000..491cf96 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CMakeCCompiler.cmake @@ -0,0 +1,74 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "8.5.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED FALSE) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/sw/summit/cuda/11.7.1/include;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include;/usr/lib/gcc/ppc64le-redhat-linux/8/include;/usr/local/include;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/ppc64le-redhat-linux/8;/usr/lib64;/lib64;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib;/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/release/CMakeFiles/3.27.7/CMakeCUDACompiler.cmake b/release/CMakeFiles/3.27.7/CMakeCUDACompiler.cmake new file mode 100644 index 0000000..0eb0ab1 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CMakeCUDACompiler.cmake @@ -0,0 +1,76 @@ +set(CMAKE_CUDA_COMPILER "/sw/summit/cuda/11.7.1/bin/nvcc") +set(CMAKE_CUDA_HOST_COMPILER "") +set(CMAKE_CUDA_HOST_LINK_LAUNCHER "/sw/summit/gcc/9.3.0-2/bin/g++") +set(CMAKE_CUDA_COMPILER_ID "NVIDIA") +set(CMAKE_CUDA_COMPILER_VERSION "11.7.99") +set(CMAKE_CUDA_DEVICE_LINKER "/sw/summit/cuda/11.7.1/bin/nvlink") +set(CMAKE_CUDA_FATBINARY "/sw/summit/cuda/11.7.1/bin/fatbinary") +set(CMAKE_CUDA_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CUDA_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CUDA_COMPILE_FEATURES "cuda_std_03;cuda_std_11;cuda_std_14;cuda_std_17") +set(CMAKE_CUDA03_COMPILE_FEATURES "cuda_std_03") +set(CMAKE_CUDA11_COMPILE_FEATURES "cuda_std_11") +set(CMAKE_CUDA14_COMPILE_FEATURES "cuda_std_14") +set(CMAKE_CUDA17_COMPILE_FEATURES "cuda_std_17") +set(CMAKE_CUDA20_COMPILE_FEATURES "") +set(CMAKE_CUDA23_COMPILE_FEATURES "") + +set(CMAKE_CUDA_PLATFORM_ID "Linux") +set(CMAKE_CUDA_SIMULATE_ID "GNU") +set(CMAKE_CUDA_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CUDA_SIMULATE_VERSION "9.3") + + + +set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX") +set(CMAKE_CUDA_HOST_COMPILER_ENV_VAR "CUDAHOSTCXX") + +set(CMAKE_CUDA_COMPILER_LOADED 1) +set(CMAKE_CUDA_COMPILER_ID_RUN 1) +set(CMAKE_CUDA_SOURCE_FILE_EXTENSIONS cu) +set(CMAKE_CUDA_LINKER_PREFERENCE 15) +set(CMAKE_CUDA_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CUDA_LINKER_DEPFILE_SUPPORTED ) + +set(CMAKE_CUDA_SIZEOF_DATA_PTR "8") +set(CMAKE_CUDA_COMPILER_ABI "ELF") +set(CMAKE_CUDA_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CUDA_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CUDA_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CUDA_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CUDA_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CUDA_COMPILER_ABI}") +endif() + +if(CMAKE_CUDA_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "/sw/summit/cuda/11.7.1") +set(CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT "/sw/summit/cuda/11.7.1") +set(CMAKE_CUDA_COMPILER_TOOLKIT_VERSION "11.7.99") +set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "/sw/summit/cuda/11.7.1") + +set(CMAKE_CUDA_ARCHITECTURES_ALL "35-real;37-real;50-real;52-real;53-real;60-real;61-real;62-real;70-real;72-real;75-real;80-real;86-real;87") +set(CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR "35-real;50-real;60-real;70-real;80") +set(CMAKE_CUDA_ARCHITECTURES_NATIVE "70-real") + +set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include") + +set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs;/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib") +set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") + +set(CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES "/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/backward;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed;/usr/local/include;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include;/usr/include") +set(CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES "/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs;/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib64;/lib64;/usr/lib64;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib") +set(CMAKE_CUDA_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") + +set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC") + +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_MT "") diff --git a/release/CMakeFiles/3.27.7/CMakeDetermineCompilerABI_C.bin b/release/CMakeFiles/3.27.7/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..a5b6454539bcd967167174f7d986d120e2203296 GIT binary patch literal 79392 zcmeI3eQX@Zb-?G2AEGRorWD&@qu4pwR7%O>@<>tCQBo`(KSa@{C{`b-Y$smc@s{L8 z$2;O~X&ePgloS<+kRq@P*Kv}@l8Zt~{t48=O@aVUl)?pq!ayCgDb&XG2l`>DasfF_ z3L^U0zBl{c-R<6;s-y|Ppl_t(+j;Ze+nL|Y&hF05Ee?+C4h8~>Q&8QfFgI4Kno!q^ ze;}PRT$>;q_o|3m34b3{52$*`*J>U7aV7g{xkRB^Hn?W01|<4LFrX{7J><1qOX-s?^dRX$7ars zWo>gNmQ1Umk>S36v(xC<28B~InKTue7$`{f3uwt4zxdn>fIkRVgqs>1cYJ+Zdyo=D zlL~5=``{Sc$*H+SPeVo*HLK`S^T|_J&exnd7OFil%JwXSO}#tSVqfHZuwkJ|1(sfR z)-OTXc*BX{Ww>hFSF2mmR~_eZh;w;dt&f1sdCj;W&Rd9_L$6#v`pKAL>!f z-&hQ(m-eE*`NTt4l=?V*gRWKTgnOAmTir3iZA4CQIMM5uoY?huoRiltJ1<|q=KSC~UIW;6$NAG;j`LT$ z8jioZLmhu>$JpiXE#}uPEaV^l%0m8;?=Jl4hC2r59(;9iM4gJ_7}=xVy}snUwL__Q z;DhJu8(*m&y^{aC!NvSf5{vnN`RrmqIXlkRxZ{e)RPWNOizHe+f}IB zRjAulsM}Sj+tt$R4&nz+z>LAyA>?%$ryC`nbIGGtX3|W|+S#YVkxwf%I=pXpe7ikwTG@=1cq%*GXAX@H4iAh*6_je9 z_`GeInQX$!J~c9Y@ZiXxIXF5n936#nOxh+EPd)|DBd7|jtJ!fFB;Gq3t~<_YkkcS% zF@M8xE?^$y8z3)%yauxMrsFijq}l~?Gsxy!jxz%CGDsLlN;!`6B8VpVUK2*INeX0SdQZB)^>-8x-_ zVq~xy?I2<7zsCd6T|zm~ICeG=z58P+Xc(k0e0~O>*NB&TtZ@v2e!2cDb$?R()tZ-r zqh|wSZ^H?o9dG^fn?Ly{u*J5wg7-MEWL}_>Bm{(j5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z zf&X^|F4n0gZ1gP201;rhn(`NGT)Vp|e`$rA{~gM!n*kkX9pxKHeuVQ>{!z}8{P`^> zgNM%s-FS7RU!r_HV8?*J4*Rp#>M2Kd)ybVQ7B+m>ye##T7H zVWlEww=p|A(cP7@ilGnX^w|+UH!Jz>SL>Oi-vs7%Cc3zP?^=XAZIvso?OO6tFz9ox5T+uqsZ zW<1V=vzZBOa>urg&dx|jxU0w5h9{)t#cvL#6AI@OJyE~~ITURPY?a>8TJf^$ilG{I;=lIs^PG+CJcmJDZxD0@HMC#@db!ZRCt*JohPG zhfPEKeqU{>g9(o3Ow#Kq?;cOwM{;&-;)pqsish!2`jDq=)5N4Xo6XqPgbl+FWAL0$ z@pkXqe{gvB6Usri`#rvo42=x;^&dWLMh_eq1gm|c2cX9ghEXYvdJH+%P4=eOn=WQ49WmU5jf|Ld%k`i!OY+4AqRUg|TJ(r3%R&$_73 zSW2HQpFYDEa?d(QtV4}afAJbfB^xed`K#LSdh`1w>#F|x@EY{{v^HDmT<56HuhaT= zwY7p*>fPo(OR;{N#v-n9{|44~^tzF6P3Df)chK?IxxRzzPuTYX@3Wt--v#Qo6Vz{5 z-=b~hwGF?|?c#G>9v62K-|tgx%<=WaQpTKGHe;?@pKYf3gr)S^^6#?&>NA$oXUo6O zBGhLrrO%d6pH+I!;`<}ZU)6@6_io(gxsRXsZqPj+Zuz%OHLz$Dq5T7;hBbh6q@un? zr7G%c3;Ptjaq1NBPw?vN74Kv4>Q|^r-|yF`2F3dVy!I;#AT32Q}~wA3sZb^^FRuq#wJz`g_!i74=Q(XBG8p6z>o5##yTxXkUm| z{~^^>Q4hN{9Cx3I*B*C$`1Ub?rUt&93{}*BShZBt^Dd3j=oqK4%f(YrqduZqeR1Fs z6%c>mcnl%)C@O-h3*RGi`6%i6eTnsP((`whtbeA8{tKk%@6Fi$YgP2Gk)FS^Vf#0$ z=$A;(-xsj`-PmAgmtX&J(({@%+doQre|w)KJ+G6p{WDecFOZ(s=-B?-RrGI?p4W%i z{zesj2%kiuU0uHG%Un=|2L%P=TWwQ zuZq3_UlyTV{4B)wEmiabr04rE+kd)>{wV4B9gFS1M0$QVV*R(O=zmOlKcAn1z7pq~ zpbw6(R_A>E<&Yj;NImn|+FIA1_q}m_U_8OyqBuX`@W8Z9>&xe>rzsBaqjRm5`i!<$z9=>hqsq zuPWRx9?&oLFpv4}y`6Cp^f4?}c_2u`S=X4ynFZlMc zeG&9)q5eGHxbuGi`cQ@Y!q-5*Mm4H1@#KAk-vNCS*!%AnFJt_8`F+y?ZfnPpoi}}- z;)Hznivyq!c};Z=)~nQ-V54fK`mo7Aq8{oQBE9Y=D7*~%wJ`qqx_g5h4#5C!g7NIX zPyIF7^E@*^_Di5gdw+XtVG|F==XJD8WWN&hYl8Qe#s4YBkFQb}{m&tK_gN|#$K7Y` zw4bakYbB;*c3TR!pS4HY4WsxUOuM_TielnBkq-{+2^QHwmxO_IobjJ4U z(5{l+m`kUUN37I*MTcsI25hFv+HRz6v|THXS1x04fQ)=Fh2O55wzd)w_T z^S0AlR?fj&UV(?#KnE!2;x#Jg<1N=gK;>oVwej)t7U}?+o0Xbu(?cV3px7IrEE_LH z9XeOC^>XvtS1YT)%ja0ms%TKosaRH-QL)^|r&v&AQ@Acn6RxQVb0RnAV$tY}2>it! zJ|%^d0NSl`MPFTvzHsU0?77KF7`_QBYfU9{u#?ZUXJGeXCT-=EX(lq}R4NmXrObq# z$>z-1TwdW;)|6#i38QDrmhQ?%CZ5BLWwWt)Xr`T=SMF}X1Z<0)2bYqZZmGw#e{bxF z)!$D$W}|(>P`@N>!ZqXbwq<6rP**daoI-xdSh}nzm9*`Yd$-8T$ssa%;{JmLUx8AU(X;4ikz?XBb zhucT42OmS=*h~`cQ&V^oa$^7oWx(*Bfg!7md<@T6Xo(TC?QAkWXTyc@Yf1Qf419*g z*8xnt4gyjqctZ6gv@J~!Lk2hOvOlkvfYd4Eio#!h9$`fX9F+R=x(Z00TG)`J-yfe# z{u_Q1!RP1SiGb9Je@_CB8#>{-Q)$BYYh24`e_p2nsnZ@;=sn8VcJ}9$fKP%BULgwp zyq*J6C;lCZn{!$7G0LamgTL|M^Ygk7NS%0ZG}oW)SRMf@{LKjGd3^|^P9ay6)t}Vr zC>$VD_UCmZkUDWY`TYL&pCf~>~|NP(b`Sbc3NS$_K@RH>BzX)acZdky?>uNV$Cx3l8 z&+>IJ!|#^apV#Xe?$96K6R_{upWpYI$p0GEpT`HEm*3ak1z$8_|HAqot+2I1nI};^ zj&lYI@wnhm?_aItAM!XC$1nT;JCv86KScf^t#z-h(hzj|g6e%ZDm_2HSGC-s{|9t_ zzRox>`#;GFl6-!azaW2~nL1AA|06c^`4{Y=oGulu;`hj=pzHVw|KN`t{NoR;3fE2{ zs8T_o%{1xyOkK(&jzx{Ix7qSAuOzSwGCtkNdcc4t6$@m04I5a#_o_ndR*%$<8P zNeFHC{r^WVGkNa4=RDu%InViOxZ#!?6KpmnKMCwoMt>E2jinOIN&n#EA3sL>PQbrT z=3pc7?<9658;-w|G?;dqo|o@w-`Vs6KJq)6|H%^ZP488U`}o$Lm)~Q>bMjkaNZ-T6 zJ@KWzhu{4B4pb}1bz6{>XYAg?Pkaz z)}D~xHR472E$dr|_cXqU`|-YHwcix=S@DxOMM>gY%5P?6#hq8ro>^IX_3Rm|SIqbd zJw>=sx%AA}zP=d$GEF~(B(=XA@$U{?TXE4#%W=)dwE&m=%)pNfTw8E`8`oxBx8u4A z*J@nyGX+1shO15j#5YO!Gvc>PeBY1nTX1a`e@pu5&stnLxE{u}64y6yeHqs#TwljU zIMc_?zfAxA5ujJ&^5dE;o_GM?S-4i=%EeWLYa1^5WaFyRelfNL-#3fjx8eICTn_Q~ zBlzBc>sIl%{F;X!4Y*X^(!DbJ2cKqK6LCFAf8cW|uDQ5U=ns7E=3nf`_$FPIpLOC# zCBDCd>mFP_0h=$rJ@{UWYdx;(am~V&hD&~$@S`3VnaoC9KfonFkK#uwt~I#smB2xK zOTQEE)nO(NNF6rb`kVlaH{QVCSDL^s7qFRzd(ziQ@Fel$tN0!*f%yIst}lwer{X&g z*XPCG^6Lux$P|C1OQ7=Y6u&3nyAaoPxC(Gh$3>qx{EOw|`&#jvzQ{VIkE6eDz$IPg zodoFP^IdVT6yIa|cP4{?>_`Yf(dxR&B7!DYuqpUe0cy9VFGakb$37Otys*^~=E`~A5b1%1{P z`}n#fbNFvj5#eY2?1EyNmD6TX&b=1(uCXYGcxYDsB^J-0Cp=w7EWs~}=YMU1=Zi3U zvvR&;QOXW+d@S48DU0VnvVebL!T)_0 zeA{dRpJ~B|Y>Vf=4Cik~?^71fFSmeiv#58X#q;Ma1>bI@=S}2tjm7iN zSm1fJ1>b&Z@%%UGd6Rm3ES}$DL6^;fKkr%K|8Ex0w_DV^#DYJQEy^#pfZHs}-)iyv z4=tX*%tFs6TkvP21-qR|~oP!lL|#EZ_?)>iwLBeE-R!-p^Q+^D~Qj&smi7a|?P8Ta>@U0?(Be z&%bH$e42$Ek6PeA!2af1^fpVbp6-@e#)Ypk1U?|SilP` z;Gd)NP3UFF%dM)Rl-w+~bitxqmzI{TD!Z#@v54oOZlUw53Vk+TDqdTY&oMJYnE45EdM^$QC(BMs;sz_D#~W!kEN^btz1#^ z{iQXlYVTb|zl=93mRHp1u)E4?R#%smR4l6~(P33R8KFJGX^l-q5+L^ zt6W`H7SU5ssq5tGvgM^!tMAfzsxZSS4GsAkoqfd2>J?xK{fNR#$l3UQ1T*8E(z2T3 zl5!mfts>(yoLCs08Lv22+!|MvmE1!V!F)?AdDgzPa&>JLE3LeTe?f;=tiqoql`B@4 z;af9&JifZ7v}D>edgW?*yGs9cS4qjz)%4daf|qdkYM5wQ4O_OXa?R>;2E{F@t|j*Y zi)YJ9%BxnCGV&dz6|2}X?pkVAEib96X3J_;tyvEHfu>Zz_VG$_4byPZo~_mnZ>8Px>r%9h{5Rd@bdO@fNMB7!Gjx zvYLA#NKL1~RgG7uZv~hIe9Ks5@M`JOn#$E0aZt-uXzyy+*KS#mfBn+0%=pSz^q;dR z$iS#Z0!FpyU-~Zz7ypa@J50Yve@EYu@6b2h8HS5~$^RnH^HS8e6P2eU&+%XUIa#W_ z8~G+2Wlh7QaEgA1%Hg<3xDi5k>7GsdSJn`zpWunO8(j)7jRz|>+|5F4nuBBHmh%3Owfn=^BIQ0pcEkOosQYCx_Yy` z;GdC&;JZnIYYZ3n{0dy{FSIIfHBN3*;Bvf=it13{a=eM)`xW@51Q4GC3S1qt>r~+C z_}5_tu8x%+Q{d{j<8cKp#|WwFZUrvKw+J3k;4~H}Kc^KqjR(t5NP)|7Ozoa6B1al~ zl%He;ZkIrOrz-Gt1)iqBuTIO_lguajm^rBOM%nar2LdC@GJ?$ceMhSW3qJHt-xm}&wCZPIz{;({?F5a7%NxcP6eK- z!1EM%ngY*P;C2Omy#mir;PVxDwgSIFfjboVjSAeUz`v%z3lw;P0xwkH3lw;f0>4Rt zyA=4%3cOr_-=e^)75J?R+^xXBuE4zt{2L0qNr4wCaK8dysK8ql_%{`Jn*yh~0P@qJ zz-b+{?mL4`AJsb#S)0`R0V#g0#8%mB?{cGz)KZ)h61Pf zO@6W!_%aE^w?l#7rNEsEyj+17C~!INgl-oq@Vk}gixl|x6}U@*S1Ryw1zx4Vs}=Zi z1@2bhD-^g_fmbW=CI!Ayf%_HsDh1xEz*j5qHU(azz&jK;<-X--zXHEU0`Yx7f#0jZ zI~BNFfge`jwF>;00>4jzA6MY_EAVaw?or?Y1zxAXPb=_x1s+o14GNqkMfBgRz>^iY zPl2Z@@U;p&O@Xgd;C2PRUV&#Q@C^z)TY>*Tfjbm zz&9yymjd6cz{?f*0}8xaf&WN>yA^ng0{1HLEegCzfj^|c{R(`m0&i8|4=eCC1^#0N z-l4!-75IJyzDg{n8N4em*7uCph3)h1DUWOS-? zF1t71u_qzflgezN_HcR#H(bfygaBi0Ge@!Wc?ZMcn^8`{#nK&kCa@mq+$9eyB zocF8a;NKMIeqo&Z&N%hE;_$~ChraSS_SqEYeR~}IyW`;36z6_x9Qr%s)W1K@`={g3 z7l?B|H4gtW;?UO?2mhux_;s^_I8OO(aqipWl<$v2Ka2Bz zQJng{ao#@`=l#QR8o8sVC5C^|d9R3x=slPBz{q8vL7sa_>9)~{#aq8b6 z=YA*-e-6Z{KQ-R_ap*f8r~L9b^6|%cKRFKl{y6uK$EiOMr~bk?{7H@T{(*S-#d*Il z4*%2Qyzh;3zctSNK%Dyb$GPv1!@t9E_!EdDzvFT0cg1<1#krpr=e{Ej{;hH7FN*Vi zXPo+-ao+Ea^FE8mzc~08#L=JZIQTi@)L$O&ejNNV;^22I4u3M@+&>Vf{?0h}tK;17 zh(o_4-urRxd*jgOiX*?YIOTW8xt|t?K4+ZwTjSv8iX;EdKI*4j7+q?f>{vMOY#`iz z7Bfw9+QPmw9pUyf?#t?sHg-Aohr7-k2=|=n4BO5g4yT_z9xguH9rm52+}i1I*V$0G z=j_V!>7fi;dhenC;(4_Ib6%Tv?fhc*W%qeXS)G^J8ym*49eL&KAaZctIpM@98A(Y# zXEyUXY^bB^Q~q88?$usa?>UyZmWBvjoe#ViI2TTsmtiY*P~NM%qZLD(-MP&6kmI^( z-E;ON9`U%p`kLoKR-Ah$^W~-^ABg8r$F8hf*al~YttT+<%<~@iFW;?q|8{=ExHHey z+t@X^$!tWB%Coa;?%$J`Qs=&YRGoZx+?hw~Qdu}Ro4qi#_Og3CrGv{iy?(QSoYv-mKI9%|zB#Y4cE5{l^y0UFTPuI=7%TRV-pPMc8E@ckDyKH8oIeGU*^h(W ztmn*WmUq^{{^MkT`FfAz@1Gxj$is2W$vyP1wt{T-Y{vWH4Nk_KxsWmB+%_k~y5@|3 zo!5c+QbFgj3{M;LIYW4#*?P_-<4U!)KlsTp{>;-OZfwAFkUyJgXCtwcXKGF|YjxV7 z*EY6yW;mRgv(C0NFNHPYncZHNz1|Z*orSh_Ckt$)f!2igy#9oBzK0SfHzu=(A*Xwg zJNC{&J^oQPUrVYjeap|=9u{~%G-ovMp1@`U@3pAoJGqOHS6<87=MY`Q6Qbp<|FRX( z-+Q0275w~|yN=WRo!lj?wBjgWsq7b11JE0ch|U@J&l4K>{ol>8v(~03wfk2?Zd}Gx zW;XPHJ<8mZ7=+Bdkde#r^R%};KTo^dV`C)_cfuX(%Y? z=g#`NpF5X8pOSOjzabhv-*DaVKiXavL9oDJEs$>HFZ7-cTU3ZoP@tQ34e1E{^k_?%_;b% zQ}8*b;B!vFN1cMdIkhM8a07hLDZ9woW3vXE7X{yRHPDzw z=yi;HeDEV~7xc`z@SSt*UwF)MeDhBn**i-dw|~Utk*$q^bOi)o^>Gl5r#7n5oTm~G z_a&L0_lBpt@tnhlI%zBgvlBz9-h|+y{|?_Q-luYy(>_Yu=VLhI>nZ4-EQfy6mG;1$ zj_L6x$EEMK$BgIXTa>@nQD|@U)Lg#K zQ!{3rXRB?UUYC8)brJrN`lM_~4%rV}3H?bS{GEiq6S$9s{^L79z6tlY5#LA_BnKh$ zsPde6Uh;~{?n1flOXdOZh7j@137*;6Qt)X3+9UkU=BZ_A8=81AX;hXW$H%BF->1AR z_hl8H^2EnNuEcq;3wurto7ZwKoPX_spWc*nXX3oz&kLs3Jv}0`u7)l3jk{?ozWM!s z7x#C6CbO2{*omXv?78>*`CMv;b$x`F8};JKao;?t?)I`_TDwKKqu#7k@c2G94}8eX z8in7)-(+p84|@*5W}`hP{$zNsq-TQeo4-`|1=a>z_c}Bi=_qj=e4pD!IBd`PRJ`lb zXua}UM@ME(IhzL_+jFV`qq?fW4^}YJA$qTCawc)5_D_73<2e{Ijfe9;1xUxdFmah^U#s^})^ zlg+E>lbKEyT!2oJ-H?70Ersw2?VyqWhHud1HmR=aQJW@vf@eeD;S;p6+`jNs^x~FJlv@)t4sAi zq%-bmFKFZRByUdF`d~799CD1{Mln(GbG&}uUKNY>svQ1L%mLu~7}Y)|v-Q)cZ$teR z>fca*h59w_NsoA_ZtBla{qC>6jz`NYhJ*v>o~dm?KI+mM%l zb}tL|narl5UAPIpEE9B$45qS_-tO?-c)ubP3UBllux7vAmW%uQ0)F@fde$A@i$2=P zfHxcrb%$RGRELkyv%Ul2=9XkOQh&}_w71?JPQkM`o$`hkfL~KjRfjXtw;PFPQ(B&2 z52OB#c)r46x9xT8w*?)}1gc{re9A7~7vvQdFlmKbWo{lfE^XVcgyUja*O$zYYZUlz*7bE#~7$j&weyU#cG za{k<~C7JEP{h#9f;kZ8nG;uuB*snnUul-99C%<)NqUIB7FRS&ur}@I?XU?_lbdo+6 zYHt4_&mY$UA5^E{$`-x)26|tz300K58~BR zqQ2J*_Y-iB`bor>TR5J)Eg6BDP`>IPOzn5ta~?Nx1iJmgmfc@HA?!D-+iyl9x8F7s z`>p$fwBP5l3KOOMF3EXqROehfyT10d*A7E&jgDW9xTKcsI0JV4+H0<|qpyv0Ww1Fp z$HVJk({rE)X96z<8f%@0GaG)haF@r=?m!!QHq^=XxZ6f_xYO7p-Zb{8pW!(MxSibx zJ-@%jtJ!(S%qKKE@5rju>^wt@O_EtN{NKi2*f(^1Bz!{!%D5Y4G^31-C}Xd;5I7XD zeX#dCVDAe~`C)e%uz7d*CiuCOpf^0S_jEYuZ3>_C9}iaqtHXEqhQiIT<&Chx6xcC; z-g%hpeq<;Ru7HoY8}{FfcQ)dkz3>(L;42n19thvGqEGycur;#rZp}x` zo9VDU;v`)!-}a|m_o+S5;TKN1-(4T^5$MCBKMY^-M3j$c(|pACX&E-sH`PaU#rO!b z{%gcPc;O!!&t`s3^$)vdq-r)gx#7qcjsBs3{bAY0lW(B@;Zuky zZvP}fYY)=cB*f^=4N2?|&MX_d#m1VE7wJZxZ)aX1`dt)bq_W~5$tdE>%j-mapq0~` z!MbuOpRw{?9(VPAEX!~7GW$Bc{A^Z2{ypn7e65|eL#K8%T>Dm%hD+^b4W9YXn}hnh zySyx8z5cG9`2rbu|C2GCmz2+R!$%zaZ(bL@e*onY9+?6U^saNL4m->1{c|eUA;c`e zVb=_M7=HfjdkyQ;czFY%cf5|{OURdP&~YUCCVnVo-QcM~TR{3iI1yi4{>1rXl)sE! zGyH#YU`I{Ne&OL_ZxI6WzP`R4LI zrpWu&{~aywqyIfnd+ie$pf{vIz0oR>a{Za94 z7q&sXz7TvXMn}m)$2VmN@Rj=Rp0q=Ye<%);ey-;W5q>+gHjTNOz-#xZ-3{C(_XbD? zXu~}2X-~xEd;2JJI`YQxdLllgD-i874@dJ~x7}F&_eIaxA*Sc`OU&t6`MJLhJ$b?w zNx!6g+!r7pn*}}XpZ(j=vr_2uP|-7Mq`7=vA3JpPQ2(E7UfK=$sl7sjl4h8;C zCY$4bYbuw)#lSz)0{;Vp;Qt3B%<j(9NO1 zziPNS|3_a${DVR_jrboQ1pl8LW{&@@A}+g7{!=cJ@{H&w=E$6+`!WxF%MOoj+tYrD ze8%s!cD)_`iE`lS$l+4|MCvikk)W|8itpX09&gBCKF3pwxsKDlC5RQZTqWK?Un2Bo zk_lZOz1*;76o1D>F%*0q@>&7ocx%K@>2Z~-@Uc4`?%&?n;C{P|>P8>q-GKYuMy;=m zacPe`_x&he*%qd_uHI9r#`MF<%|+*XE|fo2LeI?j)3V5#KhGqZ^JnoTgX51A{L$ib z@QCSCuZIM` zTq?gt#P&z1{DL1{iM*UGMD0EAhwMe09vugh|CkJ$A{)mm4$Mg~j)?JBdHDgv}5yWPe~k;Wo(r+K1;kts>{6_d8pL8~Hc% z{k4^#r&#E`N>6Azrw2H}rmXv)G|m<2_cKQ^#)i@bJuaTZ(&_0M#_93v{r)bic|n@~ z6FAl&u^k4{WGqbgal5Jg~R9jC7bN6~PYkF*_w*QeLdaypFqv@-Gk+xoOu*c0iK3+eK)M9HX7O#%NqW`;0NmE@56Kt5nM!G=eASsL>kv(a3g zCPy0Pw%XZxw~Zab@4rkKH)mvBp|hgy#Xx0kBD-bc2~K7nhUehBy|NsZHmu?czwC8S+lRk5)GtDvf$-0~?nxW*_ppZfs4o!SnZV#9Tjt}CCgiBQr_YLmM869=4YP*uG{{%95ag^ z&!h2C_eX~svJvZ7eaN4YKA!w$hW}3Z3yOUjF@NB0(KaY8)NjCtX?X~=b69^8I{JU2 zXybDW&|j@O!)epYo?Wn zL+JckC(VN9apk+D9%MidtYVk_qR$$S-r1~Tk?gypteL9b5zR@M zH%GQuKcZw2*41Q`V(m>5Ys}y>Y0q7RHc*{+P<1*=zjQiB$Iw|EjP1koxfXJ+M7z*Q z;`Me-e|+HGx>L=+HP=7QAH2J+q3Z*FpXNPK8=nB3B;FnW(Tk3IM*RBQSl8jkKFZqq zFXP+;nvaJ$gj!!TL+G2NHBJ0I3;H-p)uSYouE{2LyhhqH@mS?8*>nIpLUx?_ZxNlM zd>iRH^jDi>0$!XQ|6eLk#e6~7?6YDnNW^CO`WVzB<{>sU5RW5m1;-D*9X@gIOgDUk z)TK1am1}cHsO}W_{S=Qoag?6JB^gvg24u4Xt&jMZ#rfqT{UtlP;XflZr=ncVjxM>* zvw=093Wv96H9@b^+4-|OUYD|d*UKC~(C40TS+B>q_R9?`Pep9}Fl?Mb7J(lnAU5^| z9moaEMf;F|d8OESS;#!Pe?qkR@!nk4)tJowSi;yjY^T!fID2j8*XJHNn@bY4QBY1MqKUbYo(T6^fPa=HDCsE&KKJ=yb znBzJEMIlQgGh-@SILhe&-Civ1Er*<(vhw$a?i|JS^ z_|ENtbnjBZL+NWMUvxZy+K`tT3fMZw^k?|ow3wp zj;06w7RqIK9Z&ujub0Y2Zo@%knv|!@fb)v;OO=OgqhhrObgg zS6}qx2^&@IsGQ_9$nh?l1wHK|9*oGyvQHIP|N5e5rP9BZ@^N1PJ+t05m(S}b z|2Fbz7rL#=r|AOdDgKi=J+{9QJ+BMBR_W=u0D4+_%;}jWV$_SRZ#ENp%EkC9AIGpB zUo~roy1LEjDGvN?^lg^XZ`1AP0_gehkLL8W{KwGIW8NOodeWU*d(?vV=ysvsq<3!7 z9yNh3^yRgj6rXQk-5xoyZ;g%ZoYsn%Dv|A+iasOd&b*9y{MCA&#yWoz8Ao^KCc5y*@R=M7-y$EM0A^?ud6Y%k^JS(v z7n<+JeNw%?)*}yntm*Hlyc28RkmETj<_~GQiat5@(W3Q<_cf{i!`Kw)WqJ#r7nbiz zWy3ld`!mJ>h6Ts58+>W3%uBiO49uyR&GK3t*tZBeeJoq;)9W!#v_1}mKMRF@sr)%` zf&3Z$wmE;E{F9b28jQyV*Q^H{|~w^9{xv!?HKV-8wCEFkDK#<`Vir7 z?(g9vl>T0?&~>6m`klk1OBc}Jdq%9&Gs+8d`g{GMZ@dY8$1jk+H-Bd? zw>5tlTKZ^Ca_yu?Jv2vI(kg9=`~i)7oJQM0`4w$$DAw&~3fm=lQa(u?H=AgI_rVh! zZ-|^F-cymoe)C?r*7-h9HR@#SJ}plh0G~g?K3cT?JDELl*8STX8oa+- zC-OW&kwY-%KkxUr!@&Eu*JD0>L&LM8Y&l+O9REl_{&<4g)@bwKBk`4*j~Wa=-x4}& z#?PZ~nCn5+I~T^!_4kdcM3EqadA>dfFmvgZStaaeM*! z%(s_epAa>-WUd#H7$w@2!%OLoBqYT;ukiWj~9qdT%FA_Z`V;G|kbUU^^)7J>} zgWh&wQ!2ehLqPBCzcHt`_pPC)SNa+?e|tpeHqnK-5l%VgnbAl4SCr5=Ed%={7A17& z_8n7Dytymu9Wman`mW;Fqv)P-K&-*H3A+0(7t*BMA@aPcKQN;&_%`RGkv_*orq6fG zoWAtq9G{`0FGZnG<_Xds8GQcz$p4DMTc4v)A?6wN7jH9r)ANPsGil>eA}>IB>O5iJ zB&TuELkBzZZJKl8LZ3<-Q`FW%u$*+3*gGW}M}3~oAu;zR5|88=_Ae-?GmiHsup_I_ zk9Z059!lM`&szd3b=lcEcM^MLHO7yfL`T{qFKT-U(6~2ae=%+6NYA6!LU4bRgfVP8 z+wDG}wrPnd)x;mkn4qtG{&-;@#3vcw6+qt6KG!;b65Vg`YI_L0dDL9yYu@C#8sX=~ zkMDAXeW>&mT_Am*yk<_{);EThK3%^}#w&`2{SaN!PBVzELFV_~Chjhn2saV`h>Jd^QK7tg0m z%A%Yi%-M0A;@nH7U_EMCh{jm!UWuYf8;_;j&qP6!>PvxJzt_LH`++~nC3-x(tB>`1 zJb!TXNEE)h@2?W`j0TFYS$llDusOm{&381B?hG(rFwp|vgJQmlif<%7)cZSn48eVI zY`o`%3}_8ZNQ?qWvJH%!yCM z;8P*?mt$#)X77eJ|BB1HiO*xzWj+1hxesg8`{TA?L?6{XmGXfT zbA?(FZ@?CS3+93R>J<4XtZ&79zSs1<)hOOD%wrYw%=gheG~{ah8OYz#zQ~*wNv}7D z`q&waIa-&!2YP$9w2tWUq-oC)KUhv8ukd*e==ZxFScZ)Iko9%*ao^U``i(pf zHu%=ok0yiP$ta)7#kfhxtHB9(jz8(+CJu{hzsPlG$u?QqF6rd^kX!2v<{_O-MLs+m z__{zB_LxV#-Ox+thguE>_U!~6g_z6I`t7{BY~sZgdC*Clr}fMDo|#uyjWvkt#k?KT ziO76;Z%!?1?5%y7>x7%@gzi(vzZRnthMavec%$vz>Pp^5^EEMUpvMa4b2Vdig0IJ| zHjO&*2+xA;D?+d%^#OK80&ua5ZZ1RYp+(A&B+uWml{oAzUOVBKcxUEt?magE5U^Mj{d zrxOcE=H!2u=yulT*oL)nQ(odcZB==Sagal=aGrLOoxy%E4x;4;BDSXPJ<92Kumhcw#r5Ob%w3}`*{W5On*_e3TBuhV>Iy{AyvlMVcs zukybS|0#W^+CR_K@riCPGqw%9z5Jjnsx8uWaq|&Qvs3p^{h3=8t3PJ`-`h|BKT`4k zX1?F8`TbJ({k7LVH*-@?=@%Mm_njH#8F!}>`!p}m&N^NMVSS8i9Q^xiT#Ink;Ccwx z)3|2i-W&M-7#BV+?*E0a`+6yKm3*D_{rrBK=KFpAb}@I4Z2T5oAMH6lHmP@OC+92L zC(I)j<8p}et~zYA@nXgA>tnnw2kblI?+;u0`vam~UdQ!G;Qz80J`sMa2mZ3l&-IRQ zm-IQ|?_KcMZI0I4lFfLYf=T!d)y?$yhs6Fy|n)LGD^QHg?Y9}&4V|C2?F2_jFmH`}EFQ@jT z-49>mDG={dd$EYW(`S2uzP;o9-TL|$u#Y~G@h{@>Ykl0O`OE{!CoU8=NBX4aPsye) zFn^lzyt$3o2ORswf=qOh4@3)nw@81%; z-&WbPCNe?%HcZf=^@+9kt;b|9n*i$KaWT)oU_SH1KXFieMr&0VJ7hVRxkJQeHT{go z2Fj1o!iLQFF-zb7C6*tH518}glNY#L2g;A~i^PvMarPZUo4sG0d*{Av4bB3&rcR!J zcO`3e+gYz$?p0=Izjt5B-gZk~+Szlszr(HT*SBuN`Eujxw7d$=$#Y*a&C`i9(7ddD zix+GC)-l_bCg$7nEc;>aCYHCw&x*G^#L~CW9x>Qsqt|^$N!?bVH)LZO(8B}J1A5o} zvpw~+1{&o#y6%wui3YL1KVP5V#k!0)|CRG!#BX|Byykhqe;fJ}+PdHN0C>=^bGSgC zw#J9@daAxwGrs1j1NLucC+~B=T@L(UH^2QF#!WXgxL+Ek&C5ry5-4ZBGwxS28(cUG zkLLhVqShT!f1^~ygi$$~QCjfgQsWo$$N#AEdsFCnU-Gkk$69`uK4UJwXP&!w@;mVV zp!~Xo{q2YSRm1*}+sLhf{kdU(dtrYb*dJ_U%R1O!6YS3~?C(-xCsKYL&}VvA+8@eu zY|a9j?QQ{PtVeAK4w*pOx*E3)`EmwkNvn z@&1>ZU%A-!H(2>C7IxB?{Cu}r%Wvyb=JLDh*^4K?<9`SF`NMfaO#d)F)U$>2#(3@mvePq1Vayv{-mG!f$Bs}H`;^_KP+rSm~)|B$E8 zuXQ4ahjsqXonnEk26xGZx)6KBIf}i2HSUl3QrQ*Waje0Y#=_nS>Y?&RA;*}C9OF3lg4cnw za~QBl#j^^9t-bmc_Unpvsrff-w8kOKOFuZ z&a(Q0|Gn_#{y@0C<#hNw&Yrov_l@&AK?m0JZ(Ey7XC%2FEvt8LxxOBw9wLX7+2DRP zD{9Q(y>qmeV4Y{bc8(F{hud;@^D~Wjeq;fbr z{7gEWL5Mzs+?V$gp_ddF)A$(HwrXQh$km*^{YjzAs_#c%p!aDm+iE?R+hZ}`E4n|R z^+7N;hBfMrgXee|kzDSHvqYQw;k6k5XovoKu{T&9a?mGWt0$mqC(hb&W#G!j#n?Nh zeF-XWZg{N|qfA)0+a5?lITKJ0*Hz>EN1Q>RJv#yU^7gOG6JcYNU0Tn#5)c4l2N+YzEO^633Ul$EaUyNbRbe+TyU&MB&E1ny^m4jRKs zWjlIl9E;vl-+BKW@$(%GH{=8zR1ZB9yRU1#r&D`&yH<7zp3T;I6rGPJnjgZm+1g&F z2mMb&&nX{|9AmCW)p>o6U?ktC<}Vof!_t4taSa+PabsU$(*1Trzj)X)5xq0^i!;SO zNrW5C=OrDaz6HkmLbvXVvIRbV2wV8zDPEqIyW`^;7Pio#^o?cycl)#nXirjb&Jpoy zoVF&sGq*{LS!g_u^ZJd8btwSAahf((jH^`6EhM1Gn33XN|r=(B#tAd1pHF8qrt zA6MV^RsTY5CGok>`A@7KZOtr^k+Pr`b(zspE{!W9_jz>=X}@t-=hBq91Ux= zbe?mbB!O~`_SpEZKlJ7Ni`1P6eaZbC@3*4wlb@Q?xAmWfp1xW`tfTeoVIQqDW`g;C z?r8@-i~l)7Bee&7zJwif`zG}+u)sC=b0e-kliW~KjQ*>7F}<4efpmw)_MV0f(D;B? zjoKU3yoJ|%RYXdxelHd`NmKBVw5+dyaYfG#7059km6(d&0|6#S)sYkKg) z{M#qH%xT;DGb3$%%?%Rz)Q5dYyHLlkD};WNJk-iNB40$E;Rp5_*?DQ zuK6#-zSK5t6}n6`8U0uDPt19pDR7LmB?I?g*H-efsouf(FO5F5;biw@@6tDO|Fy$& zQ0O|9Z}eYJwVTtmaIaB^e1>@}x^1{99+3XarqD82|3&=}IT@Hl<`QtX;zHs_K`Zd-; zEknN;{uE;t)K9-b;RT%&xLs|J^w=~uo*;UOc8VocnNnZOi8(a8i8l1Zi0&Ste?)U+ zJ`Hbk-+U~J=1BbWQ%m%_7kM~?PdqH*RLZ|lf3#hk^_=f& zLSJ<@+vll&>-xnuc2{`<`?aH-=2(jOu89@$r~IDb#tv*Bsow&72p#ZAO1)HYbtV8?rgryVgFL zJp-)7T0!G@D9M+{5OrD%A?YPu_Zei|q{x`)B^kSK&aG<}`b)Ic=(O>6wXW5iwuyo^ zFZmwPt`0=sMSS2QdZOh0b_I04N!$08^!-{z-sOzibmaO7zav zJYJ@kx(AKH152pit-2(DzS{wDUTw^w~kQS@cuP^tt)rC|Yzsmnmo= zeYMur3)g4TVYB@WdxXwK=)|}|3ux2ll<(VQgfc1b!(F$vi$`6D;>$W6vt4aOdyF70&`djM^-JqPpt0l#j>IQAg^rZ|Gm zFRDjdT#wjb-t=*7Bj8@Zsf~UN@W(XY6`*-DUws*EGhz|gkM&%lNmh+{~1iVz!7e1w>%xA|E)j_Q&5U%a!6^1r>eK4ijE z^btOIl=D>c7l@}3Pn=3-=|0$N?AcDXuhiLXv+C@=>^jQJP5`a62Q%U?j1$<9$6wlu zSP3!76^P%+cX~0mePCrmaxQ+My+yunZp5!7di%%^^vA#C2s=^z%VBC$`mx^0GXMFY z312Zkd+Q@cUA-{>Li$N~lMRwi(zrmU)^3na;+(x7=jUL23Ot_&8O(zW=JlrGV(b;u zd^^Rtk@nK-pgo{61uahG=s_>HJGAddwsBfqe(0aKIc?my`YBHAR^)%+VRQN0p#vG3 z9_%yq!K4R~d`!1vA=a9u`#B#94SLY^W6lRHhSc=HYONWUFJeV6=>+;_0n!WkUK;x& z_CtRx#P!3f4Bme!AEbU5`IBLxAA{kK?MLSPX@B@1mp|0DS&grgFQNXjjI$3v_#*nt zl-v2G2W?$&PhuwG(JXzAL?UaPM*XuRIFG`EKI@@`#;G;fU!Tr!pm=#U&U1?Fg~;~- zIJ%kh3_dF2Ti_?FwkozI#=*?v)eh0GjkFIH!Y;`#@-rs?pq=+hxi6xHx3k^3#&KT4 z(-nS1_R;kAhWb0VsQT7NerzE8Jbn@QS+~iYpA#P%JU_<^`~G|Kv#jnWzFjl8&*bNmsO$T; zHL1K4`9=8596#q>r0?2gGF~n7fDwNw=i3qgXk3J`=aI+Z;{+UU(!-cO+Kh6XulJCu zcUl~7(Z4t0PufM|PwfxP`7{1UgX7P5VdEErKM|eb{Y%o9F6hfucXM2gb2YVdcEnjM zDeL$%gqO^Vcz?9kfi?I+o0-bLm`pV-Xna_YH+9wpWf z$TnEXdqwoi7_XCUWNb0+hq4!Q!J>7H=$edt57miR9F)^Wysz$A;v)a2+D6@abNna9 z;2%>K$K4jazZdl{2wz7GzDI!Xk*M>8V)2cC9>~#k=J-}^GV(j7tUmEAxJdX;w7~b^ z4+n>@ojpE{@}bl&5wF{@-bWiV#TaWxxc$t2tofn5%Yksu89CpX+Agva^1Wm~AD&AO zO-Q6YI;LbTN?efTI6N|E+&3FAzi`5qwWmkb{%qgJuHUpjQSU6;>lwwC<>0)=KF|e6WA|iz6}4J$mV2ihyPAuzsRDPVi^0yj9U;>499bm@f?JO zG{q5bGRySg+*p4yo7#eYIMzA8g8jLdpsyZm#C^;KuJDdxH|31N*{L6gPi_f?U)l0$ z_-^Eon(_W#yq|)(z4HD>e<-}q|7mz6a!*0rZ}ug#=CzUgCvksc%ctRu58_M|@Zkvf z5LE8(dl2P6_-Xhg?x&#s1*ktosedHuzX|n^MEyrleh~MMG!kx92l&(QarhO~aT3qG zvgIA{;l;qT`)MBN1mKwsTIK@palqS!cRIsC@8NK>Z+|$m@wM=gwQq!jYmbNbu5Al9 zuiYI^Y3v9uXnZ1^;yn;P;(ZzCxK3arTgI_{{zYtLjtlj5hEHN%^2U~9;Kw`Rjs7;! zwL3g=O9ya#0yypuPu+3=_`D2!UISfkfUe`=eGhh{KAa1Sxz9%$-$(tY!xg@d!xi2T z&fonsyw}@}_ud2k0hIqf%0C^xyX9llk;IxHrw;$@Fv}+&Pz0Nzu|lnF#9UFv7KpLJ z=y|esb})nb&ls!7Yh&xhSidW`-Bxn;gqPcUo2{7oJ2NIgN3?Sho4Ea8DMtZ~=Xvm6 zYJ$wG_)ftt`dkAB`%&j_Dd)_=KTg{XJ;sv%+xVGT2`HcD%)Rp|#(t59D_+duMOs^q z=K;G_z&wEQ7=Y6c+k!7P^L_Q6G%a@M%q>u30uZG7f3>|Mo|X$gMKKb_dwogR51h(J zJ{0+ZVh7btewNnaPsYA3?ytTUbp{@dzax*}rI?4@G-ErFLojWdTvT7Ay=Ze}VqcG2 z8@N1Z{;8hZLM-*c1}=|CEM;0I_rdzuHZNbLw{}u<)H)2pfqYjn=nZLkn!T{QX0IEu z&?wk%Dhndd8uX@NEuNiKAb+|SV{1nO1sInugua0pJ^2H&H-D3Pa5Bb2zylB$N z*`$+bdwC2&W5r!(r_^&k8T;vn)^k3!DRDuxF6yy?&VQ=Uz2zs6742Vya&oMDTlzyZ`Kc?52(|uILUXgexrmQ~O=hhf}gWy9j z<{Y=^_$MX?Q1IpXlsb<&z7u2cjVY^7d^;`@zDMsj$G57H>s5rm1H<<~48D7ZB)*(z zf$zb!MtldR4~Jv$HS@8?csPb9G5Sz-pE-X=$KV@NR-gLdk2xQ2X!v`u)*RpO`Yw#W zZ5IjO(H8hV=^Y%t6bn;a+n@cgeZoe_uhANG_*1N>h~5kP$pxIB^o(&{*Fv{BuRmAG`t-UwMs=W_cJ${clZ8y}%%E~%l))d`OH<^Dl82WmJ zu1orCG#AQ*zOFuGcW8|{ePwkQiN0ySh{z9p%_#Y4bIZisY{Gs0 z_&VK}k-k8G$o9$RwLMv(GZc$bj>4ULUbB7Dn-fBRNqzyLH_j-%u?6wYslIh5S?CUz z&-mM6 zT7MR=kJg{7^mi=u2lS;Vw2}VU^mnZF=Yw^TdZhk1NPk|{XM~u$G)z^eZ z_wh-G<_aBpLfz{vIl6yBI#P?d@KTSY4#~EH+6dAUp1;MqFx{W@1p3wq*{{lX(flKA zeiHVpr*?_j9vY{eg|%&V_>LIt4LyxOwC|6oaeO_xiPQf>SOCYUu65LtMSgIT0f6; zm+LR>$?1M|64`6$=n7Q_F-|Pb!mGO1sDu6G2Vw>qOA~pTalbG3>~-=w$OhLzPx!vC z5qxNTw^Hq6YJMPcU-bw72=W{+>{Fvhk(ZR`?V?Xk_l@%WKpA_y81g(3HNgcvg?ITqobY~P+x+BeGKpASERaaCK8bQf!Kre>j? z(_(Sqo5uaV$wPVbYv)8{hCMj&4B_7<+Pn7939%l8+tZ|(r_b}VU+b!k{;~i3q4q1v zo-RuJ)qi}rf3ud??Mk1AoHJ&xh|rtmzAI`)Qn3 z$#yuo&lmQgwKwgdgJseFY_@1`zFTE%Zw5qLlz$!f`*oVF&QfIWL0tH)i2#uh1Wqrg;L&1+sVQbR1ZRlU>{1Ch- z$6kzD{*w5ktdrQR$S}eauVW?F5%d(B^Tb!dbt%G=_I~iB!-6N#`5QTJ#Qm*r*U1=# zayb-7$T(l?FC&K=mCwQWJ>_#quSid3K~Kh3Mr?>|jQB#j;{N5ydZ{BW3%;zm%1l={ zUyiuU`BG8N>pQ0FN_znGoQ&_&4ZKN#-e|rgHohK8{(LBOTh$wtH>5LG{8>EPnm>D& zn)7GDT^FA}s?J2|3;JogzR(^IQeU7~(y#Ogy(WG*pfA#fwD`!vryTsM86WI9PbWk&n)#fhyA{-lq1@q*|V`YZh^*$czDH%430_@VfaXTM^`18yrjzH82dYs-v0 zXph4KgN^7si1r`-@~6-RnzJTzdRi_{XcxyW&t#v(Qg{qZ3dS$w-Wk3Ml3d32#|ZnQt?cYE6p{`iEh z6MrZ->BO8u^0A~x#&%c6YA)=NqQ+|{W|-R;@n}|&IgegnI+Q%Rc>F0A`X1p=UXb{s z+7#)I7RyrmquE?uueLs&^b2bl4^Fq{&)9F9^XIAWT|EAnw#QhHNBg1Z@d%v}X%det zEarF-Kl&Swj5gH|-VTkujni-J<2?0UUQeguXMlGfW8((@qPNAd{`Z3D7q(6GQ$Mf2 z@kok=4p5(F^kQ=!Jh{ZkgNq!GKnL{xF3n#s&PP$=kp;qjRXvCoj||H)vjeUNDT~Z` zu=frl4=!RnG7$QOeX4rUpLoPJ&5Q>;9vSv6a~?eY9U~9^M)3&NKI;9I+_Q*J`|jUT zJTgnzE%9Zb@yIi#yy0in1s8JO7~_%V+c|IkF7e19_%l}6H1TIJ@kq;5bN!*V_E4cY zkIKYcp$L!uM)AlX`17IAb>h!p3E~FpS4}BRVKib87IO2zlSJb%PWzp~1`(<+-p?KxHx0v(f z+_$(dj__pgen!n7nD%!D$&VJH$HWh6pR#S~KE1zel26n4gBYIT`m6fj$%32Bc@q5Q z(D7tI`PV`6XQj|<;t#b?#2-4BTh*Cz>i>y(#~Obyr&7y9flp(c-llPF!ucyxQJGWi!oa6Z^l5dDnc5 zH?mJ;u#nf|RQfT%N9=DT`z(C_h5hRMu|C#=nbGsCustI^ynkX&&sK|m8SQ6ZE9O}n z=^1|!=+S*T`Wqn{FG0VP zITb2$0$%ERNI6#IqWKs!UxM}lhOY4Ov_$Qf3;*JZ*1x{!vsutba-S*>RD79#XFsN$EUnQ?Q|#Rp&!QFc-0@#oIKih=!D(}@W4*iI^m!Sa4(m5 zN^=YOzI;7rpP6r>3)qum@hu#`)1>R#9(otHe_WsP7j_j_{-gef$p1_IkiXL)fBl_4 z)ct&5;`iu`~Leqj8qk|+0j%7q_T zV&Vs$9VzvoVSs+17=FNI@B_v00}UpApcr^HnD~KW_<;uD2a5aj18+@^uLn^*$)7<&>Rwd53}g@u0Q&aa&v??ed)vA~qw0emA1L~8Xfn5VI$I(Q<;T;9tzr(mQ6H|lacK2H&nY8+ zsK&08Unc)RabB;`L5lO_`bHUpt7A<*(>ywl?GA~#&Vn9&Z{M;TI6Z1?2b>J&VaZrr z=ynpmE#|xQhn`FWJ!HFP^gPu^EceOWDF3a~vvvN^(xc9KQ)!FI|10ZJ7ko|XGCv=O z=48lN#cZD2kv`}gZ9(Ug*Yi5i$JF;5w_Y1*kY6AB*A0f=+l5V#e$Iw%QLeu)df&3h zWmAkkG1pwK2Sp4x)b#2$C)N~xi1U)Yh>4pJ6Z;Vhw;~p9Lmb?JxOYEd;3{D+L~B$I zA8Xra+#Jsa@hr}b$P1#J0LlrVoB+xRd}u-Uv!Hv5nAc9{oMY{quFr?^xSUh<^OAka zzF-EqYW?Eq_GX~;Z5H-J^pQ^`Un=Ko()vB3Po=F|>kqUCh-RX3v?+~V$FsheM z8foki@m++*c7?_c*|+5FDri*mUwV5A`;+}EZM~=*pM_r~KiUpI`joI4)sJd()(z{# zbMzQ8c1?esnA2?ZqZ0)Us(u2uzRtVQo8X zIxp7042B-l@np(ZTaA~A`F$;rmrbFM{0jL|(nocEK~($K2c3t+yjdfiWg@189_xN| zpkwK({4RvvvBK6>KiU_)EqaU_tEX>@`LITM*IdixI#l!;{mU%K?KJ#n2>z4V+C#~< zu27oI)@!$=_h#7gdcA%4*0Fj&kB@IPk;il$=)eCNQu>9>k^E_VFWbh)uZVV{jp!yG$o7PMFVXKpyF@%7-fW)2 zeJqus&JQR5+a>0{#?YV3bz(5|Q=gV%!I0m$-(&^$1FFD0nM!>>G0GJaUUtx?<$NbK z!Z#cD#o_x+rUT!x0$;nKO?+w&$5$%@YbD*L4>3S>2=yTgG&Z9H5iF#i%HorO$dRz4VRD@pd z5YW3o%%wEa8*~gky;2`tz?<5A8qeVS>jj5q|1UA;(MZcgK?~Q(cabMB>b1E(N__n> z_@-e0_vn2!NDn6q+kq-#zt)&KT$Eo|_iH^W#$}B7R$Zgo(7^F+i@|pR@QvQXVKDek zw7~b^)q}%V_SvXEqWfw(^Aq_v(huri)A{!DT>FW_25Emu@>9e&8DkXdv46ehTeYz- z>`87%TURE=i=z09JpqRaybGyq(avtT@O(1Gx&5W*R-u<>^yKN|nX&Y26}bc>Jy%`D z1LPWu&Z(`#s6{-IvPiHrv++dtLB-S-|s!Q~7h!Zxam(?D|vK@KehHrm^Up zlD=mS-n~?Lw_NTA1i9HU9^w=IbitFXRO~}bYxUD-^Kv7xzb$Cp7gzV1;r^Q1mBZVA z;-LLL+`pZVeXD5i(?h^no*fdq4>Fzo#kzMijMK*Zx^vg@@ixu=89Td$#yZ5gfxI2m z`~1=UL$%LDzDSNQQh&)ObeH%@IWw$5byR&6+25r|Uz5jh&Ua#OvFQ5={_wNz!5`aK zjr_?AM(0oE-c6hz+r~&a8Ta4uY2!$*i!meWC+`OR75eiga>afQ7`Jj zyvB%+ij4F23jI>$@aGRBxD^`Y@Rpe4Wt2nhEY4TWcD1t<@`9*OjJHb}k~s4U544XY_Zh`QJV_LZcn;@OB($oIwVX|HeH%Ddw^Z-oLM{ zH_mqv|49z8Gd+iZUoL*-yV4U~us!eB@i*O<9~XY$`hWj^2HLM|@O1^q zc|lKli_o_)^5$amOO4lQeH6v832ehOY99_@pK@yZ+?ToaJ)h*6IntMrAEP$I1|Nog zQA>9M?H@io<8Z>-JR94PfpeO3?bw&8TssHCmCN@^Dn8pT`i@a{gZVpoGlafV4i00? z*#Ed6YeWO}!1W~Y4(GLE7@E1{l@vKK@Z!twmmU+=p=jlJYm z_jpTS&uYHY{mb|2(U#?IPUp{3J)fTE^-w>P&X&z*<@nx^!I-CIzHPnJdHmV>xmx{m zW_Dw*_1#GoQ@6kNo>3SIkwg5)9Y<)WZm2KdWVa-0z@13qR+)% zJ-JWXIgU6_*Wo-q5AFB!ZlX0+$HNvRI-MD`58iz(OMpWWXq%|l5#9F0*0CgafnLXX z$o0Hd{(S67^29mK*T8qk_WeLsvZiat{R}$9pnrqWBUxS|^l86dN4^XEbhPomxqs_p z{aB=ZY0%@}%n?$a(KKsv#90{Beo}nZE9fO3j@Za~E}U>}M@Mq-TsZ&Q{T(;q`_8!s zI!XfctR4OX=VW01NO9=Ma9%!q3-T8)qr6>^{W7$jf3|Etmr!hldO))lH>13eZIb!e zK)Z<9BJEnb(ynFH3ICJn)?9oPOdPax!{5R=(rP9LCJ@B)hUC{k$*N=}2cUg=|+^(4Wc6 zck2189wmPsKtD!n+jRP6JKD5kt;SoNeI2uRGts_Z&`x{QLk@b|snRQbF6G?S_>uZm zd07#g#{G{fFO?>0BfB7{ZAzcV z0sW-+0-BsKmjZnsoNXcOV=wad@z0UH{R(sW^okfTqNiPoo*tHZs_U5<{(b4&>%tDm z&Qv-Edme7f<>qwE5_Cl5F}U+^=`36`d88{b^CT{3m)YRp0kO3mw8-Q zgm!Am7b0yL<#Q-@V`5G}YOH#5}DtZHS9_zZ2)G^wQkqt)Ft-(fjJp7zHca)cd{zDRpW zqj8lBu!m2+U@n)fS8#a_l|A%_zT1Tjs`O=CAbpow(D%&cLrb4-KVn@4#Y4?{zm?Bt zlJT;Ge3%vwHNzJ)V+>(al}Eb%+;jP^)h1DU5NGQ%pl8nFLHJf_QEDV zLF2R)m#Q>I&dW>@G)8o>KXKB)mB1=9D-=gjF_eA&>_C)?8l!1rRbryqRQoQ}<3G}>4H+SAB*)P0uYQR>+v z-xWGeZ4}8z#&xZrS8KQW8Qamje7uSGxv1?O8%>)&-t^RXPMaFnS&ujA{X!SnI`wxM z&Qu%)Kfv>x_l2k&vU_(w&sRn{JQmT$lq~EO>w9$Hs?24cF6>A0OZL+`B)@3AWFLJ_ z;*(1omy7Tzm>Q)6I-i=;jJn*_uk(5-zZ&6>Cq(`$!k<3N;C#{h-kjg5ED>iO`uujx zUpp4I;oQk~oaxwwb0vHHt+yq6TCZSg-&bQV{&Ddun!g9cIh`~YPM>Q=>si(H^0Z%# zy1xuZ@ML z_ul@QD0%R?tcc%wKhNc%#f*?K)=~`l{#cSHG)AEJ&CK`#erfyw?}#5QIzQ%V{J2!u z81aMV+-v+WSp&U8pR*eZ@YosDZ*BWUh30m^eVpV6MZgbES(jj&FM@LbZUM|&2UQ~xC68Ny%p|Kxux=G#0ebcFD= zOFBfqsOu(cT0R+RPRrKM#?k_u`k5<@wWop7b3*8Z89mJkJxdI-nG#J8Z^Pg-4~-oV zJ&;L0uDSsFvNK-`?{t0^V{I?1`TL~k`~m43jf+WHNnP6n{OAmTI-MSE|9*WBW?HMU zGQ~s&nC~%G#TmLsem+{Cnq+&Y;VbjAwz9~0e`^@)`!u}ydh#ZfhCcLf(Ed-@0LjhF z|E=l6KU5@}@By+*5%Z0P(*F%qA8!@*V5W~Limx#0iY$leal+>denCW@(THjI7JT(l1CYmPHvs11E-7(de*zIEcch>p|v zK0}=6Zbe?<)i3eqpf~Q{UXOmb_1IC7nBOv4v5#@wK7b41V~;-5HyO29#FNtQ<-9K~ z{~`32_(-v!%zrcyo}d9|rT0JoF)WJb`nskM#QYzpoJ{lDzJ4|tU2l{WrP5?}(Tp+y@j zmBHvX=$J`cx;qe*H_>)O#cpi1jjfg;U=51fuuHc?&5%jNG+5L@G!6m6kbsSrvT>Jg zV+%E+c7wIw7r$yZcC93Ubq2JJEo~lOe#|lGoJay=LT~_g54?K^|``wJ06_*###j(Lwb^YcN(-`T?FWxLwr z@5~H3%5y_wYgdZBM*K~_5ApY=V@CTMTrUgVfweNiGM4yD;}vR0*|z9UOP?9wds}3C znkQA!doXV(h-livbu?B+og+_V%Q3RdhdMay5wXkMmUQ36)^VIKB#-3_LY7kwtYgcE zT6xLR+Nsdz+N&sEI|NdPeP3Z~1O>>AC>Xk5_`UtvSBPg9vu9IIN> z&Gxk{JB9(_55{;vjz^QN4dATv>>54qQH+8#~bckB^<<8mZ$S7w<}=;A5R0v*MMUoaI6B3I^bx< z{cBrrw)IlTCOl)o;od&Px0NL)9P?cow@a+#kBfk@lFfJVp0a|CnDhP^bKci$e* z68#bJatRw#;e0X1;g#Cf;a`X`3_tr|>iW9yGwFtPg8NAsOE!U#6r)s~6 z=4&US)3lGl#*zB?mp+F5X0jm zzQMCj*A}gd-|0cVQfb<8HpG;ZLwfKJ9}klKddz1&)STJLzm-@QqjrRpu9);cK zzb<{lnxBI^@wjhbZZz%{qpc`EsvP5iLY%|*YXi|@%~L;1E3GfYx%Hs7sD7?iU$1MP zX#7%7tyg;!ao{9kz@_V^YF}HIudRaLx58I0jm3X|X{{gQU%C%6ZMJPTEN`;Ex&LAQ zAm*obA6O1M&k{cHmf)}CJ)eIXynpSeyRE+|&K1R!txt8I7sg-Amj;GC;+bSu>R+(# zBlwPaDR?>KGlmUUnE0+G&W`Vr>to?~q2TyYZtoDyH^}~ECrb{L+GDZuo9s_<$F=`E z$$3QhRsXl`Ec!o@OX%qTj`8OhW3V&t|J3@2Wqe8d5&WDC?fY#I{ztgv__80k;2(S~ zhMkMaJiZKxGiQ8!qt7nYt{b}L51fC9M;H$kV0?q|5BkzS4RLHWihqkz(9yQ0R2>oh zAZtII*STr|##88bue@GsMh?@ZS9OoH;61yZZn7Q5VaZwA)+pj(6gfL-ueK>YRojhz z_&EG>TJNK3ZIEJKS;z-}me1F;X_#}2ssrzfb2R#o)i?Vq-qm}RjD?&xTW}7M?^%&; zcQL(l3U>g%M_XOE3$~gme2~_prM(BY?F}+}!$$lZ($`ZI!*Pd%BPU}PY{2?|aR#Xr zXOP|+wAdT#jCk)a;@bUblfB``lrs-~P5qi08v`51r)hUYVb@rtSRcsK#&v7RRq<-$ zQd70hU~F?mJ>>)AeZ@nFi|c~OF+*GQ7Mkb!*^uU9FS5}}+%+ZlspWo!v?2BN&tXkY z_9rs8jrRB76MjKFrS)x@=bs|{zvuXqjBiFifB#=NeqF7%jd`y*B=t`tN9~s5CvTwV zQa?Y4-|zSle;)mf)<%3-|7L5KSjU!Y?xnp(8Or%2d3lJ1gUB;e@8kaOJNVi-^RfA& z&8_zc(700!EO!=!*51(YV4#CD`U)Veio2Px+vGgpPFPi&@#7ODz zwsYjUV_i7E6fS6n|9wl%dBRuy5PZHkBKP{jU#!Hr?2-ue-Q4EKnNP+>N{_`y79Ep* z{N9Nf>6)z4`(FQ()$ZX**I-_IVwn1o8%^Ie!R}2S+7qNbmgno5JX_O0ILu>I6YiR# zJ##uAOa1hXf8a9nvgDrNb4fh^FrI%Hm<|KeVcfVw_%u{+;FYl_Gy7vpK2H|T>xGPGp zc(V2o^R<>M$8ZUe)snwS#U&6fVj(-y|4r}|>o<+ko9>f=X z$~~pWyq+1uQBUdmTmQ^sf6qzmL2X>TYU$HPT;D~1JMsi#zVJ`Tod1&X{iFCEUWmBg z5R7>c_i-nExV>>z`1{*eg@1Bz73E)s|NVtk?tOhhAbJx0IDBS-Z9F^IJfAopPskAe z75_?(8vMKJKj6=g8~j5qdH7SW)hhnoFeeiJ;#Up+T{n%zS||5r+;{sQGjs11!6EYb zTE)G7!M%a>Cz9^md*%0b?s-yUaXvr<9u6`)blytPL6B{^7qcKzS0NI**WIvlyM{xj5D5XXuhTxg!Ukx5H?%8-Y@Sn!_9g1gr4W9k`i{RLyRpIBe!B0BZ z{`FM&`%h%#T1;^5HpMj_Z)yHiZsyy0nfZpeaE#&{@#$}(u?WRG)@OrnmOBfGgWy>o z_F*Z`g|E8=@60}~))m5Eyp?ed?Kte!>eqQNCVX#@^8#^;t@W&6>vUSE8h5YJ-}tzB zjmT}W<|j~Fc7cQYv@KWB-o+-|9{?0$KYv~k<^)4q-{STpK48ugm`Y=4#KO{d`Ext9 zN2m^4b7=Bl?^u)8$DzUww@AeQSF7^YgWX zQ7!l#mG}REXDjADJl~wg`p@+9a)kAA@D?#PxMzpK5sIBj+)tq5AI^H*@dM6HvI*T= zTkT=o9H#a2@E?CxCpjwPTMh0o4C8ahi-z2H6!)q)_i#ra@hmL(r)i5*#6kBM*B|%JAuCF$Wmadk&i0xV^}CvRU^V+|G_paycJ{@iB3fxJdmmjXUX{T;dbW!*2bZ zVfUNqZ(?3X^O76I^GJ7d|N5@bIZw??Mm<*@@?qY9^)9xq8OD1WPPOL6*5uI_-T180 zPIPBd3}Y4Y=iAI<7B#nZjt>blt@jar@Y907hvARZ-YWP`ymR0`z@P8HpW-$f3x2}Q z+8X)ga&Gn3UISMQxHPnNF>FM(;c+1IUc_24my+{avd4lk+C#-NjNjzgIegVKwc(Pq z@jgWHJ~HA8*^K5YWJlu76!2!|I|g59juM`9EyimnhiOc<`H1md81|*OMrUIPQj%^s+k#>QsW z*tD;M$0iwzs@eFgeptq$u%{mVsApJ?(_ZN|IPtQGNyUja79;pr>qXHwSkKH*tnU$h z-=l~H#D}#;Oz=cUxlcs#0sWie1I?ez`3U0um<`Zswc-OQ?$oOCxJ3V0H!;_2;Cr9FH>{Q6c zPF4=Q_=Frg!3WSMRkQvHb13vp!~-ul5cPO)-&-_T1OEu)v+t({4_>wN;O7OXmzf8> zf(M&;`=jsR^YgLtL5-ntE>p%#zJ|5OIDba*L9BsMOrW!z7YhHScD@ZU!QM~r*)IF( z8R(~RCpmlpV@TdlW6jCy*$O*62Rrb2NR0>YEXQZh9>W%No=EmhYdrU*pMJxgJ2xHT z-04-ZWFR^E99^!B$o`gMG5ij9Jn^%fne5%}-y~vjwK@LU*0bQBxTogwA+MH=HOQQF z9>xH9+BWRBK9Bv@7qHHI5Pp3Kb8#9AEy2HP4;9^lwLfS58Eh}xNwyLBCbb3avG~MZ zmU->*o5G){eL~8PiQs(XxGw!~ZpU(4AD?@W+cBory6aPTE_;6po@-n4ZW8MpWg+a3 z1>bs`&jsR$sTKJBPi;m!uEyW;#a^P0K2Ou$gk4T1u?JNjgda@RRz<^DSB!t@(psFW zNYS__{L9Z`y=nk^wI1wE4FqRleYb+vArVL98gu;Po?7ZZX`D7AC;EB(OJf$x+N1Ob z&D>tJHywM(UHm(c9_+Tx*CUUzSo<>LHNjj3I%eWGj& ziAM`n@bTBE`;BBPnSU?tOJeaOh`mINVK7#I4*QJ*(OKAkp!TEvLrrVNe#M*M^hxmf z(sl7KUs@}C0d@KFsXuaGTj$@K*PCd(K^%A6zj|8mk!%%2j3N0U8Z#Z)Hfqix;c`2N zv%HVnm(Q1swWBFw9#Wy~dwTm`dHVtGn^u3020wu@`-cDGxQcE5 zJX@RxGI+B!nc1J^z6#AhaBnvA(@QZA{2KgmAV~g5K5C3t$xr#6VHxI0{w5JCZ|1(o zRH^;ARv=H+(r$4d&!WMtX9=ipn zZa2-jjrhZPbkl3@_IOX6)iLam(Ld0}oIf!Oe~fbvR?a+$b$jdmRJQ(=$)k9}=RQD9 z`varkm;GcI@1>A^rTuIsCo^}$>GmNJ*GGKe|*BslK##1vM zwcdvIGWQkKhUD+mwz3`Te`CZ*U9@92;WOpM(wud)TphQ5WA^`ZZ^PHcIUU0<&i=k8 z;_pguSK^kK&9SXl#5U?P8Mk4Z`-P9%`v!_R_?0!@^K-b%#s0RV|L+?!UsZhTAEV#w5SY#5D~e}g%yi0l z=GMQN@jfVg%?)q;|8;No8UJL9;2ebcGPrH1LDIe`7gNahPVD_?(II~ z|C~PF=m&)NjQKCP?8<+!_ib%aj$wVm znD2c+?M?H1SS2)w=h3>xbC}!G`l{O<9)y|hzR|Hxi7G+l=84?P9(j(L>CgAj66}7{ zd!BP|zw`F-_9Iz57u6w)&s9Cv{VA!h)@IlD{kea6kJux(x8d#LjFF-5R)JlvV+(F& z&^Pa|r0;nd^!>qq+U+|wedYR(+y2Np!DHfq+#m4)*I4FdZoYk!ID2Ea^?N@Xb9_AI zdWLyTR<7Bz^;oQB5#MQT;~Bw4!i971I$APROt>uTu$l9F+^~I9?6KRiUFg7e=K153 zwEM2g^K33XiubGZfAVv)mwaS#_^FRx86n@C`i0zD$_MjdpR$4g;ZuW86rUJA34A*7 z>BgrQpMHFb@zL>_$o9y$;XX>*CoT(3Vt3CRQor*%KVDG3<9$hp2S$0M<>L1o^?f$> z-p&pMPj~-@ zIB;C7=Sjb@#`i=C?rI+1y4w=V)Op6z7wmjJ_5O_xeqj%Wox97le?vM@erBPz2*>X3 zyNb@$9>qI#UY_MeTi+F?GpkR1p{aIi*$ZgveXOl_q5V4W*@RCFpVj!FptcO35I#5K zQ;yGEe7f*!r~be2-nZeRB@eg-R1esioF zKTl$9`J31-{QP!ye@T>m4>i?3j5R-IEdKrai@bfz{#|jF{{7gGEnHCN%s#!>&V@7g zZ@O<_Eck{5|IGM8XNm8J&$#2e<+=A4pWJt#JCn_QkK2CB6cbLl-%>+3&vL(IUza=9 zrQIB>dA%0;p4I)NV`dtCTwhfckK5a-oDEn%ZZ;RAQ+Ed8zGEd5R5d$PlA82@4% zChmo)AO4}p;lo)=oD(w6uHEts#}iZY_C+i=6?V6s*Q~CizLJl{aV}e`e^C0Ye6W*O9;~?2wo{e|~=aO?w zXJMBMPD^{rv&59=az`iUhds|@To<=zu{uk9sxuvBA9QHewci33(mgVQc z=zIaq2b2w29y^jq6FEj_<-N!ip?u3VKjz%(LvBF$`|YbXeAD2~3-mX0o+V_ie8~8Io5&}q z*meN9Zr~N(<4O6uJilZ@hO=x1fw;&kSc3T;@k!)Z@_FB6#w>7&^Uak{$d@$ugnV7( zo0$7T%AZtx`qUf9t(+a{KrSZni1yIRGiZsuFyRk~i}656>m zW0##vi&A*@sQKZNN5r8gvduXsWg*2U>aW13lxaNeman_gv{&htuWRSisq%GiS|M{z z%=x;{Ir4Q&yG;4I;L%P0Z1BV_U-uJhjqhc?u7yXIT-~v8Nv>~Hn%5DK!^pYhS7#T;}Mko;jR+O13y(BZokOG-NCsOl6cXl z2k-CT^3e{b%*P$t$#KiFqvhjXE#&excFD&@?wvUv%JB-tI>}AqV?FKbn8qqE{+nU@ z5UqW(oLru-^UU`+7JI(Vt^dmFMAg`@K85Gl#(n185bj@;uk&f#6+-PS^L0M+4Wm8G z`8pwtM<`#1a&#zXhw^nOZ-?%FGUw}5V9Y`}I+U|RIXcD2+c{O9PPrKGiLr`mKk9ER z`8qjhS-xC~GS=}+Ci~L4Zkg{(c@%dDpCZhLefhcfTc61pZ}g49oF{ z%;VYj1HbScJ0Ix0^!#lZ@PGfz@yGtB;TJK_6@PmM{7;=Z{>1+@{KB_g@r&F=2mhZu zbNn$nKQPAij1PqW!k1m~Z_UvD9cPX|@d4qdct`O!wEeGh9^vYQyKR2)J#HIgy>M*% z`&kdG)|)!@QmOy;V|!S=!E4o_ctON-7$PjU@+pJnIC9&3F=Lf#;^Ud;7e%<%7ZVoZz$>Pv=?SsejxZ&y4pGkE{O+KHKA0 zC(Qv)Gk)!9cE@mg>zVt%2WPkFe(s>QsWeN=E~Gt*EOsW2&PiP^&b1li1JfBcjDgB% z9E5UImY=EP=k4fsdFBo!unxrkbB>qX&NIvNZhM69knJkfIuM_iKmC~576lmp@caI5 z+B{}{hJ^m1Zt&_<=iTVOg3Iy#5IXNhHp6=~N|!L3-G_T=n@j0D7|qLR3@Y;Th5QKa zYBBa{5R=rsszw{Rr!2vLBIi6Iwsw>y=nP!ru0U!vDyw=Jhn1gXFGvx9gKFcDs&!{ivVC z!R_o0YaT-~pZ_g3ads9sTO&AIC^&nw;u_~0@mE)WBmb^7@%L0Z^7SdPUWvL?|M>c8 zX8xXPy=n~h-Yz)lX73H_-0eMk!Anej*wolMkT1<+-4-oL|04_$9Tijxiv}6Y|j*^(@aX=ZbxE`}*;d>p3sX`$=>r zYm_}D&g)Um@04 zc9rJ|;~UVfV_biCTYLQU1MV1KTgNdPI; ze38rXS%S|Be6GjmQG8~JpI75w51X4TQTaaOZTUbGZ23MokA`(-Bi|>>mhXe%H@?rD z?=#Mn?}Nvi=01FUW!?{G<4c^6B;MNlUD~r%=bv`@h`)B zlc>M-YOAk|YLBrzp}}g(6M7*0)E7FCBlM!m5h{ksLilvzlfb7NpC~>x_;lkF!w3I` z_=oyap66ryUJ#(ZI)8+}dx3I$_;=j?=#SA~o{04^Ol2XS&lOqMBYx-kUYpl-iQkdW zRf6*CJH+qVBF88$e$T?WROAP(ZxX*x&_eh;jzjqW^|@{rw!2a?X1oRl1~`LGqA z+<(e*>_6qEa0b?LXB^?P=I=W8jL_EneZq8Rl;&1HxZfSajSq4R#(J(p7T4QjJ)a`= z^*Qu?67L1J-p}XM_qkE>jk&%jR=exFS)55S^mWJ@Ro~*jlD;=)(D&W%+U)eAp6Mf%paM$<22kiD8o4zuhXjs3q z#1q698BfBK=Hb5jc|$apc~|g`-epJYel$jtKd% zeSSuGrTkZb`9>ul?=iWB%PwYe7YWSO);R1E&&={pEao!IITN>jWo&ZY^i^k?ugj0f zH3YUsfcy{1MS9O~_=aoP`BR4Piwp6tn3L=sc4Wt!fb$Namq$Bvw?}*G?pfOXwI1z1 z@$V7r`ISdjz5c|_;pcPfR=qy)7JBzyi0;Iuu?OA5i#~AG>(#f+5I8!8eW07=eZWp0 z+HB{g*0J_q?-#!NtGJEN24DSO0iV%EZy4hb8f#)rQ}Tv<@5M!2|M0=@V6Ei|jQMaT z74O!$=Bxbgoa>8ReBEZ_9BY58&M%h?sT>wI#x<=0hHtnwLhoZ>+_`RgM82Ps#>ZC+ zy*%1W;L0JqSNSuM@Xrguhc!1-e%PwlpSsyRfAwfHmp&hf&^NXVV{RD(3j4 zI6vC`x}-Cm#}<3qw08W>kmN(^?(i?mq4(vH@PFS4E;quy+qwRTr&r&`%h7x)4>1ML z%aDU+(^KW3W#BX3QKxjr`%UP*fMzaG`>Xzg_<(!_$%j(t|HFk`uR^>l#OJ9`hBVJ` z_~%#Re&A|gFgQ}9%^0die-ZxWe8!iEz|(yeK5Dit2Le)%oo zg8MLE>0q%J`&}gqaMoAX_9su^u8Z!DyMma*%r4iquCKsd;W%GBo8HfabFO&T>Y_Bw zM=6hn&IaR*?NFgMUgR_7)|%h>{oMUrj|GsUYg${<|9gD<(vb?{;1YY1{C1AB!;mL)<1i)0!}JPh&4E7)1N( z+SYVAV)Dnn&HG#GqcLVcAN^diTpPf>`Smy}y%qU3Pa<~o0Q;iklm?DZloe;ZdB6SI zO80*IoAta7cqQ)TskgMv6WLAH{?LX;tq+;sr;7Les`q0e_lEE-0=^Ki-6-^sV-EZc z=auV&kC}8g_IpCJZ^e5HE*5pr7M9$^XQEv9grR#1`narjna`+~g)T>%`m`DKG=KKv zJ;}v*ulX#zhaiaeKj>O%isa?sJ_}8|W*v>saA!Jx{%I@+?>5I7b^LtEkfz->gt5q} zp2s<$=BmUW4bKk+eYSUU(BJuo^gH+cIr~`O*>a8_=ltVbd>{^-IzA$rZ^fz zAF5+qP>!4!K5i);vd5NF#oPB=-l?8J7s5cemJlfKx@F%~HwX%Jib{4;cf1kwf z9r!nQ^G=<9UxVN8!@o;6?aY_oKY`z6`P?=9*=sh@v$?!G@b8nGb`}EL4VOpuCf^Qw zv?UPkjmv%h<^x7O|~K3o?*mPDDH4P1{qnsT7aIOsP) zOEq~ldhX)d@!Gzoo%x6BvbCl0@UhjkJAHT6qFg-u(e1T63lG`;P zaac#-ZNhWhc^jB*Y;Oa?PO?*5NcQQL=k4*mAniwaG1rIv**zW{>vsj#`v@z}HnrYJ z?H)a$?mwXoar!UBKZZZRcj|GkZlL4;s(v9=~>~CfgxH`3O#h7WCrHfUTt2<^;&6(u6au4Y6EjH z_L(zF+d2np1#|q`qB(_H>72{88FR31GDp*%#T_t9*!w8?x`%Zyj@EL@Kh&V-Y7v@q z`!{{4vGlW;8~0_=*(gkvwd>a5E=a7&e;x1G{LPVa?d0t6y$2&#e3Iwu|7oOQZW!+t z?R{=_aB1I!a?5=D9VncEYK9N zzf%x+A&+p;d(Ee(@=*3=CD*#wOZyM;Jc+F?H3emRRoSJH@K=|abSUsI%ahpVr9OnR zud1>$?d{;#^CY(E$q%D!pDJr_hxVeW3fsceg(%yv%Fd63zqr7xLm+v9#I`?qBg!69 zWgYen?7l!^8%cczWs|CG%4XjJf9wK@Z6tXS%D!Wiwb{4bzvKdiE%gzU9aLp=Eqm#( zZ&C09*=}{I`6zo-m0fDLZ(y>*HZS!#lufI$Gwt>b^q()WO;3InWsj?}cKa6icbzY> zElmAA%4&)`^KJHR_cxs{vF*p2VKkVd$~x>@bldq7+eqqal=Z5zDZ70G#pla*8%Y+S z>|~>?-M)bw0~`DtcRQ%ExiUjqwG{wcB#$2?fxC-No?~{A4S=GRd%M` zzD3dVB(~|v0Lo5NWgYen+{7dZ0}CcgZ1YmnP&TN_&a~OL!0%JorYAp!vU62gyM5dJM<+>a3sav)SzVQ#Z?|tz z&m@U$fAVip_Ig#;Vc)=}NfO&g>hDmtT$N4P?Hj0>B(aSo>AsN#Mp>JE3;fqllI=D< zH5+9sRM}jcecS!{3R_)j4$9uF$}Y9rx9FXT65G5~3CdQgvNP@W4RlYG*rq4vqU>#| zti!&6M<+^b3scviY)F-zZ?kWKzj~s?wm*3-$}Ul5?e=Z=&z&gSZ6q}hWvf-$l-<5X zc?#PI#s|^hGNY{BzJWuz3R|iaWouN~T)TY(UAYolU8)RaSE#Z}ZT2njug#U%=B2Jf z*{~`*(`Mgxe<)XCo1VNLWouPghkc7?<;r$jn3|5VO{(mCyL|&*g>65^CDGtoRn}qO zz#CqPZ6q}VWn-#r%4XjJf2UVs8%bVB-AcwnLS*+qb~~>I8{xVd@H$-J#0P zx7oMd-!VaA+n@X!l$*Vw{M_gg2XnG{5Z;X8D;JE4O~7! zw%hd7r6?PIK3n8S782}^@w(Woy=J0 zj+5=YFopA}!L>@4`8Hk_`12IT{mE>Ujj6H@UiuH^NQ@(?9F%=jl}*`r*|FF}w#2wFbw0`eZh?^RuyddzyG8#S z#`FEj-QW?Izpu87crN(*dB`xy53I}%6}FMottk7BDx0$L zxge1ANNgj?ub}LpQPytXz;2Jimij8n9#v&?ZG6W3&m*zbr52)WT9sXD<1^-e9*J#U zDulAfRoR(#`xXT~vfZX9m!PaSTh7}Z_6p-%xG0_P@mQgE=zk&pIoCg&>mSbb59j)abNvGa#dG}wvjY7u#6Rcy zhjabIx&Gl?|8TBh-$bKmhwac+Os7iBU?&%Y^NAs7TPsoUtRd4*|;|*ceW4tqf6 zJVeS)wCdUHe6TuGMfb<%JjilMKRF4{Ub$gs<&}8mp(dFRN;#k` zAM~Xol-Jor-y=cU>vc26wnyLPs&?O0WKvRNf*T9 zX=C`v?z(x}LTdY-|4oH4SaAX?002?grDedy%WUF^zbU@t!#9-%gCQ z&Fk;DoyCY=bG|LRhu;_v%6LRMw(@>0+;m(*xw3SZG3CoXhy2)~S9l(380Q6F>*YUt zwdYZ$eLcU6jegcb@rSB{cQo_w*Jf*ZBO^Y@r|`_~uau4^4}HrkbZ<|0GJ|=b6L30iq2Icm%w&k7b=+TW3T_4G1RB~ z01!{{xex7j9o~0dfLw)wAs;@4_{h5gbo^Y7PX#`e_=L2AbxXACHkk0>@m77zcj8go z(X+yrEMff#y@!Qx(*1tGw_)8s@%z3gH<$9mai0q?KgZrjjkZ35cmLEu-VyP<5FUjO z?l&I(E$(to1nHhJk~#AmQck;n_ei6j)J{gzcn7tH{(#`Ht$F@iXTe;4D#~9nqtpK{Z^f0E(^g_!CgjtVLoTJ zhuME9ru><5+cDmuGTq->9qbYQ_zL;s2JVmf+Pr$Ld`%thjMH%;#eyu{13=I5;;i>H ztqyn25qGzWJ7@X5hmgm8-ot(h;s5v;_X$vZ>lzt2W*%pSFZp(@H!BpBe#Gx??=PXd z1ZaFlK1DuM58VcS&UNGdT(B;D$+zHVwY6GSK?#2rf1WQp6#StmYvlVszuv1I#9g|P z+H!4iuxI4?jp>nt>p%U66E`5w208kX;3w8``Ce`JFv(b+QAXGzFD<(N_3H%f(UJIGI$d_qg z_N3z)$8o=o6)QN-=24%Ra`Fa>rD5pXcWmT_LhZ-N@Gq~gL(B|Dj`CPZ zSau(4&~x~^M|eM(i(0n+(HQ^xW>a5Ha_KG_x+90~qMZV0=0B zoQh>ysOF(6+^xF}^U=l0<-gQMIUNQcR>#6mdU<-d$e+t5ppgQ_Gz0Z_0gv%f=v%Kq`M)mWvU3=61{E&OVQJ^;0dD6?;L zf^!Qp+t~*>ny1dDPnqIR7W^RwpY=jcc;GHKeHfp6exjA5jF98B^JK`W0j>mWoDW%< z>|6sm`JU-Qj?>O0CkkAJkkLJgo%125(6dmqm(-_9;UYP)hs%b7kkdDCw~IcU&)q-P z%27t>BkgSX*Wkd?U;?-(Zj>`z?(w1;a>^Ah>0gGOD=$d|JAtbbGV%^&wsRijRC?+% z`a8+#ez`C%C7nElozwq;IOdV@Q0b%WOtvkLH4F_xUitvVLx(=h z&I!mFRJfdW*0Qz)D}gKT;L=h1!E(savZlN8*>{lJxf;0kLa#i?bjDR~=fNLp<#}0k zLXOnO=r5>#I98SRK}PXG>M!i=&g~qB9AB2?q1DdCsH-201e<`1`a{k`d;i7xtV2$* z!sTw~IB@A?r-Pa8oZO|A>sd4pBOY4yAsu#sHyyFP!xfNI1KnKwi^Yu?UGb|!s#fU5>FJ4Uf{|Gy*tWZC`87`G6o``}+u z$mxb|F8;;GbC45NxTHSZPy4{180selE{cgR?augI3^_4{OZFGszsSy{Pa3!qke6n5 zc8||}|AzRJHDco-*T;K^^Vz%ZK$_%rLY7k>Zs#cEbShj@A3kpBMm^u5#lie_oQEXK z*krxAa$WZbaoBkdDhhjA3-ltVWceVCoY zkkhYlS@}GOy3z5GV7b7R!M_-veULM#a7q8-b`A?WR}wDRM$2{`x3FDFCXf5z_ww5>)NYa{fqHAA98%z(*=K= zb|&9!0>kC=-T#XClbzYWNKSlR+prEfy{z5s{W~8&S3{1ja7q8-akT<<`wy)O zb_iTNZrI~0=W`z9R480dJ5${*;0i(J;3#(P+KKp+ZTBxD&Xb%T_*V_&Xm7d2dCun$ z?=4sVVtnrW0pd@#Jfjxy>9O?`9uP;T;e?Ab0y>?6fUU`j~kt+*M;$u_YrgdWgj1MK5LNEsc=dEGVDxx zfn zVB4U;#p9tnpVQw*{86~1e~ET~i^u13;G+5EAmlpZ80T{Wat2l0u<9dmRX$Rc)^fmS zHt)9U!|hxSIa-d48&x81a69LrZVxzIEpYvg#d(K+F*^@Fh4_;rPxJX_U z^4K^W@~mrYJVvjEtf;azZ+odvj4+^H61L{J?EcRATnrhpoP~^kgAX0RI%Wgg-zQ9o z-@eTBNk39HL^2W?_2IUD^?Qgx3LCez)Q9SmKHl}1gE2WXZRu$h^shYBuLiE*+jlZsW#V%Ua8XRHVRB$+TAR1rh0f!~ZID$nZoefaQamM} zr#gM>_om5jqfE|ByPvZ0h8HrT%GaJGJTTk+tM+};Bg*ycJ380 zTkmK?3{u#5+sn8?dL<&Rbk(YS1o z$w9l5KGydXFk5eetU-m1`+^w7p*Z3Eb-ex`LKY=V@doWRs}1bZ>cKEVkuGW%2m z7wMA+dCb2^AIlyF=kq&T5QE0c7{qzG3B$PP(98{LwbnW-jrN**MvX_%nW?XfN_F zgFm4O?aV$MkCw6as$lkU^)JTfwUAYzuyK8)zlTU4_*ECMksrX_RM?#QkRJJuVGhRR*!AIjE`$tx@5-O92_pVH*1-7F%jAGR#AoYX zF6`4%`tnA^pYgJ9cIwlQ`oYI!Jap*8Y#fG+euasRGgW)_On8Cuxg3}VA&c|JRUgLZ zX^=Ij_`~^Z=8rZ3@#it{2Y52^xu*s3XM*8hW`FM!{$Bl9*-##2aesHyhueA?WaUke zvBRp55A~T{fsK65sSl4C`H!)#m)8M?y6^il2Aba*?DKfpx#R7icC{>At_8L}!S z$Tbcpe?q9=_1NBFcmLux?usM+OfdY*++N8E9Za7d;a@cw_2IU@4YFz!HkbH=`hCF0 z^|8mFc4lKQWJFE;F~^_eVG)189~OU@KAGe5j>i#yCTz(V4@r;oV-4v9ljG2b*|-ui z5(-n9rGHP0`0Q=YV*P0+lLJ4c_Hr3-9B)Sa$-tj()TMg)%^CT_VnzpKbWeCzU?P2t zco;mw<6&WQ8`f#1zq{(gY`p-odKEV3c%vUOg22Yx3wE}~FvjQfV~9Tv{uuKMTJJ4y z#y;$kyMlwvJ~Qp(US{V66j_71mm2l!I~d35H%W&Y0W9D|$+uRU&9=ciq0_Ymax z-l6%aT^}AZf{+tZxSVz-Y(2nL>|GVCfh^~Ina7R(M-Y3wvM-hMQ>&f(nz8={8Tu%8 zZi1Ysw@&#NZ!e?WX)QF_T$PSNPW3yqPU~oQ#^++li78x?&&EDc6V}z!dw$6Wi?{GKdbV8?0 z^X@{(=~lR;KHN|H1b+%2&q|YCy$qK_AI9h27-EmIv*fd3=ULDv_;^*iA2J4+o$dVL zbCfXT^m|8a{?7HudsnRgJboZe@&;Y?;r*Zwat0MHsgGf2YWGUu3ckBIsO5@rf@O@r z`P}m`;!my||49Eb+MVQ7KaTMaWR$;4c6RhTEN;|54$6qQ;jT{@?e2q|O6cU`U(C+= zkmJjpo{`VgPEEj7^X{r(F~jA~=kA9Pe{${q#qC__<#vug-p2M*bSB5%UvN8DLyn%C z*}v%AR|nd?0y1jg^G^TbcFu#G3WdwbXR>n_aCO7RA*PSRznGo79z^`f%^b%_PS4|2 zLp6}mH;SD@kW-VJ*}q6mAN(r{IfJa-9s01i;f0*2!X^FdGSy#DdnJL(`@5yV7{g`v zFK*|~wTM58KV>3r82&|a(%?@5G75i}+0K=algPFEmsKBc9OpA3ryM#t`%@mDHOT2y zxTHRuKh?kE{K=2=xY5mU*?Gw4gB{;R{89XI_picuRk{~4nttc%U(C)GkkgyHU-*Ue zuQFz5I#bz?`oZ|#bmDgz`%~5rrXN83QMjZ&M%*A-<-j!vd0oFFKehWi=W_yb1|9xo z*qO#rmGQP=Z6fxUnVlW}#rRwfIod>f{NZ*^3OiTF%Z8}^^B~Jb9~L(T*C75(lySr9 zUsOK~Tt3Lqe(%~}FgwQ~$2ZaLU);_lqZsv@;#EWWzaQPsI^>|Nh=)=i!_Fit9&Z@Z zAusrQva{X4xSf+th(8LKbDU6t`W?Vk`TM(rB-6Rh#`zqBoQjE(KUO}6f4_{??E-&7 zWFNNvH2_8E2Asu?a=Nia~K_?e|n4SB-gZQIxS@}%QkD`7baCN}W9M??y zIGpjh338$n?QzVobKb`hf8u+GW02P~ik*ugCzhezNgtAvM!P2 zhO(hv$kCybQy(6md+$g5QMhQ`##pBf4Zc{?kNQF2B6*xY@b?VsNGl+#Uva34VU+7O zRDTe%$~Rm z<|=upOE{{5ZM1dK8pz0-B>h72*=px7F!>;FklERt&-sw!nO(y!Uv&)3jml z@a532nBiLLI)3iH5AkQxv#P%^uS*oa_e6<~y73KdX=*FJF9Us?>o&~ROCU>E_TgNV z?M3TJ6_C{d`%rzSzw>@D4>C|r@LAf2w^!wReBGuCe5Uznh~aY8hsBOv4TwRL_FKk? zRFB%L26cNj@HGjp&wTqlm&J_`WYj23(ocE66Bl;w116FiW%{`HgI>sqPLez|A+j%xVPthO;Wo&Vtx0m(@jw`>Vfvv5QOwy+tGOcSaJa%l0A_ghn;G8z|rx*1K zTQd1O?*}U&qgUaQ{b?EV_rgEC#Mb?Sz(w=Ie#pzPPsI3qv<~q{`G!@WLBat0mbbJq zSphT>_ydi*?cUlkOtHqcK6gBVyuHbF7QdD}p}G~Q+d({GamL}- z{vDA<9c65NCdV@P2fo(W1uP^hlu?iNqMIYldPw21@`LKupl%QFa6Ohf;%`o*MX#B> z(546Xox(r%lu%6RYbhIwLQdwsvOTb)wpEW#ma)aE2gx9wCR^HuV+@N!5C3ho4SG!B zptXC`-r*nl-cK4hNLGT$nCZ6H>(8le)Dx3syyYCBIuvg^QIGWSZsal7g&#$`?rqjP zO*}R4$;bcr0`uMcja5V4kVW=&-_yYRI`3`KyA_@?W?wTudQrb{Bie<U z-KY;L9ON&?o@M%vPn1yIO5h-FXy=Ksi^E^qiza^?_sg6o`Of2zvEq!U})AU$k-*OHa3y6?Q{LJsGtv}^fM zF=hcC%4aKPx;X8cx3WRUcNV)!EQBKtn-V6S)py#oJKU)2=hcb&GLBWT{y~m$IyPdR z2KD1?J=GD%ik5|&^$LZ9+f(-CO-Fg3*99E3#v5XKz^34u-L6x^EqcggS6Y*mSZYwO z2R3ExlYyr%e5+NjId4SS)69>qqdzO5`B2}+1B@S0rU&dvdRWf*6!@2Yt3i({JXU|9 z=f_Ytnb}|b)4tWH#}p1an_sEeL{E3fYgPY2R=*)LN(*sz@Uo3vt?qBiEM!jF*aq2;J z%7JH)$*}9uUUd04oAp73ql)&_j6K;uJyAk=E|tK+;>YG3t`;O^P4$?c;g>tN+}n7oTtO7qw@e{uA%_VIm`YZMNthtWqxQMV5`LVsRt%>8T}E&iuQ z9p!9e7-L*W>)uIlBL-RFKhwC-$yhTqa zEZkRQ-_r4C-nV!+V?F~JB+o^Uz^vu1dgu9d0t>|tV-LFf&u{Ya$L6Xbs^1Mc?sJC% z{~I+8diVKtg6~`xY7^oqaiSM>3pZzqAMO6NHH~_&!cxWbkyr)=mLRb7D=bTGW6SoU zU`?~$f4&?Oa-TKt7gOIH^^}me|oAh<&3~*DjF0FL`S4BM7++WD9)Te|u zmks$KOaBY4+0L~4i$D2~jXJ(pZOgInv38f2_t{OG`T3?|hQ+mSD2n|f?)Fl6xbMq8 zN=H5FqvF6r@zHIMNB_qbUBAG}4fL1HroG9z| zL&jt_WAzHSf3fxXgUg!rsH1HS-zQy?Xxses;$VznvFlL~*tD!gk0~tD z_qk0;hXg$zSc2)h1r|pP3Y0Hv)lp9HL;6dZ8W++&g|`*^(U4V{rg&=a=L-Bs?{3iX zy~Xck+mbyfH*9^p^&vM?AfZ$tY~a7zQ$UyV(7uy=cMR z&3doHrddozS6YleTFZt=pMJ<;{zCn&CAJp?j^5Rx_baaQI3zhXhM0UCWcP%w-&eI@PUM!(}oY zZR;h8R>3=)AK{HEc@#OE>N=>VvEfW>Y6myY6V!`xF)@PibF52bLsc^dEB_ zfB2W&(V*jdTc6E&O6xyq)UDXkFytN1Y}33u8ufJELL0}jSli|g^L{_HrHrlhd8de2 zNHNF~3)_pjmNe_$Dbp?OD`R0k>QUUP0Uo|CWpCSpK=qOqJ%5Vihn1&Prw}rt;79qe z+%IN=`^Cia&evq8lmc7G4$O;X+?iKsH7dPlZg+uDWxgH+oW4Z)zltTv1 zPhI@Qzie@%UOvShPYvIvdYxOUhAJT=Htg>E`HP$N$|=(4ta=bnX+NWTOI5lWG7`|s zsYgNJg{l_4T4AYTZ7k0Yl8i9w_5w>MY)bOn`ly;J+?%LuD*eT zJiScyFC?cX(J+(`S-s4r7zbI#K<$CTg{^x2hwN=@A0(8a}H{I7nkK`;D} zjA7EI-1qZNEMsjE1C}6UkbT^E8vReN?SJF8M!iX4vD%dC z$5D3>SbAVn-Y)hS)LztdTeBYj(1^g|v?-3)Z5sS)qu%HA7v*y-pLc89a1t`Y(8cL5?L~*a(yS*H7O4m42h~rbZUwM(oRq$A z=U71?_LUYL<%I9ccxuETk`vmBG0cbI`^={M9QRSq{YtCu{cxQvei%F@88ut0hVmgp z8zJ9!=;2S^+MwruSo*%ygZqB*$TDWrD6kZg4Cea|J^YW}iaWwTEMt)5X_dvMG1xQ+ z8Py|XQzuXLTbuRZho$dZ^`PhafF*&pEr*Oa^m6tu1%Y=eTl8{;MfNW|o>Kiv)a?Y8 z&XJ`8i`{SA1M$jMz4F6$e=%%Ia=PI!)sWT8Y`WAo7c1~zU)iAJd(kddJtUT1v~3tN zlF-Fv&(lBnW!y2WuvqS}FmX2yDBhMaOrdU8KJlHcg{mMH|+XU{jLkX48sWTJ^M} zZLNBQ+RBE!Q!ze;E-wD!KYnwA?wvZ_*3WT%^nnk=ks4qj9r7W^ji((qH|qIQB|juj z4VxCCUKIRD!=4^&lOnUJPv;gsglI@zn0O1p)2m7Cor2IBiNY z62MaIxieVKusC8+V8<6*_428i<0;ALY{UEo^(#E?@wD=b4LZKJwQUyTdbOvggk*H1 zZL1-Ju(7sv&MW=e7aR3zg@@af%F`GmjJh;)dam*li*=NE8C`&8-s(qDMnk{pU5 z{oqFvWW_Vs^tLaw=uK1ii*}K1%dvC;3-$YhZF|$C3&)bGjgxMcb2;sSoG-NMafOBZ zznmkJj1ICzdlr-9^tl56uA3V44#f{ThhpsC_IqAtHqC3VN_UZ*QEYnKO^rIr2s~Cj zs9gw$ue~AN136ATa9-l3X1zz@C}VAG9v6~~V&LdQeQ%a4KLTA9Ejqrp#boaLR6mKj zdV9l=FH5dn*yBfgU`a)*o^Y+YU1!<)U0?IHC72iZ2vu*`SK-7N^LxDoG7xKPgJ zxZg`&G@%~xp}&3aFv)Rg*TCgBw(3n6)(MVtKVdvTyU=~famW}1KRK_UgN>K3E@;r> z3Wt>!@}72W8^+fR18ixt!&>P@lHXDfqfer~pk`ZDIv+ABa;Tqo+BEn% zte0N2U$m{&rc^(ib7wHRjmMor$Z?Jp+5?B?W4-jE=|YBc3`cTez!F6LM2`E|DK;PL zr58z?TJ<2VQ`;tB({jk@fle-Z_~*{Yda1%vCHfO?Q?lnE?AR%=R5C0}ZF7zGqGUPN zOBEKUO=*144J_5D?;YoE(?`p(UV4$;UyQb8XA|HrVaO;PM{VoSBcPXKy;NZ-6Id=| z;~uJCK5l8SUtnosSmrzY{+++ada1(Vv?=-AAh5(yzj~azP2+!$_0o%E?6T@X?LsoN z?R$qiAR`K$oO9y#qU--2>!k{d)Ps+$seXLi;$Yr(&ap0r#qPHSfx*vWy;Naw`U}bN zZO7UT>UT1mI{YQD>9bfbz35rNQ`xrMZwX5u>K1QrOZSY6h&bl(7k~L@v0i%779m6G zVfY;Bp>JPCI zhcRCv8D6}*BcI*jnW_zK$2~BXe!3tq>oZs{{mA|#dxzae_NVi-87b>~01G4hJ$7Xw zP3uR0r-l0Q?m!>jO+#bG;_+*PudlJbmn3}2-L>KERq5WZww6*kszdKEp?{MPRSi9< z$`|;%~@@7-{ws}4MoAEA>w)Dp=`H(+rc>|L# z@p=cEFwWLOP1x&Oqv{amP_2*jud(9w4XkGG+PK{)3#?0-KE)4THngjT2 zBTS#r!)?PyzajA+m`gar1K+{BFxrMUtMW`fYvXFj-}MbE-URUCofkv*Sjz)*s5VUc zf5VEm8+hs67T2iq)V9@3pQeYihGu<(_wL#_(`dHO|Ht0@heuUid*geOKnBFy^m%yOR6)joHDDyMP1`-pj57q(X_a%ZwHxSh5^FxLvN^x;YX5T5+MB2prb|soknY8mG_(8+v~+DIu57_kv46k zoftyCpLO=xdvdt_b>H{-{_}lao+l5p_E~%F^;v7}wb$AE%o)P01=>jeADQtMq&Mon zNpVE+lW)au_jUYhdZ_kC0s^*Nb`6@QDEyBNQqKAss^A@Nq|`JpSlS)VV3xOSK7 zBYbRw{KN_~-c!I^T%R*|z2cSr)dFSUuU%or+XK8D`V6m^c*(b7etGJP2Fq6nyuv^x-qUzI`+6N_Gkw44Mhn@S@(0a$J!jVAHx#M{FIT*zzli60(to)b zZ{?Xr-T-}0uaov6-!9ShiPd*z63a)=-?Y2t49;ZGenj!hcwQW6hy2>*X1r10C2Sq= z?<&=YFl&J%>A&2Jw+(o^pwB$TOIXEv(T(5E7+5CoqR!XjCwXQIKZW+mieKVg7Dz#U zVwoB5Dd6paf6qrGUg=*g&`;wQ{lFTkIuHsj@IxA5X^IhpGfFZovF=Q6x=zP4K6 zmFt)H>}Jlmh%j%8a+*qYZdhJnEm| zX#0qGj*mF$di>})D+&4K zRc5@tkJjt&cb{kC7xCOp`afXCTm4a#pMrfRD}IV+v0kL`+XsmUB;G3BKH-nHaMG;@ z*LnjIv+!|0i3$ zNrvaqbf#Prc!}26uaDPrFWOHkeu;NUzz6vQ_nYzBKE|`Vk9KAnP5dIBHPZinGhY62 zqyEnGm5QHyEAn&Aqd9}M_e;EDetAFM%>8J0DSlla-N#|bFTdZ6SNmA_H;VV6k5hd_ zJlB){_nGlVfwuwnIsK5d55=>XUoqG?ai72|?=RXvuH$WJKce_aAK~M6$gjQ6jJFGT zJK*1-iJvf|{vrMEGviGGZx{5Lr})XYV!h~oG(9x1K;n()@!bFMR(=ZYlNG;w8|HHrMS4q6mzo>sm{{?2e1wD28d%;gAe!?o&3x;=DmoE@_<^5@K&j!2$ zylU`a#jnfPeO&Mu?0>HrFYnom_k8CJE->@!@oWQs;$AaeU(Z%v{21yV#ZSI9>L0u> zy!Kv!mwwNHA*QQ)Hgb;kVgIFgmjyhKUw*F{Zy0#JkD>lI@e^h(;3NIj{)SjD>VdZs z`ZOwj@~wzx4Y(5b2)v{V&964tzZ&f;6~AsD-N!YMUwe-kZxVR@kEMrPCVmmmVbcE| zGu{;NMxoE;il5?H;;o}(OC+;@;*V?;*x52+h z6tDCz>L1eoZZlq6?|R+=eS(Ug;#thEB7=x zs*mC0$6^1w%y?tKYkfRt@L|O({i_8Ez&}uF#@hkBg^#2DQT&8etQWS&6F*_r0yU)noo2k= zbB){&eO!v4d@JHP3{2&B3cSKT5vO)e+u@w_5X5BUQ>G~=xSUh3QMcx3SH zT4^7`tOa7E{}0W0qrlq+eU4;#Reo-NJUvwVLpguN{ED61jQ1{M|3~r5cwQVxLVo!V z&3Kc*+Xes5Gx3Xf?k4^3kp7K0N$+mpJq3LxD}KT%=2r@KPTV2!Ms$DmoZHHK(0=}( zBv##Dx{v!IzxEC@-VE?&;NKHwemy_4?a==YGv0!}&D^>j^^f8w-x~X?+p7i#<_o-X zy|DFd;Du;kp!l=#Y=iv7d^29&hx&heXXbhnKVe4w1OD3iX1u<>t@?Y5hySOFXrHY3b${tTPCu>Q~E%Z6RQsO17#{SO}RfBlGWwzK45%a6~x48dB`w7Lb>mz*J z0Q=7~JIO}T z-)`W=Xun?Z>-y+EE`$8q+st@lz{?vtGs7z+Ug9UrsDDWR+st@7fY%FsPAY!#tynL7 zc<1WCtrD+TFS>ubQGXX}qvF@)1H+1d2Kk9w&3Jo&w;JyzU1{Pc%&31z|69#?+3z;! z?^bmweu`(YUW6NR2Fq_1c;)?R;qU734%M8&%N4)G`(U6R@&~?S#>;=V8ShH18a(~r zX#0qGj*u`HsMgdmVkg`+v8Ucc49}_;r8jK2Ab@ z`FG5C>w&im{+(y$*WNn26 zaP6*aAKk|`$WM69cs>0%|Jso=c)jA4{zd%*{#vgYuhx(AFX%J8OyVWqiuvW)f%VHP z@Cy6H-Qj+mf1&-P;+OG^`Umm{ZZYF+1K!FV>7hmwzldjz^uNW7w+ncyq0dUiPw{M= zf9*(TYHyKv#d^`-FY<{W*X*i~@NpRO%WpB`E%-gozjjm&Uaolcc+=;5J?Ve58E@I| zasCB;PFG9&kZ;9$5!=z3N!%>(3j3tpp5NpA3++b~zl>*`e?flj&1SrnzcO{!*k#!Ie)A4`PJ}yoPVKxvf`I`asCDQiJQ!L zlfc^p|DIne@k;-q{vrKuGUGi3ycy_oLh)zgneB{c%5M^Qg?%EL1d7ju~$Zc%#tg za>Y;aEY^$qojHR86#}nZFFO8!^DnfYUOd`9!pAYlPgI!kb^~u4e0#*qug7yc>0e>S z+Yh`Q&?l()$+yP&*Ut1%d4c*gk`VNomvWcHC zWB-TrpKZqL`6JH1pwIb55-(vj>Ytsce`ZU(qTbN{i1RPBpHTd|KElVlVE@@>y#7Dp z{A*Xy;KL?<5zhtSAMlv*HUMwoF4RAYKO4_Bye~1~5qK%qX#HycBkq6Ee!b$C^B3n| zkYDRD#y6#L;8EncuxVZ7y6u3{Mr2M+m+4?xFudOzcR3YCE6Pm zzpjt&V-4~XZZqD30i1vBN)N3x@r!t_A^qKEyk!G8|AIa)#ZSH!^D7KHm%An296f%# z10tV9ac!LHBYa#B`2#na@m3Dt{A(BLpDL4m^mvYu{x_QO)(qhM3;G;U{N!7)UbOG( z%+%f}@CtvW-O&M@f1y37_;vfEPcV>#{PG*kcw@lZ1^>=7@r!uwCjDJzydA)M3i?b| z{Djpw|HAtz6E2CjO1Dq?U{}%7Y`IqWL zm{I?Lzt(BS>-!YvU(jb*Gh-$Hcy^~VZlj5i9r zmAgALjV68(&l>6PFyoB@Z#DE;srbpa#{SQ4?Eg3@$FJX!9#`%}(BkGNM(tnm2Zw7c9pwH?1rF|%##r%rF#)(-1uUsz*KEwGJ+K(uH zT_4@Y?T}wP%Z#_|Gn{|Hzd;kfi035fKg*2Q`x(x^pwB$TPrfzIzjmjG2J8}VM2~0f zGn{{+eX`=$^}+mI8c0EY!fwXv{|xm%{CoaBiC6j;^$+Q9H{-1b-VF3Pq4>$S#`zcC z(^YO4c;$X(+h;icLi@vtUze}@xS$dC=VrV~;4N&-8C+oE7x8QZe}bFwo&w(DM$|uw zpL}c7KX^A?Etm6G)EoVu;rt8j!wW9Oi}NqYFXv{w)<5C=s}c3TiC@ICkM#eR8L#b6 zIRAn^jfy`T&l+$gz9sNdOw#&Q_9xu`qJ5>}*ZrmYxCZiTzh%bj`4i5+8q-5AGryjn z!=(SW%y_jw;rt8wT(0;jo{jyV#?H*ZHzi&%zx;nP&cAT&?R%w-gpXs8pZKO3Zv*hQ z!M{foukeHy_;<32pD?5TA^pE$##@-d`4{v#f6r*F#`#xcWU%%d60cYyM|A+K1H{VGr89?vzT|JTiU%LZ}&1$|tK zKO4_sU@HH*z$@Y>;;bAr&cASNoa#gIjPozZANZOXZ+KAnx1kB=Uw29S5N4czk^WyZ z<82?r`4{v#qIfBujs2gd^ib{B(n65ztA33{4$<#{ssBvUo+$F2i`9Dcb-ik#U(Kk06hFnYasJg@H8@Zv=Wkrszxs2Wf1!PW z;@9=jmAyPcY+lSUT)$S@f;=nXPWV9 zL-_sz^f~=QX`gI7Hvm^+=IHqwar%eW^BCHXD1KcZ-N$W^Upv!`w;p)uyo&}W|FC*O+v+|?Wz9JpTM74xed_U}gfWW}$?kM84Bke|5TjJFGTQ}FNk zJ0xD|UoFr>`d@Fx+XKA)(C38Wr+60gD+4>1UoY{B^}>2V zW_bRkctZgW`Q;^My#5R8xhIw$I%($DA#Vh@b@5_+>*O~G518*4mT(0;jo<;o= zjdf-QW{k$0b{7oeeRF6(eY?p%x{n(mKQY6Mw`^GWHwOP6P<;q9zAr=i&oJZl4M%x9 z^a(0nftCEz0bJ!X1YY4U+#Jf1q1^ENh&3L23`2H9CJK4lfn6!He7YHL3U~<% zy*Fx;>O+|EeY8E$zu1hIU0jd%L!tgrycEx3eiiP)`c*9O%KHo3#SM5DRMFt|il6im zJ}!p*+F~WR;(9Zyr*d3T8USz z7i||e;(bo>p+?28%SWFTflA0vTx-VL4ZQU3rj;gs!mI_VN&jojc-hDXyr&8EkK!k+ zV!iP1$r&uaR^XNQr)48`JdF0s6~Dy$U?2+l179`ctsdFT>+v3_)4tL65%JtW`hV4o zw_#)>-nE4KNAZ(yMg7yZ2ldZa<@}B4^Sym!E8eS=9ttXc(nt8X1M8o*jBvr2=$NRC#)hrTjTM}z%+?h%rA|J`n&+w?oxe( zj|=0l|1>k+8disQ8RZOKuXv?@wLmfWYp0pN z`1ky660h_x>L1eoYBSyr;O&P#Clo*VR>X4#n98pfct!l+eAy!IzgP>-zf>RLV`~fS zZ!_af0Wb9}XuP#7TOW<*esE=+mh939Fc2l`UAm zrbxVEz3}F2#Cvm!23IP6-Tu0dt0BL3iWzTp&K6#ScmB9c{Dc|x59vR}j5iFtVd!(Y z;-`2P>qWFBXK>&ufmf~VNomvWcHC zqy8cNC!6uwa_e{s`keo^#7kJk{b^4N>YvFHZ(R4UCwGJXKAIDXU-y^p;|%1NPd4M# zayN3;S~U2unO~1*Yb*4hWX2oL-O3AEQU56ZY&;jX#)lG<1YU|Y+COZ|U61$5#D}g| z{Br(Q2Z|xTc9I!yH}ICV<_r#dC0^a0y1zL1%O{!f_5-g6`kYk!@hsMhw${!}?G*yA@K@U1pNDsNpgpMgb^8NDFwg<{4j_nesw`muQ+_DcIkG z_LGWV;$0H(LjJ&)&3M^ZypL#aXQt7_FXFk9^#Af`yq)gCu}xfqJ}XW9Ev41qtzk{G z>HQ_7%cbuxsloMqxy3Ah&{a_xV9%$z|vCS4bQ6&m`ulC78V2``S^${5j|&Sa#Hcf26!3Rf(0 zkS|hn#HAgXzzY-|cZMTB=f^uFf0ZlN`i7%AOFOklE}y7q@VEY)C!d%6aknQj%vUJ7 z!ext$=Y@(!?uPtVpOgGWF0FNwy++YhE)Vpdr0BTQ2KimjO8yELYhBK36&-QLn)A3# z(Q#+0WrO|AgygSsX>D&f{EF^$rq+(-(-d9h?B6lR{_AHXf83p1JIn)$?sOLH9Lq}- zUF8h7EwsP;wB*lm#oD?YTNT~uv^_hPmn%B$3@4WIvqvR=g-c5ubZk|0r_&P~%bkjj zyHm|4_}O;JU*(EDcdPv|MR&TB&%MXzD!R%Udp?&BJSF)f&hYb#?7I~W`#!(P?p1W$ z8GddIA9zyor=8&^H}Y0R$KBeKL4I47c6y#1!!I0>{6((V+ShrjqN`ltwYS=RipDwG z&OFW(9e1;1jrO*~vVYvEtzB%NuV}>Qp0S)|X*WBxh95p8`HNhsg9mt}qTxUA=P4TT z(srx8{h;KJyKQ?L?e{7g_B}k7TNNF5CYwLxi35_q)2(4VElWE+h>r=1j=Oz3PwT7i{Ovo}+iMgJ{%6PVNs5O35(gYzty%uqo<+P?(XdBi z4C)qny}}hs{L=Aei=-pY@Sd~WuW0xW`b<+a?Elmjdv{#&Bi{CG;sHg+oi#hh@M1-$ zov|mE@?YjWRd$!ouD;oNPzf94cZuVRg zf45okcRG{dB|NI=h%@zU9xqok^iSMsPc>!v>v!&RY*lo`={b_exuRkJBOC2!8?*du z&ufl)MMs=5$ag9_?v90nIM*M=|Kt+;V~U1-!+G4JXxK0Oy5o~wl0V||gx|z-K$5O< zcJIu^b5M$Q*}}Kl`*%tj{ts`k?>6WGS~o*^cy3T$?{uvA1U-P?#7l-=;xU7! z^~1COGJc!7UgU~}UdMCBk{|kp7V%a^=eV?xmHP~u)<4^c4fYF9NPfr*ZQ*SOP3w_u z|5!d>(G@P1ILMizKx*K=HKf14xmc$U8(`TAZ( zr=8*bOZfyv1Mlig%BNcXv4o6??OVo^+p_xD+Q#r2MOV4l z^IPnNiiZDMZnnQ#FZm-*b|R1081w*YhVYs*e3GI&o!Xjxj;?=|`XE2A$>X&K{VDMJ zb}i%6)ODUx!vwY|cBy*109+MmbQXK7b*|0lde(N)ga{#W?BTO@zlsXdp^*DJcn<#}$C zz1*M&5Pz}YV*c)C$=~U=wOqxwW@)GG`J3(KijF(OFD&L~H%a~qm-fPVzE#mxF3<5d zxYM9%K81s={A^V6!=JmX{4qttKKq8bQ_=9xzE=LpM#&F*y)c$Prf7`!^m6V|H1IsV ziTBrK`E7{*-C5ero_>kXRdkLkbu?-p*dX~UT&ca|`EErQxspdWaj!vRzB{$xKF7d% z$q)PP%H^$!j<}M$R@iS-blRD0`31kQPV&RPEn|4Aq9d+w%VEcSgQocN1n1ZVRo~P)D)3Yy+A6_f_gTJHBUa9D~)7G)ro~P&v7wZ_$+rwG@ zjb1VsbiGZT1wD9ayv2Kx`x>jNWcCky8Dm_buM^nm|1b-l`!3T(0W2c$gse>eQ4Xv9~nm3tJOcBY>D zg`;P+nit!v6%BpjdAvZ;olds*W_!m!XZcfy_c}C1N1VyS zdEBb#Dp&0A8@#jNVdu5jR&j+jA{|5L4t?Ot^q@eKL>KbG=fkKN07gQDY3ZSP)(N70>5&)%`Tr$+Ka z|JW9Ly`tmJ*zud}T+z^f_gJ3#N68QS9~kD*Eba7kEaqj3hW4&O{1vX)0n}rP zjyuB#HrR_54SOShb+45CMJ{%98TTt1c-!|nY>Ecn17msD3dx^##*Qwv*C;yT3?FUf zg^I3nYDaT<@Ce#(!r)t7ON@e#@pmqN@?RVrUI>*K0UA%39lpk@~;uH9MMOV0NhYs@0z4CgF z%hS}wTNT~u_8hv3d$Y7Ne5j81-y_GbawQ*nkT)1Kv zKh`Tc;!GaI{fVMskLD#jb(iFiJHt&M@~EO=zk}m=nW8(L$s=|4Q3$&AbQv#E*E^lzhic)*}3UbKgDxlLV%{!RNFZ~joquX1@F!nui} zVb6yq@Ir(BlT zW5lHt~N2RV8 zxl)Jl&h|NyAMwBUG9Fbl?1lVOrs%j+JC6KcA@zs7{Ns7pph^GOUVN`t(TM-Uhj{mF zCEpp|o6G%*?sSHa*V%1~u5cw|=XjS#%13k;gCPvB8SS75(;hTW^^Dpxpih+7p6 zysfBLK2rU$-+h)x6`gj6Tbu1(MHjg|k#XFr=(y8{{r;{GW&a!(i*)g*q7hH6z@z90 z_PbZut%|O2*;;4VyUxn~aW`w7%%h5ie$5{_yo!!szxyn=DjNQ2yNq|8k^N!Mwd3qj zMaQwa;u`D-;;-U*L$)*?2Y~4sG=*d z-;MDVjpt5wHruUP+R2XP^RCmfe+2v8$iIrtaV7V3aj&9_T`_H`Iz6bTy^2Qs>^Z=#icY(0pkLR2 z$o^^Ucjxn{qT!!C7+=vjuJE&6+^Xm}_PfXMu3yXkm|uI=+oOt(yOYljbFZQiKhGh4 z6y1saZp^=bm;GUnXAkkHq9fSvM*J%}?X2I4`KM^;hy2*}Z?b>dZ96iBM->fw??L`h zbOig|>+M!W!`@*l@A{SO5B;88W{)bm6Z_rBUy6>qweVzaRW!yAWBhK}KaKtFe0x;U zRoL&ojC&Ow!G8Byht;5I|1T9n{{4Sse~kYO;>Vx|u>YD2Vg9M>u*ZJnUv)k0j)f5a z|4a0z^*0>C{8MxV_PgOfgVxvg6F6T|*Q>DKjr?&^jt~FsKkJApI_+c$7c+{XjMSaTlV|+#9JxV)=xmD2-S9m|_tv9mcC!c?nM-^S= z()J_&8noE&M*Ju`?M$t~{QIRGKkZJgLH;#p!dtKl@vrDO_Pa6v6n}*)wg&!tU5=lF z{cbCdDmsGwZsd)||6Q^_{MXX!h$&6dIbC3d3I}-cBO*IzprJ-x6%5g=(yYSJm#OGJF(x5 z{A)P~;^76jdXA(1=@k8`{tgFG z{}?pcFT4x+SJ6c-+djmPqT|@_#{B!496!h9c>(!X(P^jlG~!>;5$tzk{wcb`WqTU_ zOUnLn?02L7QFNy>brktS(Gh2AFX|sfS7E;!`Tu39f00WIqW&>xsvl#!kiQh2b|(=J zRz+91k}VkjB{_b?6>CBLqv#y$cccC>XtIwdi26rehkm<|e^1E%7{3Maqv$H^cVqr3 zI*t8qn z+7-k8w^z|c*zfM;R)ePbWD6pHy(s&4V!s>pkD}q9-5B4XvES`xLDWC$I`Hg9{qut8 zPxeV+e=TazbpEC7M*dZFkt-ZS{3tr&N5RoO{}f%} z3diBU=VkvYm-Y#KU3CKSjens1Lmc4ga{30n|T=j=O2UyX$G$KjQQ}gZf9& z$amQ9_8K(hpK#y+x2o%DcMA7MT}MTKIuFqTsDBKa)~^`FkD_y2+FsN@ijHHy8}(0n zcKlcj^^c;V-*Mz$MHjh}yAeN%?sO&(VE#QN`(wU!Apa^l;<6n@{3|-`j2*!IQ#9;z z0RDSY_J_S+K>efWxRV`4{!nxT``xI26b(EFkpGX!{zb0XQPe+*?!9^-k<}kAA)e@kjSh2V{TP=SkE*iUuCs zA9)oG{f?pjQFIRWyOF=zWdFD`iRVqCiiUrVVSGiye#cP%C_3VbJ%##bzw94zhMz+H zqiERg81k>8;hz@~KL$y@yKPO#zXnbFEwR;ze|0^M{cg-ZbshS_K3#id z{~VXri2BE%X})Qzkw4UR=+}t)M_rG*J*$!bTV;Rf*NFPZph-U)^vmvtz}}6hf7JB~ z7o+i8WPj+_i2BE%DPN}^Lj9wzN1Ut)^-q?@emC-OT=p-*emCMr(Q&u!5ayqvJDr{; z>qKaj-dWgG~(eP z>K{czzvkDuRnc*GxC!~IS@p+$H|ifnV|?2GF=+k#;vv*O>N@<}g!-pR^r!VJ{1ECN zgQof?iFoj;>qRaN=Lc4GJ&yfu%)dt2ANF_%`B%~K-$RIhgT{WhEBqqnpSlkJ!9HEP zrT%eu>K}Ez z!WE|bzn!u_;uZT5QAOvtSUc(;MMr4A+hJ8S;^83j?+%H-2>acLA4ONWVyiI!6rFa4 zS0VozH0m>VjOw2TIeyx0JBazGXxIn&(W~gV(}VMGtD>RbLFA7oWdDdW1^uE~8vEVI z|B5bh#oBwhRnb-0??(RGF8g<4zZ>yyW5^$h#{9?ry;ad^w-!VG|EcU>qm`$81ZA!6t77?=AXJAccu;@ z|0)`IvEMD9ccOYTc?k3GU!}YXmqz|GXu=coqyACX5r2D;KOT|%5vKsR63*2>Y4kky_H2nTzuf{^0o;%kbi90U+E#6gEE(+YsBD0HF-gQM7+sby%o{Ik=55J+=QaTaO zxj#Hnj^nZ0*!_d_+&leNasm6G4|?{=-|pO(+Y^HBed4z}=^6A2t%|+evv|x+lm9eh zL&<_MzvPS9`}MJr4W3i~Fbw(oXFfKveRh;h?j`;9<&F#b=S&D*ofrNtXk4FKnqoUW z8VmN~d4D%IaHQIHJ8CSu|LpJAwzDSiPwolhy2s#$+<-rKLSU5Kk|>LKigR7PHuivS zn@jC7jjb!LWp%S*gPHfT?H=%j$u~JHSY6IqLu=mNFu#Vq+%Rxa*cl$x@se%Get)lh zZur(P#f9d-a!p_>WYw_uchNYzgxCorN_$85G&`O zAL|wUZ2ETwY92|$H&<^fWG{zV@rF*hhZcmmAf; z!yse`d=y`I3=`(5B^qo<^x~_CZYlAxI@sxF;X?Ml!@`*TaGott-0umpvhjfl;JyC$ zEZ9F1(Z~EM%LFb?`FOq$?G|>fX8lM+kKG?%P4;M+S&O)s#6tBsOtX_-B&(2xw*4*r zY;5+n_7UAD!ge{(Ubmglf3*E*ev$p?`#m)G{8O6)G|$L(Wo#khPsIQKm}N2SIJIQj z82nx|bK!T950p&Iuba);Ch&!NMEq_F_@{1Fapu$K(A3g5F{cXID}9Z<(jPCCQhX#} z^FsDs-v-rwV+pnI#(bpqm8$(Ey?s66k=pObw$CK~6>PiS?o#bH>hkC7OEp)OmyrD>Te0vdhdajOhcW*A=fAvmImlpyN^1F2-!Y znAE;QwTm&s7?ax9s&;|38d#})S+-rr>eI)4ukZV+U5v|(aqX&IjB7K-y;`-4apxiq zDL<77JSANi&jUPzA1mzocrDdT$?fO_f@+XckW1&jz{F}slXGNT?{OEpY}fHnzINke`3YW!5JRf_FRU_>gL`?$SE4r!TvXw1ucf5Ou*qpf$q*D=;qniy%CU4ZN2H^7q)#)cog%jgHY4bfPSiCnKSJ;ztj_X6?#nG(DI)~^P= zIlX*`rLM#?%B9xEGb_t;{AVzvQv6xU*FCb7pog}4Sj)HFM=hSBF(Xs)Gk zHe(Cc+E}xnWyXi5jqC*da%ny4EE`+zw_^NphCZvXe&=BgV{GzTp>tb_Z-nZHB(O0} z{8ebvru^JLqj*k`v4b;@!-fTH`C8bcXZz4)u;tX!w+6#OUu8+qJEeHl49`Whoy*La zeP1w&_$XlO!i>%7-9FTc_JiPE9Q4^Pga0P@XJ|J<=G4I%53E5wM|N8d-tpi)1K#42 zw+1%`e1)yxJ>;KJc@^5mXJ*`WU$6{uT)?8x!3*9J(hI!H5Eo~_d)7b0_7Zs8GBd8e zDmY*FvA}0xuW^s3ZjFt-<}Vp}Z1y6(Ua0`imuD6aZ=anvNNaF~RxIoq=(xDnQzq;h zIDBz~2l+s^eeB}n9*^J&J$7-2$1B=H(Tj~9cqQ;IPmPDOR^|f5{5yy`r?uQES2Ps+uYN@;Si#Xky z%L+zDY<9#jpTypOw2Z|N=Slv<9PRf$mf{+7Z=<+xxHc4QD8=8m@aGN%Q6uj9G5$pT z^8TY3t5?>`qQM-r0B=U9V8B(lv6meoxRnGJELM$OGy=fp8IyJ*ZuLY%0|! zdhK3``DxYTW?D(@_=x9M9|$}Yuk*)6;1hj4FPVhAwP32KbExfxFUrsF!xk?iPmT0U zn{v=U@dx=qk7xgy>haqV+t*^8>7|n_J3T(n(xBfl6v&Khv3K_DSe4Ia{nJ*&7PXCI z4qcxC)aDlUVhPpNIqb!m8sa~f%__YOv7N_el~7I{!(J?%hWH%|z5?(WeP?!{1{a^F zmmWrrFg};Wke{Ud#~|PMjQYM#ex4aX-_9QAY70A#`=0|LD_hMI7Egs$*K2y|y^v?s zZ8jY>Yy`PL=sOqkY~nL?tMe3#&ofIPugvI+^%${C{L@P&qVH_MQ@R_ui{jsk`jB$| zwohq3NIS;-6LU5OJhuG-+c?S**OGl^{u*n9&-ROe-*FChe9h6>)3rLEUG`(LqZK?> zb_?ow;K$l%VTVdkPjO?w#!jrBG_oG@_s=ZAIDW^O zz#T@vV&?9H8L-xdGFJTIma7E!BK60|5?zHwuS<=o}a9;tGy&!IKELL+;8*eY<* z=fM`^b6-nn_+9bY%3gxp6M8%qvPK8-ec$Lq_kG2P^8z+`6JyrWn!KGJy1s3c%)O&z z9x!AU2$`7cbnhW#4jX(_KVY4J%mt9SdFF-O?Yd0YD4E|MCG!qLW}z0 zGN zxw!v@oX1DWJTOY;k#~grVxgy==cG(aRwmthlb(>dzC_Ed(`C*cCG(C^GVd~EmI*yg zK00FXWqouSGRKyFk|TU{Udn;a7Wo-|A7jYmkjdG5m|G`Iev;#7{S<^vx6CZh5q^4H z%7WYjd$Kk?@*DBl(|u#0QqN&8^;vcKuF~DZbWbeo`>D|f@=N{0WQ)nrJ6tkZWZV=T;xA&&fhwIS2T?nf-o!dkd2u zlt;XlCJ$rH;R5FFWvsQNU!U7C$FwOet7jC_J4<9fd8O~ew*?O53jLl#un)o#uwjjG+8Pd2Fb(fQ<^zLlz7j4Sd#DE7s>*rv}Fu{WQI9pWTZZqYw2(ALb%&LlPln|6 z)kgniLH|7~RDZv^e&wItPrPtJ_P^4QKhCr-7**FDM*rzS|E(oT{zP?s=+EMeVSL7> ztQ9duYgF6JhKsZ|Wb3(UQ}(T%QAY7Kwd75GeVEg?;Xh@3%_^mJ2K5d4Jk+;RwI3^` zbq4hf+TZEBL$!;0&VU}fO?@uaetagy<05@sa`s)L+U+GYUnpPF`gXZ$7vq*2<9_;< z)JKdv$r$&vY8T^*eIbF@!h&{>XAABJf~zLsejujT;mSD33M1(`Yz)9)v6m1_HZ{IA>8T;EfDthXC`pua*b{6#LY==ZfA zx=#C`jJZn+DgIHL?HxcK!T-bmA$jF~Y0==X49sQv+*sQq=0FtlDEwW>68c#5Pa5ev zx?V?KvQte?df3?2gN0Ow+t#anR|{KTT87*&_8Mc{#@6x!^F`f_{pKDq=ANE?xoyUH zv|n{K?k8!@AKh-~p{wxPf0GgC1>vs5qD6CLeyVm6TZ`9-nqgFf+28clIpy z=d-pN?1iH~r0cPg0!y98g1D_k?BuZGQVlVY%i8qyAP@JEqDF5knTD7f3qGnzL| zay+Q}giO@CN+$NxuuhEaDPSML92$Snk2DCn79$hLvD>9nmB`-7-E$MzJ9>-w5o z2D(gKr&#cC&|F+E3G4UnsF!lBn5)_OYh~3v9@+z8d+9y^cD<>W*=B^WzIeJURAY_N z_YrVkFwe*K5?|>j`re!sd9t`9ITG;@Huxn_Z=rfJzt^WNMZG`OUiG`{R#DE_t=G}F z*gd|I&YW~Myf2#TY&;d0+-NWGC=}@T$d}F~!u}$~?{@ZT} zLS~5!Ov-*`~3n+ZM4oJD9$YHx+B{)Il5mit$&5KaM{S{=E3ZKG|R;{&3HnDZqN0-LI}T zukSf}8qh9X-{trWQbz}hR$DxuutP}nHN$2nTU&VgM^3^kZxs=mqzKh&nz}mtL zYtol&*Pv}`>5U&;d&f6zee);I+7k2?Prx4TSpST&`*F=XIOB#X!5G$w0@i{)xxJ!K z+h6H32Yo_;6ATi9xcr*aqS$4ANLs@xv>V61 zY@DH-`A0fKDPWU&#W~7;oR3_CbCej)Q4Zo9r4{EWEvs#Hdsq8seHG^?bbU$CpA*7) zi96{3fertAg8rhL@ju$HScLx<1^hD>JnECF zfd>7&V?6eL$JuLXr%R1?_Y`jSUagba2xt! z-PHSf(AOh)Lgnb|744y7^!15$oEg!6y%qcQUVZEd=SEfyQ1Lql|&r>#s#d!*y zk;Lg!7c>su`Xkw9$FWJwb7vk_%osPto89I#1aW@G&|gIpCk+-G#PwgEPLp z`Y)WPCDp&P=~;o^deO%x?q~FS zeDirkG(^wzh#H9QHv&EWzShu>|A%}AqNTJ0d)t#(0MBN`^!!F=8`#@^^x^-8Y=K2{ zaGc+fzI13I!#ujilI6li!P?V$TNd5*LAU*#NnN#FbS|MAt3 zANyRFzbEeVJ~Xb2bIJ#L%=jttV?tz^ViN}Xurq{eE!?-#(u($ zLH~8f0{%H)!FkCr_Osp%-1G~fZ<5X4#E|DW_M~iV>aH?2XV(o_%f80eHGCa^$OS_< z%fVW;Zm1AB0q6VJ>!S5+U54xT*?UXH^9PGThcaS6=YgKTzMrG;YGm(RoN49g=UG?d zoa>c(ac*^{p4P{|M-I-8GV4eCQQfPH{QSRTKiof>?MJpF8yfZ-^P04u1@^PqExHZw zA7#T_!-i8)7feMyU5K-?(Keg|8&YlXGS=I@rCX7=Jxtip0>6|25@=TDPXKH{AaYngTk3+f-^GB1Z34dL`k%cj z=S+-Sn8(i96xeUh4%FfeH{kDU`1`tESFJ+~wjc&uGT9i+h5cF(bMM1``%0-^@USI% z49Yn+`Z+<&8$4Sk;w~4lCZF+|#LgJ;wh+&GJ<#))`i!2BWS@r7_Q}K5|HJu8&tH|% ze7$uR;_P_9fBQXnE|KQzMa8-^=A)A^S0}TDyRc@Eee^SA%;CXe z%uPIRr^nTL*rgb8h3D8Z|NXi7H{rQAl(qt+{1IfSj|T%qi= zvQyXzd-AAp$WC)$r$29_;!*jFY*Y+A#TxZM&tKk)9-X_)_MyI)=C8jkr$WQ?Q|A0N z_WwMdDF0XL`TsuTe;4d?0de#W=HQF^I&jm^gq^&w6V`yr2SNpm)ZiObhCsl;QkBwWOSY-{bc>Y zSj!eVLo3(wAfA;*?LqSYYd%wBX<`hj_vl&R0G|0qorn9!iFzGKu`S}8&iXB^nfr%6 z4AC=4RMTBPMPi#;;wi*^GVUQyjYK@C9d}Xw{qKx#(a+Y8@9G-uLzPp_``dr+x#JIz z6aION(8q?cN$;9Rs<2P{=l82Gtp|v|`;nqv!XTf?mV4;*jP2Fx+3*(qIT7+5ojv^- z|7jFYbY0Yj*}eNkM=#=R0srVM;jj2t?mvioPo_l;y}B(6bzB`Fp22%x@15X1t9Z?4aFnN^hkjm4_S{ik7ha1ll@M> z0n_;-Y(CS2J(pmQqjQw~zen^Nx`ZJ}3VtM=bht zW|ZG#4SDneond{T-)Ff#xPW`M**!Vzo<4deE^4`Y+gAKBwzD*b|BEL!;(GySL(CG> zbI;0;1pji&aG%X`8fR})OL$Ji!`MqRJ!7|fMn;-Td-Cz!m3NkgMn-<)7#U&qk&&=t z9NXCQQvPdqK5aRBj&)24_&VNSllsEz58)hSS@?^Q*{m|UW&(T6FUJvfdnMW4&Cwn7JXe=zlhxvMO!u6k<$bSN`)_W&{;+%!u zZ7;;xRU&^5#`;npOEw35$(MocMPR%2!CzmF^Q=lMY}latgw`<&%LV_qK#%^s-A2si zkGZf5>_5sb#n>DAk!ASY$jFyVC*e8U=PX-$e766De_nxq7FSQ~923gZ*QA$9KEW9! zVrFJ-KK9Vw`H6}%ve`KHMBl~yQ+ImVZvN>R5qD2pCiRrFRq&k~aWVxsr>#k8UO>!zxlhKjmo@N4CAScA=`0^uSO|7lKO#Is7U?Ly;N?)Ke!Y0@cag}>j!2gC*&v%%dn#c!s2kW{5I@m+6B2KOBKhMdr ztn5#-aE{5ZSL1ERcnbqQ8*tc~G2S)6v1C4;1+1QU_gIXV7c9FBKCoRSe1N?X8qYdP ze+#oaNG^>>Sbmk3HtGOlY>WSx8(=(PmzFexSKIlVkIfvYG4tb^TFV&Fy{>yjAgnh`*&j0G? zS>%(8`EUIY`3LzT>>w;-6qdqX-A*3tdwa;=a}7IfsGc}u39u{=)+5HNEropr$s2dL_XSN{z^PV#PYxDIBm)pt0XNSI~~Jzdap!W}F@S#sSuqi|dO6 zZ5VsEG2aE>eZhhoUW1NH>=S2f39_!Op+x@1-~{Zs`W=G-|0|PV@2ox+R%rOR5I)|{ z&!?o1zXTsw%XxtKp?NSK@w%vbV$ng2-4Y0oix|3LOkKB4eBu>zG3MqqiTs-|=Hnj! zbuZ{+(m1TU0sRU?){Aw2HgSJj!Y^a7CZ({g z7RNnXt=jSx#60A^ZpZxnihbf0Uf|A0JP~f>ZQ%AV+)cV;?TZG>F3|J6OK^_x z8uE57az56Iq_pMT%QQSAAbb`sosWIt=Pc{+JVO{`Zort&S5N%6J3~%!FQMl<|2xa! ztIucohc1L(%Kz+#;~3Ur)I{x;Mc9^DSDJtgSsCtO#;->{CfnQWhlj}aUn-?NdkfoM zIv?wL4*L?G8Kvh|W}u!(&T6;pSUWPZwPXe5zxFAi3*#EVE7$Mk7{lghx8$xH8EGi3 zr!l&k18x;1C6ulm>0-uGwJ`437{PN10c1xbFgCF${@~nu7>t4n^ zTL5+SFX6*iP=6X~lX)>%{4Iq>dTL)gX6c$(pzGpyQT6 zEA*h6P1G=Sz2BHd3XkRvzDtknIKIp^#6xltEST{iIws%PE^ zIF-Nrm-vfg-F(9E*AD)x-$+}$4O=`2{l`N870`cuFq2Q~)Lp#=z8ixD)At4}>>9_! zqPGK7W6~JM$A;lYS{rQ+YX){>Pv~dT<5))3FccFj)fi8}MoTfq1dNe_y}uNgrjPM_ zPeJjG!5Tf^eRi&(1NlkMpKs2Zc=u-k#+#9!QkW}LLt$R&HBEL5QPUKn?xvdN2|oO` z#3W;I9Q?Zo<82Rwb7_71Q%?cM7;;U0x^E5LUnKHB!JI)|zOXr%t#7CEFng7G1h|tdcF#Cs&`~$Txqeso_(p;=h=kZxEZ=ZtwX=}(MCl4$&a}RQuB)m~^qpWCWM$W; zMaTtbXW>3|&3Yr>Ra?G<^$xOhe@(DYoaGI%ZnEXAm_xATJ(xqc-;4QDhkW%NV|}_4 zbrt1f9b3tpIM=PVoP|%69AIO5?Uu;DLaa;wet*b+>;l%npCI2Y4>o*CdF-`w_--Kb z*lWmr-$bq)S6ZX5M?uVwb)}2+_2{`CUvVzh{;y!|zxF|&vbD$;Ke8-Ts2bAWQ* zcI3Qs@J|N*VGmBs>4FVjUDJ-|LuGyu{Nqb90}=3NdVG95_`d}HSC>yLnt(VR6MEOg zFXn1AL-GePS8swYw?dbH!Cd_&>Y1s*6`9fUPeb>*lE7zm;QyCiUu7L~@J84@RXs6h z4ES?{+GnHr^_*Sm`va}L4Mxt^!2e~`OHTy&A0+Sp%ig;HM|s_eo<~Rs0m{9aSvezP z3~eN^XgX@eab{bHM+-0!HrbUEn1Bs-^E6;Gm((WrwybV-3rQdW*~Md<@Di3sh^JEJ znTltLc}OnJ+@xaIa zciIW+b;$n4{P0)zv5jy*i@}3@(_vCNny*uUN zSAXNY<5}|?8TaX{Wv~7Z+FC|ihmb|jhUV#a^q9Okzmc_B#oqiK@0h*GUc4==^gCv~ zJM{VPx8BxyeT(z`mnmU^F;D0pq`%!sFec|Bld%sE1^&UF<1p{d>(XZq>$QRP+QNGM zWL5UW;lPWEbX=GB8rZi@-qrdX3tVL~wxNt)L=39 zM$T{>XHN7Q!4*68^INRt5YK8|zlpW{2{=M@G3QpyGvko8_MT11{>wOyTl79}W%d|9 zFz^@Qq_gdf{gd<)WPb%#1)DYQyq9tH!dgh55d#C8bw7E)fSk7`#uHo- zq92jb&T!_ytwwh|OsPTm;}8Sp4W=~U4=i!4L#tGNMyL#ZOizy+`mv;_bo97#;<$a; zgV2TK3=c2)O=kISEelNG{m!V!TP|oyifSp?guZr=@(?Sz9e?Q-{G@l`FYWQn;Qhg> z#p8kBOXt08-W#f<{w(?%7U|HmQ+}VKy>*c@)HBbA@>_-4oc?5dbs_xPt>^Xp-c;G> zv?t>k64^|9{+xsGl8+Vbq^%6ym$aQ868)r!p_I0xA&E20(a&|;m2+szrGHD?nUNW^ zm9KwG+w1Ye+J(K^8G9&?_I&!cw7(ADvvnmU`nPVsG6-LyR9+V>v(IJX7y|47f71fX zddp-_?0-Bn&&3yM8U6v;O8D;FD*3MRhlX-gRY~xh)5HDS%NyMsRPw%iNhm|5#^fEP z($FP4@e@gXObgiizrx!83^f$_JuhkhkNZkTk7fV4GgI$>I{QD|+W&Fr7dw&5iL2H7 zf6&_h3D*7}wDy03wf_gL{Xb~!ztpeCpWkEczxf9wAtM}m-t@Ym$m=$T>5IZ_FuQnZa;UyI&DW& zhtU;kzbdg^*uJ*54JkuaVQ&~*AmfoSJdfRIciQF>(M5`VLvZ@SONKANhF+yg>m7f% ze6<9gxH_t?*F@H&$vK|l*_S4AXsaiXwywlA_<8ip$AFEh;<`WE6TI2eTAcmR)W~1| z;r-xHr_D=Iq8(Xdl*dX*~MFkro}_tq<@A-47r zr{0n(HE-j9_3m-%<$7nQZkKsfUS|A*o%*R!_PS4fd#q{d>Ed7LcsRiuP2SAZUH+e5 zwC7n}r2?Ch>b)Mb>%HRC$@QGYMzqbTliOzx|BJS#nsxcMQ>V$Zd(b-nGN%rEoD^^M zr_>>jfwP`pwd(m#wpNPGa|Lm-dEmx6b^e92#06k>NAb;`O5b1qp*;8}PMb~O)ZW}# z>FOwZbirx!qQi^k7UT^2E5AQ+EV5M{Ea zs485Sv@XYJ`$N++IqBjvQzg` zpR?S*?iZZ8P2L&!tosvFz~x7af6rXHKC;K2+VAWhGkeOoGt}hbG_|Yvgo)vk^WeFO zz4fS5cY43`d&JZ|ok!jI#ozC(SMU~g>{_SZl0N76zc6Qgj($D^{aCnou2U};pT6z> zuRHZp`<&Z9rCyf3&gYlnS3&H3VoK#bPW>i{fAeSe{FPs5<{I!Ab`5l*DOCg6Gr&vu zxWz)Qs;nfMDE8lfS^awaSrmgHmaq>D5#P|cS#{$_TMuqa^VF#wo9FaY`R6mOqK#{_eC>ilXpt`>j94e)t>_&o8ES84&c+|C>H#$EhmY&wDd5#Qh13-%i1 z_Q44$etDnZ&n-OKX-JAUjZ~OcK3Mf44Z}qr2my4*lTm=oCfK*s==&H z>*lR`ZCY8IHgw3UROTo3>r_t^I|w|&OaA+vwvP9~OU~KRuzj@n*T^VRKSgnm@{p(C z@67s?a#koe>tp$IM^*LaB$}@u^IyRH$^MEx)n61-qlgN_qdX(1gxErSnd|unY@lObhtb^!qc^s-o;CBB7V8_Jiu9sMMEsq>U7K%Ao4ONBh&- zGW#oa`uJz-bKATA_WC_Xe2~PjWP$h4k;4lKzdkJhoy0dw@_vnHK5I+loXeVu-&dhp z$vm5|p|470Lf@pXeEbuUp}>`$;MkSKZq|1Szp2z)i41i)k)@V)<*1r27kqv`{BNNe z-|13mUHNK8S0OUW%B^PojW3z_c~ub)U1y#7X@Q=e3}7;q{9a8XHQcyYp=;dOnWawS zR}*KChcl0wt_=FiqQ4y7_Hg#^Ap18#`r-`iX6$)gLA3!}$kL*qT9th6Qle}s{{k|9 zdwpcya=zqj$^0cI?bl~**z1dzB)(hltnk36zG&hogcp{%7&>9khhF;lr1kC3?x*%s z`r&N)q@P9o`srOWs}DZ-7r67!RRnL$T8V%6@y*EK>`m_T(3dVNevUj>xm~6F5kL3* zJU#>bt>F6_K7;&4KgGXuc}i_~dCH7%Pfy;LGq6D^b!qGJl;xChjvlB-j%@Um1>D!m z)MMAT4k3=oJ3WLC^#C|SpT~O1b(O(6RmdHTee0*;2ZanHF%*JhIIEje^cbSPGmRhspQBP~S9u;DB>16D!^xd^xJvu_xrjx) z-m}d2@Q~$m6h2yh{GX6{sK34-jr=kh@a!WPSDJdHDn$+R{s=h=f6pTH;f%GmirhXP zYzrm9C!YzE)32JC;A&Y@-_|#aA4WELSnbC)`c$Xb_bShgo4Y4<7Pjr`6_>|}ZuImD z{Qva&?k-qe9xUF6?R$vMN#atMgAerjnido?7HK#3gSGfpw8o{LElcnW^u z-AHepT<=YIbg7eIe>2p};6JG|6x>r|)fw6+{|M*Ni=3eAWNdxYCv!J-mg7@0w$1dj zvQN$vg)iNUDQk6|oUMcC=V{K2^b?CsQjfNgQ_HH?-?y;Ivj9IT#rX2Ku9fjwb83lu z)J|)B`=M(sNpm9qQHrcXB$}yGkp;GwG^%aLG1Xo_@=Yo^k;pHBd{gad)cAi|K(@m0 zFQ1hw+MFkOzwh~r@_Ui*@dpjwlr?&l90V?C-F>`Ej*9%oo~ja=hn!bgGx1-C=krNE zz~8BA$um)MlkrNQd>5}t=9e^G zmi24eEVxN<7V)4qYzm#w|I+&5pR_*${{(aE9oj8;M(FaX`DUGk-u9)nbSJdQbQ|D< zKN+9DXpD*m!Mo6krp;s2>0l;wBb!*BH1H?5pesu)0hdZF%=9jaTlh45lA|s~g};8p*>l%Z>8ymu7(xv>- zu$OndZt_JxsLVRGw^yoL@ad4OxAPHXRqf& zAG4n6;VntE%9i8Nk z@N?c>#E>C_)q#_}Yk;FKp#Km$Wa406=@;+3&w>>*-tq4m83v!_*gZeCzc-P$Nc>-x zM4?9oKkC_1Qr>RpoA9l>9h@cfcLVl9)0a{W(5wObGxQ{tmC|cv`cIy}Ewc;!%KYU$ z!z)*6{l37x;Db7KtXS4Y^h((O;F)SPPj_cLMO4QlclT&`kbKt?SGCP*$FJ$-qJC?;B57^S{9aX0;is~y z=v7tuJTx6%EtNJs+OITAWwKsk^W4vG!GG1r&Gm_8_10MFZ~PzGUr>#5+7!MigWO!^X>)rK#nz7}u58*oVJ!-{!vYwpT>V(LUQBD7vy=BZR zi}=ncae@-t@+!Iv(O??iri`lXDBC?kDdVU1+K}@UFp50c;=Wi?N z91b-9CM#ZvbH^Se-xJaGe^`5Couf(251zbJCC0P&YyAwg)Qr`P7al<8PdDeOn!Vrc z2@+FfpQl;YdVc=%B>tPSez)PjQaMl4IY0TC zcPZb?_?*XIfbT2#T*F_GzbJo)C~M>MB!6f4ewNP;{$hN;&S!$Z6wVYpTtX33SM``# z1J2(Ib=WDtWBo4Fa9ouX-_}nz^C|Idf}?C5udUw|oODP{uR5vW`hYi~&qt${JA^*u zjow$`_KVKb&Ifrs{=Hf=HsYhKe50aE`!K$+w_M*T@FF-#${%scO@85!=BGZ4f5|B~ zcNr|zeSa9g$0;{?MNK})597CL`t~b)uC#xpw_Nu-((3o8PPyq$-2r$GW@1?OM+I^yXuo z+pk}fFZ09rWT)KB_eE>IW1Vs{-;m~yKa79DDL3mZeit&|PpX}D(DOCwnLw7budm*`Xp` zXZbtB{Wr57HDimZ(a{7s8h|J7@AWw3Ov!m_sc;8~C4r{BtH*IXKGtc^j6>qlWu9Mf z%FX;=wCBIJ@BBm7eqV6P&HR_z^LNV4{IQkk_J8Pd*`hCeMH~mWPc^OZ*x7@ii z!=7h~T3AHhAXe)L+4!K@ zDL3=8@xk|d%k}(heDFP|-1KYXgN07H=~wW9J;xMv0eX@SKDclPJ{W7&D^!sxzs}cv zFbN;*t#JER_rV9BgzR~ner$Yj!6`TMv+=DR^w%bar4uZ<7B?v$H;1s~XR)cMZmMZpL6vmP&UK0F2=EU6CPW7W%nSII{&FK6ev z#yx@`g&$ig>%sXD8bbc}3THj~@MAyiE!Xq2`LWlWax*`hA8T;R&HQYBtkx+v^RxM} zZ#(5?el|Zgx3^sPYx851opRH!@MHEIHN2EnTks-2Z+RyFJF>@MtDcboF5dM%M}fJW z#vg1zdFgKYidW!&WgYwLEAG8&^c4Y~y>{5vGwh1JqVH`M+}2dE75r*+4%&aGWboTY z=MXTmw$2d(zpd|?65WRAuE;ADwsfPkF^xZRNIbt7JxK}nPR)}4} z*i`PYjd))Kwro3phRAG%M(-=S6zSjSQWo`-Pm}vL_&FaL7F$BsyUDu!R7PdVugUrj z@o^NNM;;YRt_HE0*)q7T{}DgOSH+(Z9Rcv+Un657H#|O-ca5z!YjQGzJfd~ZB6HQL zredKZ%&)k}Z_YOU1L#(#au3j2{|Dr$w8w|PoanQ?CkF{_{wO|JRo0D~3G8@3!Hze?y8;@Rrbg8(Rp<3E&J693rfqnhBiIFP8y-q+t1q)&*kyc@ zyMECZj2)sJU(U_=0W#LkL8>LcZBQ-akax}d(yndqQEF_pQrikLI5)-~_(-*14UWpY zzO9RW533p21BU|J(~*-awT`Ir+&b)nW9J&X;7RO)!|`)Jydqe42YzVP8QNK>)@ggvUG6{C`Pyat8C(Av z*|k!STd8I7ht-5O%N`gBo?o48qx0Ovw@&KhXuIB1Rvk~guRU;lBzW4BTu=MfNxl57 zzof6Hum{SVhQvH-yFI>s_R3r@e(m&Ci9N7d?$jvB=gzc2*a2r?2TbLhJgoh&s|ya@ z+Tu?k=8NVve{xo@n<{O*Rm0iXML+LjZ(E7ItrC0NsZjQ#X<@nRBY1u(K3My7{|{L9 zSoX)KPS#>?JIr1-6&&IG$+!jHFTP=Lgz&dP&dwahXP;p|cZwL?^5A1r!Lj4Z zbq>MYt=iujdu-P{^@?u+I5wZV4#dV1{N{Ws*V+4__j+tN=Z+WrsDj|v;P5=|g}E4A zph~L#6di9c-W(}XOA~_63f0BU4|A96cRm(6f!|fnTFx18{8x*8!Jj|E9!A0C$76m6 zhhv{jx*JCLyT8Z2?Z-Ew?96WP<6+L&p@Ksx%Oqx{$QO7b5+w((QuELYwNBtJ8qUf2 zcw5RSiRJMXog5ZAb9=2HAFudq<~4_TVbAN#Rx5mit+~j!Uge!qo|lOp9=z3g+ssp* zN&fm$=9i_`=ezK0n8Q5F-X5=j*!F zJKxQmF=_V@J`#TP{yx?oKaJwx>2d7W$aq=)b7B0t81qtS@8uoYR}aFkR#`N7Xe4+% zGYKE%Lf_eoLQi^}w)SY9H+&3tA1&|R_8l{hA8CGIqPK>7kXF#vZ1q5u zOVt;A0G{M5MdzqjqNUu`tdQ|bZ?5%=FGG<1%xA7*7vKyeq>Z3@vTJKHZ;`Ee7wLUK0-PKumegFh$fd&H|NPja5fr^VTRxekAAFS4`04j*}et>!;BXGCCr{C_jw zqk4|22>w-Iz6)QAL==8Nbo-Ow&B(P5%R9b%xp^y~!w%G&OY_|G1y%#i#t=Y!-EucD0*^e3e=`|4Tfy!gMZB;U$WY)^H% zt?YN2;SZ8|pIl&VJL~!Y`5M~bGdhZM)VUoiH14q1zog2A-?j(eN06+VnGpcY% zXwB`l_%3x6`;y*&{>L^x5x#jBb9^PP*Y~StU;5e)v9-*btnG&^YH2S%Ia-;obwwJV zcnm%<_q@%w+IdUMR?`B;KKKrM_aXKijZ@gS@j8|toWkB;VqNxH{t<#xp6Pz%+h#1U z>T`CKoGBf}ndGZkLz~!y;!!oK`vd(9|7!JA_mQOY$oLZ{&3uhqm%%B~XVt7%GQVNt z48b2ZzR)}X`Gg&Oky{%Q9Ae`dq4k10sw~`L<^{U`ska>;?IibcA?evjJ&r|HS!$y@ z6TahNa0<4jDts}?lOTEOI*KKpg82~BvH^T7{R!>6ccW5U3(%eT>(p(Xf3Nl-v)_Ur zhCXY)V}s*d2t4Ofgw^6T+wxm7IH2qkzMnB&}gc`QVC}1y zq13+>{GNON-wu9%k|YapPZadR@2qG3W$=5i z*VO;lgx|5h>s{M{;P*Sf?R}>|{9gHz8PmT8{1#bj^)G?nvCGYP{-eV0m;UCn;n(=p z9S7g+_5KK4H6?w6_KO|q_{65-!?_XP*J^w?tMTEipW}KviVv*##BMS^vFkPlgCnNn z!%3X}%<5hr&c(AS^WY2X;?o~CezP07^QM~LsYyPuL%17dSkPUzE{r~%*!i{KWx>Pt zpZI^hi>`FH$W%Pr1a569xCXB~78)XSTjBvs+*6f~8Ol;E;NaTW<6kl`&pC$vEb2_s z;~HE>C&Eu9<1^8X3QrP*=dk$^Bfo?-&mq2Y&>r8H+650A!}DA{0907@o%QS zqwh9)k6yXN@NY&=HvF@piNe#=ad)lpHGBE4d~J^UXot|Bb8Z_J!t9;SQ_i|nL$g|u zch>m>4lT3k*$LKfYD983LC2}nTp;VEf5P_3%e>H@#otR{Z*G z^vxYms5aDz4!WafONohLX-%9>;%~+0=cM^<&QXdCt@pedf8XO8u8wH9GXCa$;p(6T zS53w@`t3#wu39X(!oS>stEPW3T!~#Yr_Z_Q9j}3}X80W&zC7G7xt(7JEz#pJ(t^R{|MV@bgF=xA2aIpC2P;A(NPe@|9!WJ|ApfG(R$C z-3Oeb3va6mp5|9n!dk9;s-=7$@F?iy4~JSTD|RynymFT=Y_c?Npw?_1BrmbIEbhz$k?_j^n}VFldww)YiP zUnls?MgKX-7kQ)8u}AGg-oP&X?nIB z^yjz#j~SPY<%;$FkKZ?1m)M^nedP%oCdAGnv{+!G4!mN=`wM&s4PLgu&=Y|pahLlPM}_4+Meae0n)?)` zj@+j>P#w8Xv63?&v~2}-`roH`jr$boC+E(7gg)oo^*+VB)sg!YEA@Sf_8Mq^%y|u! z;*V+Hrx+tg#Ly?r-XzrdZnLJ7y(9bFr?|_yPw}|EPtn|^xSqQb2ZzS2+rV9l8@Wrd zhPxE2xl3^!cPS1Hxn@Qy5~@4azKEE}Z=3{25m))d0q#v)#eIq^!CjP(c#CrGQ+#MS z<>~OAgDF1|*%IFsZtrY~lwH4H^P1V;*c)+|{fc$nOAaT&N6&PsjtS^q*Op}8K_k&` zaVMBkzhck#lH*Ba_`PuzJ5nk9lkiJ`8vNzOJ8;#Vx+QZyT)f{rzxVv+;7^PWuA8%g z4z`-laN@e!fo#v6d>RSKZwU(zle{>RCLg@ZfRcy50#LQt3tHIqviaS|g3vnTU}9 z{~h2C=&7O2;F}CpE6+kT+>@AN-m46v2Sraw`BePLw)yj|`T^?0^GG?i%__gol!r>? zjz#mmauRh*%{$o9wlQzhcOG@i=&MXUQY7`WsqZh_7h0q7g_&#M=#(6JSDSS<~#68q^d)qsQLf7P;#ZbAs zV;AqfoN!;f9a*5^?kerBifxHY&c0kvduMvMEU}MvTY~Pu6sh0kUi4I0;$?_K1m2d= zu3yGQyBi{9YA5f$9CRl>r2g@QyQ?xp4r{+XrxdxT+b=%4zY2PKYD#vdk&jzNs>#0q zEiCrlWDG*1R1*Hq8(m%D&Z*Sn5qctetLAUn=jSlF%9lihuTt0=zweYA{~qISR~i4F zQ+~KW-Z%bs=i>{Va^v4){Ou~^k2vMU9(jMZ?)QBBOHR4*H!}WImGOI=^27Rl_-j3$ zTYq7X)A%=vznwkb6m`VsKRXz^-x15-Zi?|A!j^o(s#k_jazOjrHF}LdRTO`!P52`x z``ayvzvT2|=4brv&d0+}xtX8wx2udVbIQ&9Le~7g?v$JP8GowE_*b2BGe6^RcRqf< zQ*P#G{Ou~^gPrnXy+6j^?tJ{$bM5soep%wbZO<`9g^K)YBkK{u-&Fjmdi`%-v+DWq zFDun|;vE1lh^<-HqsH=QxBYLI#A}^?%=}uc`F-0dH}iW@pPS0~T&LX3FJ$fCWT)KB z&-mL_#>YD4W`4%s?tJ_UPPv(%;8c7$;-Ad1=WWib@n=6Dzu=Uc^D6#!_8e2xNbYs7 zgT9Qk{BOq@e>?oyo2_~-{4oo)|Do-VDfHL&KeYYTm&Cv4^ke4NV$E-%Q*P#G{Oxwd zA92bjd4=aO{&u1Gmz;95uErnpeEc4#+^p+ty{^0Bx4vo5`-n%{G5&U;_!XzzoLA#- zcRv18r`()Z@wc<*sOfF~{ooFXe~7ZKEyh0;Tk=a*J@Fx{x4sK)!jI`QX%jRXJeKBt zxNCcf;cXhhKW)X(?iVIoZ3!*UCU=#2-d1eI6dN9HFxV;yUnR>s{e8_uKF?BleR3=z zk4wCAaXxD%^0?vu2a3~z9!qZ3l;hf$L2N~*?lo(Sk3v-CR6DuO;GaC^{K2<^Q%Xjd z_ddH16)1iFP2>Q%U+ZP`^@s)o+KrETGSMacKBd~d6@7v5cVaL6>I;T{CZ|?3IbWRQ zY#@G`+$~ok51g>|o#9XbJRtYtiEKe!^5(K6eZ!)LURlAHtanJ2W$)Erl~35GdDKF6 zJnGkao;}_?WX#*6%g3x6Qa)wo z(7D26zsEiWZ?r|mq>n0>JF8thcdb+9!HJKd=Nm>@JQRGi6F!UF5x=X1&$=B7-ss^s zaqyz^TNL2F>s5Si2ygkyyOH)Ue+bR}7~0qaZIpY(_e+it)=T7XY##ahDt#KCX&J z?r!Z&3rIg!o8~+Zl6CEEKlwb{Hc8tSY1=RDwUxDdg|(AC0H!+q+Sawl(ytDiE9)-n z|3XTFwf7*uk1lV2!-M=jg0;VIuB^A~?IEmnW_j?&q=;+gy*x)w|5;wac;{NE{f*4XmapW5+P~b!T}m_IbLN-3PflRX#}A-i zU5SkuetMYfhphj8tzXSjyW`rgO71IVeFZLG`<|V9b4juA1sAMXzw-N@3x$RupOU{T zcz#*r3;)Bsm&Mxt*m_6qoRnN^qCd+};mt8Ms!9=O;2X9bolp%jfvipKYI80Rp?ltd zOpt?2unyjTRD8XkPEgW7a$wVtgQ%sV>oASLOA$P9%t<`^Y7rdtdrcaK8|&p zfK0&i5ykv|G7@x8=XZ5@%k)j5_L8)4Ss=!lyb^Thi$A~~Z_7}T2hzEd@M0lm~S# zi|f~;lYe`?W>Mbgj0(3ul|A0)`G9d7ne$}qi!PBL_Y_RI*n!MBd`|YD3E{H*S)7UK z!|ZSGN;I?C#fSc=N|f*;F)r9Fa2~N zbGpK1g?IL2WX{vn8E(}P*><2h8|mjcWX@g4CuZI$+>zjK+sNMJAamB1$U32a-~7^S z8@E4&Jy_QAP{CPj;#1NmTC(O$WKFfmuSRvAXgI;yda$BBWh{1$T;xqR=PHkLHI{QV z4tdi9j+5uBIXBOR+f%r+_Zzu6FDB*grF`y2*4z_nPniiE&Wg0B%!+I|J_7ht zk+L%h&ef%0_K1v#J12v6&KKXayULfOVB=n$qEJ3Q%)#k7yqf_G?(@c&w~I4YZpD$p z>lMj;x9DRyLt>K`SuvRKsVT^c<>)~UqI0k8%Hd9)TRne`taw7_06C<_AuFch*Ek`v z71_<$pf92Oo)D_jvf>b)9fZeeKvtCZ4u;ks`;n_kzE>_q_RF{G&!c{!`5v0BWkvl? z#7|wnRrg`)mRfc5sas~%9Z6mCeiO_8jP6_R!}6ClMb_y39aZI0BZBG-wi5IzqEB3n z%u6n{pvZ`ySTTy__XVN-0td&U1`Y;$C9k%^NS`-4v)moXW&QShMem-Y#&Zr}m7UzpzU&RUeP=nZrxNZWLd-S14ChQf8{6`87wj+KpKf$H zTX}b5!u@zKyg$#05T`{%A1bF;s(6xpa`XdW;AQp2$)`>g3SRB`LRXSSC1ZHg(+elUMF`J;xY=UG4`)MC5K1d)_JB zrQ^@Pmo+Q`PizHGv_a#~Z~k_vS;s>4q`i*bth8Mv+~LPPLH?;Pq?9h1lAijlF>ep8 z7+Lkq>M`qvRh($(STSYh@Nc!3M6r9Of+q%pC(*|T2&=&Zj5#R`UCN!s{$>55Tk3+%5(5MoBWXtIh;r3Jc;EHX`rM^7-QFp{$x{CP- z9E+amu};auJGuN+f@f#3GjS{&l?-ss`0~0 zbW8O`{&~%nb-;6mS}o7O7u)Dh-fNDm0sdX)duS=}pKsNlM}2ZQ$~%>_sp~W45kGbP zrW~250eqp~!3I?ejxc?Xq;45~0f)M8xhKwF>H=SgO!Q=xOO=;%hg`%3k1Oy{hHs`z zEiD&(abl*Kzrcgw3;SG<->slS^O=G#(l|fWoUJ_Yg}_1@aCJGpH@Citfl zoXwwrFGf(72EN!1&J-9Bol>N8%V~idaLcJ#z>C23)}XtMKJk}!zi|VdlAQfG?H-J6 zIsFmk;EPiqhsqLS_s&G8G?Drf&?!BqbxP#1pxs*DeT?$m1?{JXao1;%cR5Ch_o;sZ zozm;zi!H2cMNH;p@P+761Yc}puEj6ZKGJ*6_pdXu$Qrd|qf$HMt}{RK7QW>*>$R2bL3U#zOVVk#GR1;a3MJnw)1WnJVL&0=KUqBUEu{Eu)fbgXPTiJsP_T& zc9A>p!V4Z`BCB3OChPsl3^N|7*J*uMFiXP!^I04ax$k%?cAtx%!_PMsGW>cYcAv@G z?lXus#0L==k1BHhW$JqsU5v+%pI${w?)QUF;8{&U+YOP^{5(^|f^!?mb7N?UDt?jg z(w6wm8T{!le)V(sKPB`3VxPz#K*kk)naJg~jC-fAz@74qk$0=fZ9$9!I)rn>%v$E( zMcx%TntVMa^4{aa&3k`re=hV($e`fMDl4wz?bsvas4s_i-`BI&&$4J9kFj>Z!g*QfA`9<$^Of>+?$Ww+b6$o8a*Y+w_j0t^`a|q4cg@wnf9|} zu!q!Jb?~#E%_(dBB8$O0Rp)DY>~+s>#v?MZkvV1~k98xD?KJY(xg*G9O3T7y(vij9 z&O{y?i9B`;c?@~&9Ja+l?}XaV9f$-UMJ_w%3I``n3G4F3KcSrXu3zrt_X2XmE#xyC z+4A%5Nc($FN6OBQ0G5SMI1NobRv>yGiNR9y@*@e&$9#wkFh$G1F_j7~*ylN<$GQjG zugFL5A|KsktQ#2X;b8m41B~@`?L#mo{TR027Hq$b*nSUS`)#Gorg;0sNI3Yj<>B^= z(4I%TL+uxlgMJ6UdJ#EtF*)iko{j_uA){Z+3R^bYWVE?ep=^ulkAHUpXE}! z*{f>)c3XK@8=+54Tj|CpxItnO``d$!KA<-a(exqs#K`j!dt+oTu^(;+XDmucY@g7* zYus5T@5?#PB2G-~zR-cr-ZMO&T+JRQH|pWJ&4IlcsHx zjgx+R{UG|#+33r)Y*_FCW6e<+QKgU#=LxSn4xTR;{_UAL*(1IN&nq;n7M|~Ao*^5K zA00OK$aLx;8|peDvkg=S*>L#+Ns{%{or>egN+@CB4;> z4KHcgFkg*CHhc!za5u8wgUE(0$c6`y4V&Qi_MmUrTM-;H7G2nWo-ZTcV+0uxy~sDv zC8Ut|al|A1ru@+*eCDE)7{}+w$cC4Z4KITOMu*zp^GC`OH(29q!R*DQ5qCgj!+qL! zD(4Q{qoI#RKAddHha-4j%ZEB%*2TG+Z^aD?O()kS@}c-@Hz6M`=~n8w1oi~v!-^u| z5&7Qru(lUmCbxWW-vt8TYgES0sIF`B1fJ zTVjqHS>;kM2UP-l0P+mF67P$~h8Prn?-!HI9^3q0j=E{V!g_B9G*@Z)a4>R-@O!&0 z8{$%6YH8<|?k8E(g9Ytf+y{16Y=~_^x4OZ5mlN(3;r9e)HgYaE@@^jQdc5sj`?+^` z8S>#Ov?xI_;ok!J_#SWig%wyJ`{fMC&)uLv<*>UTjpi>J+UDQzgJ6tH(z+E*goS6y79wf zUPlVb$g6A1hp$=BZCv3)_g1R)NcrfIwj&?%{OQc`0P>;mxf>YYhS(RC z@VUEz$6|2Bl5b_dzl3p~W}ISg?O~i(v9~@At`L5A2K~?I{GyV%9zbqu0q*OO^@z1O zQ(?_bc;UC08+VzqzVyTT4x`Rx%Jb>x26Z0!R`$et>8J_ud`VpJ$RK}eTe?1yKlEnU*d8eqI#r}>uc;=npiU#CE z<>T4ruUqkqrRug`N3ows99XDJ_yxfi0cdbH_~Kb;@TzAuu9*K0I?BBjrR0R3GV^ut z#eQVOMsUVqa7Gh2<3y-^el0vg9eGRfvHBT#Oy{qI7O$uLYtY_D_|5b8>v=vj6dZ9M z<=v4jm%uL=BQmOL~X7?h(Ghidn!O@)bEJZ-e*8AmSyZ_|&m#0}~Aey)xp6a`ze0DUG*e#8aHp`q-B9GX);J z!UL8S9_6fwPDyBHeV4mvYS_q#X}k-5IWKe;8Sz{_{sAH0eJ@Z~?g8-272dtZ86M644o|ojMJyRH%(v-0xx>$={o&SoHgQiVtWmM>Z&Ls7k*lDi zj4#!@yIXj?4xago1s~OL-;r6fj$+BzXZR0)@oIAqlCh_xEBO~Nf4%mq&%?uuFRjSr z^VD(9w~48ll77{q+hRu?ZGFH<^arM9LSJQeKDcD#|DP{1ey<-g`2#r5OEhQ9M+3Woku~lEchoaxe1Ol*f`8u&|9%AD zO?daW;o;%mgHJ3()_6UL|7U0WxeKA-M3Fb#jQ>I8iS_X94agmo|L$GN-vx)X@f*9x z&zRr2mGJLRqH`J%E;}psjhjJt$3ezDc>w!QnEPuE;wvQMKMGHK)Z*X$@b44v;NOK` zzaM^`dkN}*fdW7Hd+XI=!4 zBQoaxK6&KD{wlVmkY$72lrFeF;G6ugIpZVL_Si`Edfol%{W|1Yay=<P*e2ehlNp)Oz_G5VPYU&6NE_H+lAE*xc-N(b42e;>~ zd2m->9=sGD{1YoCa2~PKW*sMb&uSk0mIcdA(A1%e=4l>$89X@fI_m^~&mII1t_%+@x|zHA{~7*!>VW+BIV&CzyvW&Xf{tE-j!I0m;lIK8 z4*$*fu0qF`uZg>M_Q8Lj5L$}=oy~vO0dx8I)7kuYy*#t{Z~dOdf6I59|2Fjv|E%>WYqTIGyL~tZ%vX9-&|`AZ2p_` zP-Wm?led@u9#Zc1i7tPy#eY8opZE;^a~A*IiGAkmQqKM|mB{y<(6MK%xm{px@ZaMFPuTqT26*W-+VarP2>N*v{<{J` zB$ql9%H8t>AHnC(Uuf~)EsSk8bxu%j^WSyw-=z`qazHPa;I}wg+QW|9p!sim-kSdo z?6mmrotpnHga7`i6`L1O$Mibd{P#Z1e+#Y<9oRu|#SLiaGHB>!=(^yESOs-r23K@~ zE3R4e|5xze=aIX)zjIoc&oH)JbYbra|6RxLQfU8^{O0+fmHe)UPZu5l`^=@+(TO!6 zvxJ!cGv(P6mqpyZX6D+g`R|9dybk|8;jol}^T+D^I~nSP#9L|p`x?CVE9HjozHIT` z`>j|;!*^?YuErOf*~C2bN-0YGjhejkh@&@r_cZu!H+=U5`0o0mp=vmG*(Qtc9*(TO z5uIMETYR^vZ}@Kco@?O>{XJs%ZvBpBo6+Ab+l>BRY54Au z$m-&=m}_M9c^++>DT9wRw%qlRYntzV-Lq8l-Nu$X-kQI_!n^R@ykBi#;pHU0`#$77 zIrBE(y`QrN-~DqrYw+Fgeasmn&&KFgz<&ep!FNACIc)gu8ekf}`{&%(t?j<}`*sMf z=nlHi9+mpYkPV?;z8gQ{pT9-{UZ1LR@@XA!$9nQP( z-S2gPSDxXVFGFT-pbS6a@wYVJE%T9i8C)^i;k(PQ<#t-}c5=q$?rhFI?bdnPG~X?D ziN<27FMPM~M?zbn``&$;_iog@x8R~Wcx;1X{ly`^n>B1K-l^*;hxbnQU-~SadBEbg z*I4|viC_Eo=eNa=FK0mg*#95+Z?WgO2jIU~CGp>nb_(t{`tvCK_oTb>-y`9_xtFJo zv#j}V;ad^0e1Dv-yqEu$`pNuvQ1jpKSp2t~?c?B?Wd6HvZY<%yqZaSI2Hsor3vcAx zy!TOf?}mEOi3?w3cx}0ZsCpZ|1c|_1`0ByqOHZd>T(W$5K@=w&T%9W8gOg*+?ma;MmQ^>XTnZd>XIUp-Krnbf(^ zPq#geI>J{c)hWEQpT4?nsUv*#Ky`@eNilr2J@32ewgd3h4G)@iS_5Bg)^Vb@<1T#l z8b`N%1-^Mb^zs^fbq9R4@YEk8CqpOQ*c*hN&LXB}vGCPLp@}W<&)9`V4C7N`ZP0Dc zs>YXL9l!UW+ir%hZcgH>@6>Hig0CKVSJ*Y@FGFQOI|t^k%g32Hio9m{>*-y|{Pl_? z{+jO=f4vrehPN#J_8$1_Ycapi=C7}D4)H1Q+5B~~M@YkKt1$-&!Tl3fXM!y}<`t4gm6|?o*Hh+CNsQsVD z+VJq4_Gbt{6AV1mczgM4#o7Ke{#x|g)zCq)?+9<3%wNZW0rcDP2RWPQw)^ESgyU^nK+qHgM<|FemG_xjT z^Vb3R>(}z^bH1Q^#a;O8Us%s=e8D@>pysdhlKAVH=(nTzKTT(jHh(Sp?N#_CiCl5m zg2_wZ3(;>MWKO$-ZkNShKVb9MPr_e3iC>b;RrqW1WfJ|i=C7$Ex_jX>4l}oK#PHXv zr~@Bgcpv@bS^Tvh{yK_|M)cdc_+#Fp4*d1KHh;a8v7tvV6gfut>%;W30^K|O^}G@E zlL_xH{B<6@e*<#(cE3Gu&0o8c`Rg{{3i3aFJJ+mZ5Z*)9(dMsD_TjHZ7LSX58#x@k z+WZ5Wzb4NU`t2Lw4B@Yl$8Egvek1zoXgD~n0sVD26#N-7_xxqp##f-%E{z1o`1$1d zL!#fVN0$Zen2#)e2^=H(?U?99p9yA9Tm^r9fVqAafBgvhZNpz@qSr3@OT%BM@m=W7 ztT8seP(|cBKps!k_(J&WHJZPE8XoF(?lF3*yRTk57ykMbxS|?+*XtI4E%)Ut!5%fy z;;%RIY@)?q>-Q}FT7S3rYg6Cw*YbU$g)8*;h~cmGI~ISfzgzsZ{$6S6wZRq7Vuzb( za7E5I&0nw3{PoVD>R2DiOo(3lh{a#mXk2mX0UK9@L)YN1SE#3|4J>T`4F0+^zU9&* zoF{yrEZJ)6V>nM9qJV+9M4ISlqY9IbuaFOuW z2FDuy+N|NH^VfFFvYkIf`|jX-D7s0B4G`ZT@vHgaX5sB~wH{ggb0mJ0x;pRlo<2Fr zrUk@5;I+|aPKD}L)UPf;FZX(1#c!`y7d{=mvg8C<3e4WdZ+xPNNIgy0gm_ z!QTb&gGW#1ehlA5cmZNRf{&iUCmy@gG-&*yVd&0Md1nc<9v#}Ew{Sc=!Sh;j0(i_l zh5_+i%Lryqn;CZdm$O$*o;-Z-GDK!5Y_06;BZ7Ra?{;3onDzaoyhr}8!~`uLqjRNv zL*f^s%=~=#n)UP?XOE6y6Ti^CyN}&z9Prr*e5NC_9;+1i5`TRDiu`Iyq!d~!yaeCz zWvhY*)$gI_5#L1pogAFvn`r9iXuFeqpAxA_*#;aLexy(>ta7Q**qS#)@VB76)$?kS z{JPQ_tHi5%v@i1gRetRwx33^m+os!mrY+N6-sscN1ED!?Z9^g+m-9x9Y4>hfJ8ZtT zjWfU8?Y~W#*ixSg*TFZL7}M$4odeWAfGv3=KDOe++yd^Gc+^~Qe`QEy*&HRhqG7x% zJU~A04uR*DIM=24IUb|z0Cpiec2)d-OL+M<;@o0BD z>ps0NQ$o?(_=TH2BB!nRhMK)waa(*t&E74zEq1>Q@Z(9J?BDF$_>=m^g|6RP>-XbZ zWX91}97>jjQx*UE+MhlzydK^7`QbGO7|pj}wB8%8B}B#RM{_4qvS`PKW( zKDv_N)Ac_QJ~t=9XU<*V^GFhWp0eWnZ1~I}Us3*lV)(S@HxPX0B*CXy2Lqp+(-#(6 zv6GzFZlN<@w|;+KSp9Aitgc9c)dfkgTGkI%{T8fV238*iR?V2&`rcKnVbz?^Wc`($ zA4K4`zt3$cx+~jG{6VVF#yWf^{gX#l4TUy7x=8$IPc-DNY=68uJm^jGnWZnAGpJ@G zpOLwPW=8oOIVb4e5pI9{FnMwIN5|vZo`P(!%I08L)3FCW$TtFqOknNwv$8$JwoA{eZ`PHeEw_+=6!FG&4 zn;U<&lEKjZ6`}Sbcrm}&4g%QBmSZ#1bRT`U#LFEg9$_5$BJexbcGM-%^d{|}CVt3W zUo^O*_e@pkTp2bEFn*kM5%Gm~k10!KQcr6v&H0Dh`inK1oGbgkOw}%WxiLs-~;ll`q|Vk zH06;q+&f_Oua#9U)g4r4H--weU-{vJY+}n?+~+Q``Fv}fB70`xBU(xf&pa)Aj`e2Z zTLmrb#}BkYV~q@I;*^9RxQg$G*jro0PXwQ*7HDx((4Aw+p2&oCn#T9=F1akuKV#_j zx#7s^wr^PjWiJzZB)qrytVu451Nf>Su1MU$xm0plh(ACae&l}2hG|=lv4hpp?jy7- zV<1O{9>X={|4Z0#WDJ9`;T%Oy-wr)C^V9gIP~wz?A824bRH<37+w}W#LE7ytC1xE0 z@B@v-_=&vm>uhrt<{^K|*|=c+{`_ZSS^!>N=OKFKkF4u6dmJj%ILn-aJn&Shbq;bg zo-*es6C72>efMRmRG*`pw}@{m%MI-YXI*!4ts4BK$3s3)rns{`!xDzl#3!pNGFvta>ZRe_`XV75@(S3%gL&r{S+{e`4lm<1g$|oWn|R_ z5ME4pFv-mZ4aeWb)^9ASCjUV^5Bq=ih{}ln`r*h(_%WqpCZ_89hsw@Q2`75$eQ(BU zgG1DTHFfX~L-q4k$*bm1K_>k!G;9#GD1c9ED*9T8NHk%i?h!*t%0J5EjA zsouX=+x=EM-jl?+S>^bfthLKMuM(SPy;HCoKU%x)R_eYP+Y^-go+XAULw!izkdu+X zApbNo_EyOkX20)QL7Q1BMr`Ft=v%929_{Avo0xd{T~JEfE`Gc8@2TiBw!>${;`!z| zzPb|E9*Y;6=bjwe^YNRDh;(~V&1*~xNX`(2{PN1LMF!>0+W)%6FEO3s1AiHMEaQ|l zKBRROx8r4JD_Pr(MT>tEEf<@1ThChFnNs90Jsf%w-U(Vp5!x1=RJvQAvbMY?uBP=Udd&jp~l0L*=18b^K?JSWvw2`=VRUz zT4~cuyAH84_^1y2e5yB1&rjOCYklu!?p*kk`kuFL%iPE7xo>4o!k_exxwT;TZRx)g zJLgJtbd~T#Q@xvS%bH%IO!QE#-Y9+K@J^08#qX&e?sV|G`0diaTRnl>>)6*$_Eny@ z7L?IuA-@aF`(8io`S|TK&%K5Eo(LIJafp~Ao;5^E@pZ)aKA7zWUd|p1jZBrXN{mr! zK_PzpWoMsaPu~GvegeG2lHg^kH;a4`;_?13^31B;-zP^cWLN>47}uf^Vq|5 z-pc}xtn=^r`y^O6*$WFv@G{l=Y7$KCcFupRhxG(rdVrTm5%*|>4ZOUY3@-x1{ov&q z@ba##BmOO7C%(qI%I{Y0qu9l|USnPLZ^kX_dX06}zYEY=u&&owS6$zNmusx6{_TzS z$QkX0mk0hq!;5!k<}Sa1msZbZeI7NuR36g0It?%2uTvc zYh5!r~W5dgbsMX)OlfJZA^u=S*mllh@cr18nvFJ<7zcPJ^kb5;E_s&@K^e4m8R)r9Uj};KYSEX0p4;&9sGfT-ed+Dr(3h*g#yj{Te3(REKBnw#jrRI*$hNq z4A1aptQvS(c^CS!-=Z)3E&8(GqA%kuco}cem;L|B^d$m)c^P=Ax8UVOGQ8Y{zFYxb z44yIc#l}N6eX;RSt3_WNJY>-q8xKvj;Kjy6Q}3WJU%qbW%cS(rqAwo;FX_O`uq1dH zMUEGnz8tXV%K?kN9I)t%+kzLjMPClc{j9?CTJ$9r4^AH?@M6)I4B)^nv*D#rnMGfu zEE!(xIyQY7@VP}_27GSOmw}$!@RFhD-b-J4`#1C@25iK*PvLeFefbq-KM{B+F!aUd zvu*m)%V!(<(#vNX`eO6htrmT8_-u>5=rL*fLT)nn?OgI*2u(TSji&9wuc84MI!gI& zPeRl7HpU`rDETJeCBAwYV}&<|FTkHXK6sFk?S%eGPDYb|GZO!Gid}Bb@iKW~bcbj}%^y+#d1oJLQwCe3NT+JKuB4r+Q^PBlX-O z@r6#g$;&DCf7^3SQI+@}REJ!ulKiYSw9~9^A8B>`6J^ia%+KVjy&1pYl$-gzXwC10Q=Xi!c1Qe&PPv(%$-j9s{*qH} z=4bMeM&ea_W9Ki*5fwo5v3is z$w&Il>EU~i2u|nH}iW@ zuj$SBYfibDU&z|O2B+N2&*ZD!5wCU1&HQFt^ZT|_ZssTQ9l2`abDeUN*OZ(?dYvXa z61j_RuvL#-rO`rd3vDhi`D$f7-m>%6dQ3j! zOYvXaw%5bVuf>|*QK#I@??r3>nw@epzmPS*?>psYekNaSB>p|8+|1A9Gu{zj=#-oJ zNscywyGNYzRtsL_+(hDEa>@_uJjWv6+H=(Kl3$HILEuI1haYG18I!N}lUrtfI{%IJ z9rWQ7y-^nT|Dj8Xi~R$Aik0VbUqtL9Vh@pcH#sZ5=NE&wCvcBV-`o^SlVdIW>6>kT zZ;7E3-Hq1QNIpmGG@`SS`zV56`6#p)8->`^BrmDxah|vQR0jX036`Zxbg>=P;=^LZD)jo|6r$d}%-&s}f- z*DUU06a9hQOJUDd=Ks0on^Md@ zg1M2D<7O;bD%>xRZMEmxZQzP`WR1(M_mm1%5#Qi_@wUY2-`BY{rL@XFZ$qf&b`5g> zPM&ekEH;>(DH%~ePEMOqkhRB@TJ4-UvB;MceDW#uHDf!j@ z(ruNKZof#oA?BOwDdg^n%_%3N{+#qk-tDc#$?c?_Bi?ffWzui^z4f8G zlzq|mi%Y})d9{^^TQ8Q#eVdqu7~8N=>{e9YVX>^roU609(|@Jv+`De&iE64U;{ZJ zw0*BYeA2VjfvC=H;F7$z`IdjVqIxMlCS^CZhavSJ62R^0F zN$QLauLdvn>!+_T>s|U0y->e?KBbQ7NAj)M^VdG6{+-}E$)WI~&c%61HEbT*W!CGY zy4B5Z%g1yQ`dGoO(*je{KO&Ax?DALeGo6ml+J1c2ep1nX?@D~u-oYBS9#^R4Ec2CncxR>u6JImB#y6+t7`^%b= z?shQibqM*=rCu&qiS?Bo;2Xg&rRdG<`yGm`wU9e(+Q1{62@8H&u#XE}ZDTEZ*FR6^ zU(xV`9#Y~N->KGi>~4{Dn()_ zpj{b*_~Grx=Uv9I1iO1k`?1^e)Apsnx{$Gt*RUQ!f2IWlew51a{)l_J4IUAHoM$CD~^hG_AMoGlz7H*Iw`0!E!G}s5+rO zK+k;Gvvs)SIBB+EvynVwUjsHXfz8&6_M+9m=00F^Kd?z|leb%d&D|Bj8%u!AgFHWu z|0sD*iXI{V(bM?5j0Qf3^0|_Hm&++n2Tn8j+(drNT0XCYwwxzc`y75Tz6$m-QtnRN zj);7hHC+5$K8maBlS76NHMS1?gDD@~sbc%^f7#_f!`NlqfuuaBKmEN~KcVq*U(Xq} zGuol!hISWZ0cQqRw*`{dFK_f}vHbv z*~R;H)_pyKdzVs&*nC~bj+wt(of_)wB8EuLbscqx%~#@cVaMiMbzFD$WAJq~b%@Q^ zbtETh(%Aacsn+)bNlsLI4afmi?04MtCZ!!5QW^o2aMEML@@%bmf)u)LgI!$Z<`SWJ|B(mka zF<&Zle zzU@t34}PKC^@HEkn+|brJOj1bHwxeFDLmmhw*DZ7Fhtll%rZX8?E?9 ziQkm?N39N(#U$2U{IH**?CCCd$!+|{CHC|R?~<4Ge2 z$H4#V{Pz4b{?A_reYVLtpK6g+}Q^lZ}trb(!EAS7z{jK0bwISD=J;%`{A!HRDxCZ2m8>*OI9=vsdru{vgs(-^b4)AhSu0=u)p?*~HH zSV!^OR4HmQ`Er0&_e%DX{>3jy{2RruQT!Wg`1|l%!6)eR+)!X}7@r%+ySb6iXMtIG zzjN@4V+0m6$d{AGZ!4zZ+%jv7SBZ;T&t7gU&wk?LhB{1AndE_xyv|yEgW;rzaOVeZQwoP3p=*o-(}MZp&A3u*KVrkCZq`JRXHeqJvUJYv<5te?io{uUgq+)h!OJf1 zSv4{-8+vrB=S}eP$NJvjL+U~Bvc!Hhh8i^-_J~v%nSxQ~MDUVE|ZmD@6{3d+9sVng@l8=$R+vt8>=03Na z{grFrBbZx2=6gmhsN#I!4?8T{ZY+&PP!2{VZ!OgJXniowe~-0 z<32aZ8`z8Ev(#nI#BR>SXx4r#`w_rbRr1eEOsU{k_@-F~$HU`Cm0HHTGvxg6?lAmi zW1NW&Vmm7-TP8T3Ga+ZKiFf7vT%lbLXW~J4e91Szfip3RcT>q5QEA1W$@w9!_53By zgy8tmR{V_Qg0are|Ht0jfJa%~3EyXu2@DY1Xj2;nagb0)GMkAtb|)mj1h7q&?xro; zv~}x5LWvchrCZu(kV$3|0tRLGNdVbs0mBk8B7Gma;``7QBvfqiqwiu%S-PcdSh1TB zdOfkr)`Wn0fB$ptd*+^y;0L=S5ihd<24;ku!7g-3YSzwGy`L)rgs!%llW zqI~b6KsK>9%siX#@!t9x>w7}moxv9l+h)Pz(fNI=fEW6AZKzN7g~sWz!ams-x;*CV zlYODfqm%k17JFBZwuj~YOx_Qb?WpZ|lYK#46Z74U;<7l1@plxvhuFj_ zy_Zb?hv#2v68CT0vY8V%m~nHDN{S3pvSRVa7QTy~317f$u(jH_pz&O`rS)16BU zwCsOrjD4@3)g3lzIu`I4OD|x(8#s)N!M3+Kn6S5*?cW0)wA;s?#I}S2Bjo3T@JCZgw z*|ZlVZ)|MPy$uSEjseT!!8iU%)?-^>*Vrwg3+-!4qI=-K#3rM>a~5+u4*jPmBK%#4 zwuRXOd?|?;`+u= z_-dE!&#%zmah5TD;JK+Md(Z4Y$2*pNjl47Lb4&j@((~DV?&!T(`}qg8{Y`@&ds6?I z=(A;CBepbEmOYwnUt`;&&GyInMh@f5vFvS@(k8Sva&)o3(Xw6E^d$BI+8)QUuQ`dm zfX-X`&y%dFt}n7(&cF0&Z|yS8FUpzO%=x$;U1Vd-qiK5Qe01=gWIp%W7l?mT%{tik z?VT6&~yPi$wX}eDOyReV+|8Tnd|(;CS%;SJ7{^(2lX4 zi_A^0nP$DWNBuH>2zegUQPinw`j3%vxi8|ds%g%iu?2YZT(lrz%QxGPOagebh4bLY zHpz>vg~wrQu|Gds!x^6iXWA_|({8~T+m^50f-^p?f3)GuF$bJ^#Q_sK9B^j01J1NN z;LIisXVN1swKB!lVp&=e&O{t-F41ttwzb%w5B$duv;@-Ctfn_O%O|RN`l(5hrR7dnKJateSv5ZsI{#vj;Pv z4MV{EG1SY^d+c;iWTDU_`~B6>0mRCN-m}YQ`xof%NLliHB%klk7kP|%XSnCH1KAor zjre}xjJCfU@wxwqw#6Ii`E37g4WHKPd1%pRY!368=s&t7fsdzwKc{W`3vK`EQ3?AC z?D@pb*|yu9js0sqYn`y$)b>e9oHAS6Cna&per=!Rz$tz&?GYQCK9y+ui~cDi6%1&DtyXFl&8X{-~QVEZYq5GS)x1@KJ81CC*hMlR;_Q&@c^Gh-z@&?ZQAxK zGIeEiRpPx?a9KEb2t9-78koN(x&IP?hv+A3j4t;2z@)R-=Au^?8Ym0;j=3~C zHTUrTOyUFJ)U7%F0dDY)yq;awdOqWz+eF@C^y02=TbG*JPv;#ebHXoPYq!5L?!0T$ zNf-Y6jKqHNw`m#8d1O#R7Y;z9_M(uJH? zm)KtK@Gk>)IOsylHqQ1{m~Pp|?a=lS!@z5?8?xy?uzk`?_~Znz|UgegN=KBj)rZv-Ly>~KF(Q4lm#mE zcbsLmJ*kvA;j{gYZ67z{^L)1+-$>7G`f$YOfrA?Uimmgr(WE_T^7~2q>qRzwnBSyn z%AxdO5*II}O$RQv{1pB4`%$=5JMXJu>66jp$}Kl z|0I2wVZC=4d32|?e+m~dXZ^jJKFnO+CG_FlUjy!Jul3>AjeQIAIon_DhCV#@o2b|d z_YGbTjhG9K7&mZ-G6Oqii(fHtr`3WxtrnfwYQY_^Ws~c*;7)4_+;Q-u`3D^^BFT@= z#$G$YgZhanJA@xy3EbHRo%p0>llxL^Q+k3<%wOtg)9|CGup1KFum9(Nn7V!4R;c@&VIv>+P2OH?r8cDcvJbJfj0;H-wxi?LK}*I)C0?t@J9Gi z8{Rx&@uN>z@aB38-du0NnZlE0oc5IiJ@+Nb%{e#l<*}aI z6Xk}EGw>zaGc!@13SXur%AN4#v7XBk<%V7}@Fm*w??1EqW8j+MKL>h#nJ71KP2h_? zUYD9oyq!4kWwK>|yWP-t*b_dUc+b#xozQm2NXWsO4kG8%u=(uj&@ycs*zSJ?8v773 zIHBjl&~pM`4r%!{J8ztF#jzVq?m>Gmn*YPe=fs9e+fL=}*S1q8uGQ9Jv2T3RZTPes zue9m13*~h}7xW@CzARB^Ze3&|Hq_-0#@y;xA-_w_7yDc6B7y~KRnNl-ndemhp0xUq z@L!YI3sUFje`dZTzyJD(nP=?W;yLK1n1}pEeGl+SbiWFlqld6-kT_Yj=zd=#{?%l3 zzjmCg9(2ENq5CCHmc+Z1SXk2)_6-sz3tjcC#D}i@4DmC#E26U6y7zoCb`9v1Dy>-a zDRHtsjXt4ldG?&I)tES0Qw1J}`dl_GYVc!Z;=Sx$(eF<6A4g`U^-Bf&E&bAK;Dw%n zXMSqNm4&Uw;NWE7g~0Sl#D^CB(%mJ!Pf09!iG{IB^t;5k@M`@Kx+U}o(~)De5+6(M zc9K|^-l&O>CG}d7ecQ1xT5EIB5uo4I@8_T+FtIRNtymbQzaI1m)|v#(`>JlfS{^lX= z-}esNH@@WFXkj82Mr+iUh=tKwJ1G$h!yC)eu`ncV>1XslQpEWQg{SLS7-z6iGJP5n zzXv{%zp(HFPWS;oHy}1jJS$4@i&MW76&xt|@9E(@8%=*J@QJMEP9U*O>(eq08%K)#Lu}vf zVeV}I1LPn7Xx@{vD{#}$--A7$O_Upav_Z>K277K!mTUQG6dql8x@!{U1`itlgTbDR zWVx;nf2r&L_Ww)$uECFkJwHp7o9|AtzPm43uG^V6SRb;->Jq>A@-4_eezjr}`dHDq zYySiG!z$}NkJ=0#*avKFbNC-TPfQzdO~OCrwVvCDd`I|88Q;uAxf!4FKN#$pmMpjC z!;J5;WVxPK<9{&N^Y1^l$8E-E{8I*dewi%S?G#$yeIZe9zB@^;>0r-yljYWYhz!z< zk@$i~uo#;xHt#s)66|x78s+D<1sYk4Y(q`96U$d*VSnxi3IX|CrVn2k?MImpM-;X__?=!Z( zFECcdE3q}5vaX@=H5qHTqUrB~HXp$q%T}KZe6joVqDuD}f1_<$UV@yXQNAmE$ptpc zw|}|bjQyQ`+rY=Vj~RF&FfRm+mWKSq_W3yWH~#|M8jH^dwk>lr9dPdJ_!@|=@2*GM z&0VSnjtr5{C15OV+wj%b^n+qqGaHsDH47V*Dr?NCz9mAZ6)^Yt-1#N@MPP-%ztlZr z;GWE*zR<+>p8mFf=$;I$+*OSMed6zP^J9^suCDpYT=C3@5=aEvGp%dbzMGU-u!Hu zp(P6#qmTPy#V#yUpUG|hYJIPC=PHr5!qs+k|bEyN-V z-uNfxThfl`Cw%llo~_1zP~cS=G?nbBHPGpUgOBCQJZ?a~6jYUUF7BFb9DF1s^Bd<~ zd%yUa>NyKx_RQKIrtJx3G)nAyO*xyUcehABcs?0X$L*_Y)ySwClC;pW^$-c1srkrza=6i7P zT8Sf4x^&EhkP9rX z+92?od*z0ONiU?W%##>=!aE$(dYH<1;hFTJZ@)F6=0+9!Mip(|$l1M9w@u3z@Or7| zOL#CjKdz-J@z(~HR=~?u8(t21yTo;T$>QalF^@Z}n8z<*$NM67 zyoccBo`;t^xFV7kg^yNv2xy8>_oz%$&ty zuX>0*_*ma&Ys?zff+LxWE+_5+&T+0iHjbuk;4N+3O&gW(?%fgbg}_q54+3iiC(%C( z?i(MealbKVMD|>t;l+U^TQo2J+1ciqoJrRUX8kn8}=pRVTYLVH63e!}X zBmOOMtYuxFm;0OGzaI^WFE{+=z|9A3nnvPNF9gOu1#MN+pN$OT{NUfgf3GTvENraV z!@UyYbPVdJYFpr?B_6f-vWHY2#Dc`99^1ul%f3@$RX-J53SaIu?^yBUb$P9cA1}Z2 zu-SSJc?z{v1V()d~FJ8iyPW*LDeCsS7hx+UA z*<#=K6uh&2_sUTIUF`EF#Fe^@x{CKDzI8RczI{i9@b3@7zt`4?eusAJ4F4{1=Pmxd zLSm7p6DM;E-+B<6&EfcWkqa!r?k^Ai-HWfC#lKtetv$%-WqgKzPsX=q->#o&`5v-= z2h5n|JSTm?l6WWSuPgL8{JQ@b@w?2t+5GzX^}jt}_K~!=2OMXfccl9Fr1K@m{5s+1 zh4fsgNPJu6j0)ToIh@=L8<{XQIz`RJ4)w)h@rK|lp{ZpoLaT}o@^E7@_^1XPaH2+Poe3NW9j@U-_lYEYXoFr5Sa5T35-xOiIN`!(U?X}Y=4#d$r;Khg zGP*D_y5Fog`bNkR%U)!3-0Lbbx=+llIr>IAaDBXy(Y^5!aQ(&T(KqhF$B3AuT1R0(7(a-k+7rG2h9oFzQA)nh8 zIE=q5cDdau?1T?J10S`l7Cw3&4!-G z)Ohn*%9f|Kaz^Bi@o6>Xs+)1Y#<`iyS>opUV)3%62N{M_W+ zoJ95}@-#V*B2N?lIX891f36Wb+$Ef`FlX#J>h5sJ(_W*l_|IK0?Q$O15VzJ%-OT0F z!?l#*KSvz<1zLY<#;4DtN=zbWaj@k176PgrrVbla9)f^H|!uIhejICfN`H`I0VvE#IUPYXnl zf&ZZEp5-p?K{B=r`#r)0ZsXEw$d=1bo?^R#s!vpUTxbTlh#r<3ywDUHcXa-Gg0Bzk#7i{HBoYdeovG zv1x!dfF7`UfES_hUrF#+8vgxaVXXVO4ga>~A4}gDicog*CoT9V&!4s7-?^2@g=r6c zEAh)_jR}A8x*slHF{#dtZ{3m=FKk|oZ{0m#Jlg#=eCrkg_Z9;8!uUg11Mlu#akN|R zt^}@i1J`cFZ?5|R<9pK$Um<=l-8=Aq*+zLf@DLpZ^)?Q0_ho-iw7fw4UDhnmzV)j$ z)5~f(tJ}oBEp!HcFi8(>^NW6geb&u&-dv(=V>1_xl>2z=vA!s1M*w@pLzA~ zS;+UqpIMh{|FZ&99zBv~{Lhe&13w=Fey*+EfUZa8GmH83TK)*%|A!>}Jgw=wDCZ{1 z{(35KTI0YD;B|7njc#Wx}0e+*2_pp87>XB-`a_^O?bOb=UdxzeU* z?xhbxCrKZ~|5*C4jk>L3Oudh-17K-ak~z>kFOQ+}B7 zr!!`eZ8~h?(RrDeRU(@m#~rOQhda*+JTTvBJtwvX`nP|>Ie{Oh{YKiie*2^61eTb0 zm+~&~V}(a;3A)rhI+orNCGf+vS5A9!Z@9p~d9;^fwHKs4uleow)1J?2&r5p+*1Orf z8#KTD9^NfAbpq!GWL~!fHw~&eNt)^6ej8>_%?ZmH-=yh@aL|i>z@zrEM=}C?kV!c8 zIbrGq%|4I%&x?P)ISbzN;-4?SXT`G5i+{d33m#&Ufvn7iuRqu?+bliD`Pv2 z%t+Q(zU`%5TSs&50y#h`|1a=xIXt+~nVJuT|8vR;3)7+J{tf>*;qQ(m;GAEjuMR=C zB>2EvZcNg9{r|5G?-G1q{wrE1Yu_vCM+8uWnO$~U#A0=t3%w8`i{7c+x)c5gJ_-Bm?9x#O; zoTvH0`kB2?`LUPq!4HnZ->o-niy-_~~zDs#8D;Rp8vKNI|5e!JG^ zwrTov`7=rQY52i?aYKJj3oIE{pKJ4j3HZr=ck+V`_|eOqcQ!9}O4Esk{(OqM0_QRW z&H-!T2Ytd1t_3E}qAXA7MEF60wZabyT%G{@!+*D5?&BRxyXp7^TW~qS53Zsv_Z#T@ zjsz|f>mfXWc0Cbu=hExMg%JN;fgNUi8h-km@bmooKiO@=&tJY{eh}IinWfkt$5{I( zEq*MOciL%eF~Sxw`+Z`(D_OJ@w-nazu)Mf7f-$edU1Q2N5{Oec}PR=7?}=y z9k4=Tc5fqQ_j9pO*K@I;wugNSADd0|eYQU+^dvr)BgO5`xrDgg$2o(xU2M`mjd+2Y zp44$&#XjGzBk>Wf-?IbaFEw1;?nqj~CM^)vG^(^iyg=H_!k5jC+fBS=aD*LCkoe8C z?Imx=?Z*BeT#<|?h&}{-VaF4kO*{heT}Z?e^qaV$d$DMvS-Zm-s&;$J@q#Me}bXy+0fO1sUr|&-Vw8 zX#a+hp4~LbgOm4$Zi{>LIWuI6Ir}_c=@>C;nDMH;^6;B zozDY%M$hNy`Mmh~Y#ppSyJzsk*#h<242hj6GK9#)Wzop9uhoidLDS6GL`JY_Y8;$$ zwrQ~RY|CKf+4jM$XGK1{Yw*C?jzQOe#AUSc@aK@(W_;7&bzuEU>=?kqQ^CU}_z!+R zwrs4(boPR~X8O5rGE{!3WEdPQ&-Y0@I^oGIna*@ert@}pXXv)^Qx+Vo+X)=h_|kmS z*oB++cWNB0f9JPq9IWf$r#ut~Z{m)o#@L=Qf`fJaz*0w>#xA@a9NdWPV4r`1#=-49 zIVPV!PvhWraIid|iJi6J;C6gkb$#I}fywPX1?IVB7v7Fft7%W;U}6^a_O{OQs?y^1 zu3s%A-cj)zz0ch3Q8nEm)x&(@&rDnk{zGGR1S3D47ZX{{8I-g<4kcQJ*9Kbf5ye0Xs(E?K^B5`P)$+I+F@@1fAtF+THFS>K{S8srya5 zsrLNi;N~3ViR(B}?Oy2Hsl=PgCEnDk1=-i#f}HjxXjGBs{vH}kY!0uif!^Vrm32A} zRC^}na%a6;?x5zKCz03Q0uB5rVpM&b_K>UI`0eNtXai)Ge5bMd%J$cI$4{)kPTp}Z z$WF_J9)FVW>_CrmlxK&ClW}E@$p3QG626nkJNL?WcxN&1baFp7vWg0^hnz-iggf}o zeDpLMYlJ?q$L>w2bCSLOx9w)0s@0LRGM7r-6xhVPf(^qaN&K2S z?zrxUW%p02d*y#zw>otH3!5LhXV$0Y-Es7dd!yHlx#fQE4?lIkclG@Hy`Q@6{>Yrg zQJLqXZ(NV8pL^}zc&RpW-J#l}ZxHKcIx?>}PI6a$H~*ox?_M3eNfli_?>Up z9DU^8+VWi=VH_euU06F^Eo7XwZbbSd^7)lr%KM3E8M33u#BcIk>;=sIc3yD(&!4c* zZf6i0dL8kn&Z0N$%TiPM|INOzDm>*T2^$HKf{ zV9KrdAG$nRrujtkZVB&}S??C`Zn^btF7KAB3Eev8AK%WFSTg12j(U52SjV_mUAbKC ziq{rudC?~W%e1`ByU;S|zxN4if9`|_{3-Rgx4!bjOu> z=V4#UeRwO;ZG3_EKX-QeRX5d&ye&sv&whJ?x;Ii6e(`&2YRVg5vCh{=C>z^9{Y(F* zV}azT4Epdob>q@6+O0w_Ik&d#+RxoTz40b_zkm9gr**tPdwec+Yf;GeVAQK_UG67d zHs@g7`N!@3zKp$K##^rM?%AK;I3PU0KH$*Iz>)!>i#HXAI*XzW%$dN<@HX9TlxZ2%@nERn`%z-vQRnIWL(GATGt{PefSddxpGyZe$$59Hr~T!c2YA}L zXW=I6o`vl_k(-V)u9^NbXC+?24}-udt88DO^Q_3aQp)_V;7c&1EPu~g@nv?_n;B@s zZ*)kRziF6nM6GYgST@i{$M^HYy4~&gm#jvozKOY>8JMrz-AUP6!3X{l+RUNPIcl}w zkAR={yyU$m@1I0}edK*6pPxya1>_5KerDiYztHg8!58xWO#kVAiGjfV#s%P8_#*7f zW_YmaNaMfY_KYQF9e1HCjjW$rEBaFK`zi4IDe(I#=z>$=_*3BbQ_u&e!0|fnvBWoq zM!;sHUE6kp^Ambj!w1X>SE#}|n1MhSv6BqW=m1uPXUP89w=KDU?0r+-zcD0na!uXv zjAKsT|HG;LgwPu{y&`mnp;x{=EWKjWDnjGf^or0pPFkfBTIEY$x8dEj7Oj#FtuhH( zWl!wf7@<{;v!`bnTBTz+T1B2e_a12#-L^%m=yohx#eCDyDyDrytLWePhE~yaMx<3j znpV;EEm}p__ZwQ}kVUIJXVEH$EL!C`i&i;g(JHenTIG;Mt2}4XDu*muWtK&&9I|MY z=Zw6-6^2fk0-f^ByV-l}Nr4pxUU*b(x0je%1?r(wx!3Mok$v}W`mP1FeS?2L;|E=>_m5TAT5%=h`7;t{6}oW0e){$Wk$neQCbG@|~EJVs>orv06ow$s1;t(r#Ezw z%z4Ybt8ZBzIh!8!e(J8}M<1D56Iu6h=ndkae))>%(MSFY-Q7a+lwU{uyhn(MIi0wu zkG#NrydC`SjBT8ISMAZ#D~N+t4Slk3dG^)+8k?T87`Q!Ebe^0udw;yvrGh(RUEo%+ zjkM^KfQe7{jI6&uQ_F2O%m}s4jCN@Jvip?TFYAbru_hvO*`;MCM}UDdW1F;G_sM`8 zd6e9Hb)0!fk$Or^y^7 zyG|lh=WvhUv&jt2CBjnKM9QBao{q3~p zC6DbT`C0xJXbK;BpLw3&sA-0mf!q3dAVPaVo(IkIKsD`!7+@0dL$%2NdW4oho!6Ppn;Tuu9yIr5SE%2|v1cM4_}FNCK=#~zf4i|~ z()_^0j(;Go>3HqO_c*$o7xCj81065A zoWEj^E+%g4@8A!F=Uqfy==gz^ls|!v2tU3Y;af%b^b^{A0o~KzN5!5gM?FE^vFL~v zQCI8>?-kt>bsOMMK0(>_{nMxX&f*V*XYZoj4%&DEJ=J#jgGCxnPtRFLU1CFDbp`tP zjqt;QKfaB9A^br|;z6-9kTyn^kvp4effdYm;1(y(wC$3u|xq_D#Uvr<9u^T^g z;y-I&-1F9V#AinQ?y}T@gm1a{_&_V`pQbB{vi-{=xM*Z)`kuEZo?;6s1@*LE8wS| z!e3(OU2bMPx!2x`-)A~Jovp8Jk86FczMD<-wb!Gs?LjB{5I$y^@S$TO(+lpRei^#g zYio?Yb{p?-Z;yUQ^tB_sGnaQ_4t;Gk?`(s|%tQD31iII5zJuN>=fdw8eeJz`XM**P z=xaxM=QjC{rLQ$};8I^M4plq~fB)sgeQp)%J55Co*)U{aK;|?}+at~hoZ}7y*&nmU zJZAahzQ(;enU&StMfk$zMcfXb!Q|y ztt>WOd1QS8601NZcvZ809#zJDKqW?hJNIhpX@6XQ7cv_!`rE4>G~*MQa1M91ac97Q zxvy;{|L^Y$b6>1W?JY*ngxvhufe^OK;^WZ!l*H&>j8E4#Y<%V3j(st6U)ux7R<0+W z?M!rAa>vdZd4@bf`!~pM94vzq4ZTfeuxv$N< zYwl~)_8*151G1_&#YNvpOO15 z{q1+q-^v+jdq@5f+*`uA+tIUeK;(t{kc~VPE$^&itt2MX49ccsEAZtSqrcr;r|_BE zm~vm6LXI+N`Si~FsmpymC;lO3^tU@`SK>m|a2|4z&kz@?YZ`U^$cN5Sh8=O`mum`u zq2|sYi3_FuN|6yYBIlC(|Kz@&`>9*iH@*8&OMh#|r|o^cNqgT4HL!kWqrLaP!d@`@ zNn|hrZ{GNG^GxFc?BTPB5g__LTaG6(JcAReW1<60>ibqO<_X&V-^{Dn_lAm_fWsyq zDsFJfU&ip|#GX#I*H_A$h@+H*m5Z=H+MK-K62C#glg-*UG`C;jr&*w;^!rHc^RA$p z(kwADvPQmRRmX#+4tqfQTGO{w@Sh%YU6+hm#&_YkjV+ZOnrjEqem_LYo*A))lu-dGfk9ySU5}nC2gQlL?1Qn=;wm%VmFPI*wj?`Hh6&yMT;Kdbvq zxg&>l5}%XKeWLdnXW7q>ONkdGcT3)heGYYLXJ7s#+7bF}-&BeO!F_JyLlZV=M=6T={dNmVAey?T2Vc@mwr^g>j?zeXC ztSW$B79CM=;89K2KYY&GC&2a3)SG=WiFh@#4-T>y(ZR3us4ee)@f!5RuircCQxDyK^wkV}I^*bx8_*N4 zS|0g)I`mNE@}sYEk0!pHImBc-`s%-OFXE}#(O16?jfAdPo?VA-_|>@46~FpAeouqs z2e~ituGrC^-w#bR5ga#udG_b;iA^uRfxU8r_HXhf;*$_Bf+_p*MGl>Z(cmD}K zi%gi!9$QFkz}fWS`DDxk)-Q6?D~T8dq6ZAY7YYu6e+n+s`*ttwbQFgLr?LLT3mYN6 zUsu%N@TtWAs%Nj(b;&#OuDqwzCT#xR?%g?Iu`Q5$l5F@PuxZ*e=05D`py(hgi^V3P z@_(P#b?kUrmlL;DVgSf9iN9WFKTot}_WM0nd4VZ6^PR!hEc(T%zj4wJ&??&2NARKW zS2EwS7IMdq^ImwFbBP5ZF(!zq*mWa!uw9IHkoh*WLo4T}*3b@`cb?Migt@8k)>mWG zOEyjLcJxCFb7I$(_*62lN=+IjcG|u0SM?!usNKXiDkk;I_~@hAOU!SUx)r!o+6V0s zi~Mwc!pB?o%~H-k?F#MC%~~b!5qrGf8N-gc`5t)ptuH!p%@lmWYNF0@OFxBHl<^yS z(H^^5Pk})hPs`fZL~}W>VqcZ~ZmJJ@8@zN7d*{ec=fvx-T&sb;F-Y?is*1fFOZ z6e79QTHgZjP&PQ$i>*hNmam11vee3Ep_kXDtE@ZHRBy|*DmqC$P?x4MefS)f9vZCU z^|jN5XK<^`Jh?X`Q_XFLzG`-pgkLA-N^>SOWfn0@gy$8z=S+?BA0WSq{C44`fGJOq z4};6L_emes5lV8~^ux7lYye<9t0JG{Xm0`ek2(4`kNlO6 z{uPq{sH44H^4X5|vdMqM(Vm<96^`~K-ty&+_D+&dqdl*g|K=kmpP0XcnpX*1&lfiD z*7>-#ek+^XbUrzM8_2sH?KPNuqP=B0A5N@qm44ssTlS048unk9A0(l768?_*nT=1x zA6aaY#l|>N+$T8E$a?Xeirki)h}ELy*2IBM(1SPqGtZG1&b^A5kzcK`Wg8NwaOR7y zGV|T3!aIe8-lM#WV^$OyfS&%v*NBO^iuj~$#6#aw`q{hF?D`Uyrqt#KhuUwCB-@bj zUG-AB)y6h|hn6WGNPh46jF{M&3eLUpV4|M3$KSx-HuE!l{S#kJ^vy4_av8^cKQZHb z_x)s6#NU*|<(z++tCqjLt|&6~L1?*Fcs1m$Uzn@s^n|9bUrf@{DRi`n7vt6Ruf)Wz zL#AVR_#7}>Rb;Z~>qFxuz7D=s)pAc@ zg(tQbIQ}7tL5Q4asrbu;$3)wy7x@Zz%`e1%Y2iaP#~u8f^e2n&bFWnbhYbCG?_f`` zaO~*?axd+j$Ri?p@0s(7UZRdTg?@>x?dEP(Py%EDN;Gxg>N%4Da;2eB>rXt3w8WZS+$CokdK3e--+NFQ^ddoPmUBK-FNoY0uK9TQf!iZr7$5ya!4DTiis#p;tnkdpO^r3GqA^;?-SH>Y zs#34VJJTKaR$_BkTR3JTF>Q&f<_XQrQJ<~^GsW8RFDpzVrmd&5WQ;l;R^i527k&y} zPe;k5^v$8G)Q`d{*jT$)?zr}3-gmXi)IMom&zSo%)#`wszNG<^e*_Exhk{o#NXhlh zQVZjgh-({E4X*Bj#L${jd~e1g|Bj(5JFrrfN5I5;@y z2_jd>^Qz7B-Kx>Q8~KO8&eE*VOqW~6(pY;4oBvL}6UvIubg9*qs=yO#Vth@+>ofhkdFR(}j=As3`qlnUV$-;p%Z-k?>;T6(=R%P{#x^$0gRjA%O=02B)_2G=vdneqN=9%Enq<+1Zd*eN8{LA#W zRB$}Fk+C%q|D##(vvs!e7ZCTyoT-P9hs28-!DV)y3khz+Epujuo?~a+7j*=|58M7DIQ07|2x{bRp&Alf79P(*d z&+)A1TI{FYjPV6Mr}OmwT*CWf?e$^4WPQTCuj*ybG}fMDAN~5x3HQ0`Cj{o}_f?S@ zgY1E6&3+j}fhX#vpI#631isNvp*5WK+|>J!8W(1qwI13GF;1mCu|902@tq>pp<+y? zPsfOH68Cy%O5JSwANMNSRe@Kmy0Q=Lx)Kj%f?BNiyuKfcbNMmOWh-@Ez=^+Q4=Ht! zxmwg5r*4S-oTkS6GwE-Lc^${RF2lYXd2R5ZV_p|XoE7#Ga}bNmy0CAErR^`n_FKk9 zA2VCwUuQT*l<|~`|lDiSz^mT(?b2DG(kQH8L?fv=C6|(m)XYcp+3ry_@ zHaq%zn7Z=5^vynVdnt2Kr$x^}m0rVktKK2UcQ#O#M*dMpKjXSARP=~$Pv-jdrX|+9 zUdJ~obXlA+cJSQ>>b=l3k22OE=yjZt0$tV-6qskvvB*MY-k*1rc_?E)XxiUCUuTdN z${sP}%4j}GUfLJ>+^%!jD(i5R?bYvfa#rKiGiRWkGJzHA9CNZkm!+PSxK;MD0{G|N$Wwk1Ao?B?Q zIWzsfTcO<^kL;K}y(atfc0V;_W$nLDJ8+{db{_tS?wQ(%=;^ceLnPAiD#A7Ux`PYKIEM_;cUi|WB8LHu*US)<`+eNkdO(WBLXsobKqq) zA1im#z{`qkK;o+?;$Sx+A22fg7r9?EsS{exod^Dm`jEWewQ){S6TB?80e#ifN1xos z{TSStytS{4gpEm8IsYq2VUkzX^_e!iFSrk)I(MD&XSXCG-AdVX*3B zZIK<?j$WCMM-N(n@BrJdr7a5-jDtqzr=P<^Zq$fricEM z{G<}neA1nyC8Q{6Eol=;&ZJQw;tmGPRw$o|tdKqoqeO9)W-AC~?PM2@5~#n^0dG z8dC@F*jd8;+rl@+mW|s|nmu-N$m>xhW7L>1yh*fm!fM`&&phT?g?yr+Qh7bmUE}I0 zQ^+UcfhOMZ!hdGM=aehqb2@@Q(lqC<;fc0D|0U;VlA7Sl%&04celPxH#mlinW2%r% zG%o0aFDC}!N*QyydQ9J6Bjd{^zstz(x^Yp?Nr(7*d~!dfy<0MYfVj4LIxoC$jI+m2*xod+`xTDq66_UKGB1u zsfVVwEOte`qW5q=97<<=V#nZC59Q6H-9lB0JzHtBpTxaS%}cpMCBl98yT?}5Q~=Yf z)s*fKalXsI4dvLteMa9cx=s7Y3%vHKRnz^ny(j(Q((x)IuQ&aXQjf~;<*0aQkXY(z zYIWZ6w~zzqIi3@qPJ41EQ$G6OPpAW3p9FtQrZ2n4e!XTl_1@%ukdm7o2kuud-!Ug6 znmxS}dbnHD!|>^Yl5*3b0p1!MJOg3hK*M(0P2Ns+nf$lQ`$wH(@F9l zg?=&l6HQ0RU&&c8`2$S{$$yOgnEVv2|H!fUANE&M8_%y|Uzz81&7%Lf+R>i|@)PNg z8K0|J^dIPplH(_jJ}J?k1>`3?`ZJHb@c(vy3dv_U`jbl@ux&keHD#0MzVAeT+~kG+ zGvBXlKEoP`OvUccN%HW_iT)fRKf%$TgXA+E{n<_aGDm;f$bX3bnD(YLZy^6+$9gr8 zxAl>%ck?oxUz2|vKmJ4TzgfhsIgI=$OJ({G4b=00b)W;^eSx2mn_i6WMrIV@zG8vN zQeXBL`z?QyjsuVx*uc9UHO9Y|cST<*?}#ibN*i)tvDEJ!{7g~d*jsKFc@nZQf0#Ds z>$VJhL4K2$bMDd7GUO3be;4O>$+?ZCWyneYa`5%wWom5Ro#(Kzww|Y9vm!8WaBz&s zTYcFBt3qzII^QFGqD~g{8u7tP`>g(k1{Vbxw??ZGfI)Oy4+JMRgNdRB%{8x zQ`I4JLPo1@sZ_qk*al>uaToVbWQ9vUtiF!CuQ3`&M%sydv@~lh^4PKdJ9$rJdCI*e zP=c(sG%Fo>>`H$FGOKjP`5olQ*rx#ho@)vv#%jhZ_~eRu!6%Ki%e2h8vt)zoVdSyD z0e5&}yOHk-?&wA4eNDaKj>c#S-~aWS3VCcie-g4_Baa;u$kwu~IP%y|zV{g4d#mZN z;q$}Ff^W(jM)s=5QQM0gtP9)qxR%ih{_?~o@x2PZRqxG29=q0GfUL6KI~IBD1Nm9V z1na#Xy@`YiVHRn!%DYGg#$QukL)Ug}OzJJ}DOsGGXVGZtCt z1A!oQU5p7?X=1+5yeV?ZC9-$0yOljL7CGeu`I&ti_1Yk(Ow>I@U0HjT)5u*5%%OKY z^Zj6c=bLipW-By9oVxpk-e}rH-B4BrGT2r5eavkr%Z&`y9oYS*$bl6y*beHN{w|ev z*}GEDOJ7}TY+$Xf=S8-h{C*kr;`;lZ=o!WpH{TD0-;_B>{r)8CeniV(JyG$4`SqI~ zWVMZfLh8z%+u&%o_xDC7*<$vL%y;u~$^`DLcbvOJx?U%^Q1;fKuD4s4g`ojLl*K6f zYI7@PBFlZ$v47U;vT*PbN4*GT@(r)!8&$e2&Ri*=tr?eDhaL$8}je*rCU& z`_X*Jloh>b%Jjb8O_`f_*E!a+RhOlnpS8LyUi7l#-H0v=6&-T)t%@=ib283RR!$jv z3z=-E%n9FptEoi4>qTZBrcB0B+vL+_an6ED%w4vAwHO z=ymjEnJx>lj>+{2Q|2cBu%o^Cx}NB+IvCrvdX0jV0h2{0;)*jM{=$OqobnK{;goWb zV<^TUwwxjZk+^LVD_?v*j9g<%zxaKG$d{4CA46#23X=F`VAtAj%QmK1ck;qt1*#G< zjSOGVU8iLlIkRk;#`DqatACTAZF88+G9hkAK9b~95@jAzA99bBa;sj~2<5}o9j@%y zCB8pgo1#vPMFOUDJiael+WR?U}-pK%vH zMzVss3ey^&yL2_BB8sRHvU)n78f`C)+e>D7&gdl&@`isl{W(J3@Ykk42gzSSf6Vs} zH0>sTxuZXA{t^Kw^=fl?eR5mw|XTMs{;TLsYS@Y{^s?z!7dMzL?G@og&vT2^q z$F2HxO@%t2>`yLv=y+c?dzt&f;O}lJx=cMdedl?JFJ0FqHU{{-O%LLSBjaqLeipKu zwdd=J!&TR{hvybQmlrwzh<-#pLk|=bW?tIH{3(P5f^mwUXLNyGWv27>a)n zYn?)dZ%?|xzb&`e`1dvN?^tvSg+NDMDE_sbZLCQm<@;a%USC z`z?6?V$VmP{o&7#k2TC8c}RWW)-KX9(jn3wQah=I)JTeus!0{3_hW6#F0q{;@B2tO zBoC<%K;1<;Mmj{=Lux0r$Zz($oNvLuZ#nnqQ@w36(dMz9* zvT-LKw%->VI3L-u;J^jxf&*`XZ+S4U3|m8KU*OWnZHT_sz|%(XpVU91Tw4Aeq1?#7 z8+|Qz8GJ4_cj?Mw;q%74Hss$8z!G3ebCd*pY3@KSeMsYTcTGEE*n>RWz?wQ>jjQi7 zzY_R2)$aqJ3v5CD?b`%C4-T#h39N16_a<=rUn2WP&Vf8__4E?r`M2Wh)=t}H@GjUU zBTpM!lzm-w&AO?1HB0fm{z>Jy=q}nXT{-~HD(%_>Zj$kQ*uv+H$P)#h<4>UBeIxQ% z!RMD*_^J`vz2Ngq3m-KiUp_+{HhyP*G(NZSJMC$FKF-4DjmWDHQXh4Z#!s}b@wxFQ z@D|DZw(;Ef6G-0RbGC}cf6|`@o(s<|_)z*I_CZg!6CM32 zByao)q&=6Ge_v(cbLmeu&vPvLLi*z-|1n2@&VbLZboA#W`HwpKbA-H&-=#kX$=mo{ z`m>w-6&601`Dr76xkX<{e>RY}ZJMM%4LWb=FX_)R^6YcgTlYVK&xL-H`B|W!8+6e|i@p;$a zBOw`k3O#@DI* zvcSxC!I`8+`A^=NB9v8=Du#I`^~y#lceZh{-@!|K|6*;AK1*H84{APqtYHqxL+S&N zb&-yd4w3ed+DR>>MpA@SO{yThAN?u2#CC$b?<3`qJfuGG@;kxTrGJye*Iw|o#Puiu z#|2es9Uvo!jJnUGuI(e%RI`nDop}2~d~JBv;qbNdJsbYm{I|eQgRc$$9RaQye4XUK z4ZcqD-^1hUN(*0~1jY!yuIo1Vx)OX{*Z;^-gRcwU7GK{|WbpNa7QQ|JzOHoO>)!;k zuNw=#_8ENrr8PCXXur97D85e8BL-h5@qxkDNqlMWbrN5m0e`(czV5K_Kl)ng+x)oT zr`_ajeq83ajl9i|3x3)_-sZ;zKQ)kN+a&P!GV(S*F8Ha6{M+N}WPb{&Z}a2QpIq`+ zIq+pR`5XuSc9XaHap}()@RZGu(|=1}ot&Q|Jb!z9oy4bY)VKL@>CXo8Ha{-&BY08p zx53Ai7QQz8xb&xr=j>Z+zFkcVbUxXidF0<7Unl#Mt?NJV{^4uaJIB|yOdHx$+v+)S za0py1__~b$F*ByaQ2(x2Vro$~QE@-{w}{%jy`<74ShgU%a#Ed5zV-YFli(s_fAr9TUF z-r!@IpLyhMd@TJb)cLr^-_oC4@*~N^(cgBpq{zeLDe`c69vLDJm$Ish$ipwjKYx(; zIC|$OK3>2<8cpy29Q=2~$Ct;3$H&zz?+zcoSZmt(L&L|*e>94Z4gE8UkN>OVV>^Bh za;~C8{2XFjM~VlM@zS~L)sC0Ghr7#lJU{5wBrdNniriL2ES(A+_hsu_Vk>s~lkk!MfWR`5Se8p>CT|C@4&|67J{ujZ@g%$!#xe!)*h zcHH{)X!hqr`$231w}}s$__2wPo8+BoFJ(KWe3)laZ|w->&NeRgJ9>%lU##uX zXQ^xXLCwb!*6>c!d{PO?Pntx^B%Om_Jxw}JdWE!?w3D<+(vZFOUh-=%v7IRIFCpDY znolYr`AL&VnWS@aK1j#qKk_I3!Y1MW_CJ&IZ|;2#5nXPESDh$6q-{*&n!o<#=ZsAE zkn2EWhihwNYUac2df1jn_1{MXoke7@6uMFL@*sI;M-^k0$;m-vgiGI5copz&TueQsw zS8LMtYKzd-Ka|%n#9r;ajaAl2^xd5nzlMGj{@ujS6MHL{)^A_NxDCEOvHlGFYNmr< zK1qIp!`|!&dHg35_ErbUqwk(!*{`kJO6$xpQO`@(PMk~jWT+TKj_=U35R zYrN~+JkPQ8*~0IhfuH@DqrWG~U+L)Y5%RXaTgxZNXFK}4oBT%{{cR(UzB@6$LJy$t zPRJt~$YY;aWbDuCG=FZ(&jsIA@!Xsz>Hmp!3v@m?zw>lHIlqPEML%t|XX&?-`#oDf z@3g*uqRCA@m4API#%1bnr?17HjWc{IsQLHC={c4@JVJfZhc7u_ACl)ent#8gXo4D_ zSAjj7l)0V!JI3)&{r4Xmy|8S_D82Ar@X_cyZ;#jiyV47n|K;1$3*Y_Bh4g~>B<+Ge zfc(((LInCC4qaf=3uVv}HoZ^{En(9OPyUZTE_$Kp|BTWLmi%CpUI5>Y(hE}t{#fJ- zZOcaKg;Cu9_PGDO%+Y^Wdf~*^-kx5lDK+#$2l54xD~LP+TQcBAEBbq65XcSU&;&v& zw7^$}NFrAdd4tFqjC{d`d|}GK@~{1I(F^1L_b9zEN-t>n!1_`7f{Ev!LN7?X{=8?C z`Uvi7ixl^3{e#v=%)LhI9>mv9@nYA;e<>E9b)$zEJSF;vF64R=^WUk55FLc*B18`% zItbB4h#tag#pIjf@LRvrp^NCSbP35P2lR8MdNUf5F?6voj zZ@R>G;=I3<6eg9ELZkwcmy|_Pq+a^jNs_y44tzC9AH);-hXYCd19zkSMUkNo)(xDG zdZ7h4)1r4M>Tp%|9D`;!j85W^3wtE$wy3)G_|^;%1Eg4JgbwcG3{fVu!ZF@EtXu;> z>Hl;ru1@rocg=`JsC&y-oixMN5p@#Dcy{gjen&5{RI^6ZN7(V^@VC?P=2n-!GkpXx z^HTH?t}dgGI51EST>JTULoX~CtPfq9KH}YtQ()^m(?`U$znjSK&mf=AByOO=?+4bO zBtO9+KR-hLKVKh_?61*BbbvnuA0Jq6^byL^zqqu$;D5e8BH3R#X|7g{(hKheAC11F-WIPf zg(e7-%1I$o0m)0sA}LZYIJc8@nAAbqMQWAwM@TO;-|_bJ!k^rjq!(=20i?#T^n%a^ z`1n9i#Ea2CG>eX+6WK#Gbc2&#@LBYNm%1Oly@6u$7`f@6q7iH!llK*Ke<1da+^0K${n3EfK1PbqMOz2!&bAM3 zJ?pe}+%lTH>*48#4q$jW zuzV?jDhQ6N?=+P%JC##LkX%B$Cd=$+^4~i`xwFp2erH|c`xk3_^x5!h_I}TcVhww7 z%<3c^CUuZ@ky=Sjq&R6QDNHISg-8XY_oE-)OKc~L_Z6uZI;WF#nAAbqMQSBAk>aGK zq%i4oe`e^1zP8(EXo!~Wp{P>({M@4? z@t%Xn;P+ebrQ&PF)Sm(U(A4s$rO`6i>eBMQU&cb6&(-cF#<7C$E$^IM6YBHDN?a`= z%456}Ea!f&?B9JXTHg898ZR`3&=q1E5qW-044ubWv5SbjJdHa)=OLr091uH1>CZ9h z2~C0xW&gvUHS|Y>F)YQ7GE)2+zKmPDfKjJ_QKx`Qr+{@M+Et1iV|#kL$WVK{L+*o- ze#rL|eW4%nebbi{XH6dt3|wyYLFQ5Jop-4f%tvc+CN_$!NZ6z~VTq4$+KOj%#u3k` zD-qAAGgy*%XHGcsS|j(X?q{w#xPyInY~4V6E%Pk;AU!wPzx&e~>5KG3`s&3-(?^m% zi@)|^DYyE3Ol>`T&wMji($6Dr)rWr4|E-$r9V=+RwK)6Bzlv2OgK+j&?m4jK6_$Oe z6%Wz2FOBB{G<-zC#{_R%3BYYmJ>fIGU1a^*{>DY(aPSP zqBfq=ag;vMShMb?owc%VQ$B9?@%h2)W`;ZODPk`NTE6OyLJzZ_TiMT{BIsVZqo%3l zi&LUMdE?(>^UiN6Ekt%8`f1n&s43Jz2;VJUphf` zSos6%+IUWk+JwAi19^$ZYveC3ZC{H2sP+8B`ei(~<1YopzLGrls8)M*>lTpDaM**+ zBky+7C*&tHPiB4bem+k@m1BHI z$mcl5caZ$Y9Q$cEd8hwq8+q;@NU<-)f7EKfQu}}6Kbjby$aAi6jIWA3_a9jOuhjmZ z*rNu$T7HH9E6?R_4@;h<{XYc;ndc|8eJOiCF}`f-%UQGLr`b)OJu<`8-@5LMmfv(( z_QD6&oz(fbCC}*$F4OVvGl+lBUe++c_){;??Hc)EXmAzr@ZEVP-cn~UJYaI?cbo4hE?R}b$|4#JU)_L!YUMspbm0lCSce!KW{iN3-&|soBvgtL^ zEma6zV$o}@&}w3jV$*A)rxJSY^|>EBz1E7{O8R5dKGH8^8zX%gr;XjIAv*$+W zHM<|0wuDxTTl8A%F!b8@=lo&QYhQZkgQeHLF==>u4Sgs3d6ZrorPuy&={1pu3C#xS zS7iGNiC=JJ?o~Aj|KhxVK%VCCFTSm$CUVm+lXr1Wtc90#^|cIEp0#Cebt&?-Si+{K z({DtusSg=i7wH)35NQvoozy~VBt=NoB%A*`F~g?cs-qpM zJ_Ic=!}cvcKX~`7$Wz;p?{pR~|ER%x;m)VA`Q7IaVSgbqw`0(7E%_pY3(pX_Tg&yO z(fJNpTSr3Hwgp+6KNd>J+EkH|wH4QtcfJ+%VGFcNRh|{Qp~%xetTp~er2~;?U#}H^ zW{LBsWlHqt7EPa|(zTbup6iBY>h0?VZ@dT!{e*dR%Nq|eZ|M&4%i`4}{3e=ym{ z!^pIL(!Zc4`|rMNwBb5=(p-Jz}H%BYD z3)J4fQ`EPRw`B*j@9vDPTNta6b^FQZdSc(bB1yxEyiN9UxbsEmw@%?lid#PEjkaLJ z-ty*@Xj0Z@=Ht@kZAp32ZsvM|Lq63;e!N4zwt+nU-wF9z19@{_q}V@I>UibI+bsE0 zZO1zof9qVHm>OLE+8*=x7qTvc{-n@&kD&a_K9kRHTe5ly=+kasvJ!;Dkg&%aQHF>rSu{AARv@0!M)Hzr; zAa;6pq;>Xoq^aV=Y2IRNS_a^?2RhS2#l30aVwD~*&Ps2E$H6D?+?2kSyG}$8rJs1H zW$}q<%a2I^NctzzuSx$(`oAZl9{1+b$ixWtF?W|7*)6eyZ&)sU(6JB29`Fla(K5{) zx2{B%c{Um$Mq>8WZNwvdQpY3o6U2EZ38Nv!`B0NUTKt8Dzr7>P`-bS`cez4Eoi1Xi zxl|Cli<%A>F&JI(qL#5!YO>N)QLoEew99p%2^dqO(n9dyt-+SNrqr~iRq{?(hfBWe;o8W6L|Xr#Hq}C(F)A#vj7{t20=@7{h7sI;>;Mr%R)u zG;dKk<7`=68f{{Im!@@42OfEBX*5nER{2YdW7c9{eBU_ImB@AqJ5BjYc7_+N@6zoq#Z zeOchDY!=L=kpI1h^u;p+0VkP^c zGMeLZ_4T`wb6}r|)7Y=bI^?kDGp+fMe2_hGjy$r0;3Qp6srVluzjeYVUAO7FB7rR@ zxW`lWic)L3Bra)W>e}cO$C=5&w-LD+@Hfnv*-D-EsKDL>)65={XU=lkHs91glKaK} z{_=_UM01g+a%+Nr6Ze@amD?|E4~6I3(>$DGOoP|`oxbxRa$7F)OVeMaUg$FW`$b^b zD~|rg>F2gUuGMGjZUOq-rTZ-HnS^~$O8>D*!**Kg+jUL+`S_nv{~eC!acex&E;^pR z<{t#*d`70Oil&a~H`bWCfz78c7?a%bBy(-Xlw1dUJU8a1u19h_X1(6&c4!?_iM#E)|Y+sZq_z+zYbkn18+Zfopb)SI`-?kTi@jq zzaGt0^`$?(A-ASPpTq6`Tzw9o$e*M(avsB+p?Hx}UjrsA?u#s3StDl?8{#7Sx6lLj zy5y`&D~c4K$|q349I zlYRRQ;Ow0)!P!p)l;8#RrT+P@E#$ZRU26I_vRtb}Nt~g?o~^c z=eoezDl@M{JsJuXJQ2%=j@hvzG<(O6uPprG*yxHKJ2o$VYR7X6ujqX}R^QvX0$KMp zs(f1Xv|eA+Urh&!&bs(Ka8+<}XHeqKMsE5AbKYV0EIMwnMGlc#{?ru>s;$8i!O^o_ z_?k?vx&1DKca~3#MK@S&AKO?TEI&M%J+g2`2%j{s%2@7IJ6E7%=_^Bz!EHX>UhHN_ z&xk%4rE+TzznK_U<;>W0I zKJIU&p4e-47B>leB-T!rO44*f!==)7zL?N_L-9@1TlJy64*k-J$@ZR%Mcb3~zAKI{ zQNH(IXZ`=#vHs6pWc?@B-2N9AuD|DR>w{i(%L=b*x7Po8)_!ZB7r9sD7mJ`rtGWx= z3$p&QABKko_WIX#EA>eKAH@1&&%{E9Bkc8yt-n&!{0rEtZnZiu;@Vs)@Id=L{XpdT zKaA}7#B>b{n>qj4pC9-CbN4pzQB`;P__+zupxBPP(2Z4aBBHTG5?g5}gqIl<8!O$$ zt!$~UlPVak?xwrA9ow1A1jL4_`wt*)RKP@n2E}b`VH=f~iGmHju+d6Ot74+iPKfTt zwd_uekpJ^N=bn4+P3}x)U|#U&=Q9S#nS0O6^L>9g#y#a-csTT9)`m|hJ~jB@Kd<=A z#ZR+NM1Oy>_(RU8QLpvj``DseZTad&`n+qnUZ&(9V;2^`CTVu{`>wEob-^F-`w~AB zwp2Bq-!$U)Pfqi5`M|ub_K@6tOqbcXfI;c(tTY^ZC@9&Zqk&c|NzB z&gVXy&kBBzd^aZ0gijbBI-d|e_|GdocIVSt{F#0}`D>s%mH!EQ&}*yHE&sB>mi=DH z{U|cdE4uo;vbGWXU1XeB{e$O~HH`Rut8reP_QzWJQ4>!)50zf=_UR^wkDD!=7#PQTlCl@q<2<_Dg-c1~dY zr;4U$;_;v1Lq9j;b3H!z&r9zMfgbTk*h+N~laImBkLmY><5<6kjXdZ@POh&U_CfAx z(6@f$$Fs|b*0?PJ-HB>OF8PDl1A3nQv&4K7c^-OjxO(;{_B`JwuLONJuL$^Z^Zno6 zJ?eJ^ox<0I|GdM`1MWZL9AFRE_X7)Vj)hGnzO#Rbb$cO42osx%DhLyA~yl{Id; zZe@Fn+<)uu#P4&_OPu)M7fhIE*9_h_d_Sc=O8AyompUo-_C6uM>Zi^J&V65d5Ay59nfZHOhX0VTK0Dx> z9D;6tLx60pr>?yqF#fA6j5|y!Fgf}ZfLV0nrw<=`e}jSd=Ez7LOxP?K=oKF^Uf@5m z@i-Gj4}?9`qWK2@1bqX0l{<#h!lC!X{?c5?M-h7-bG@TIkM?^_63_E}@N?uRZ3_B6 z>BQU?V{V5)ANPPha{ceVn&`Z+8uH(avHEYwcTDF$uOMHQ#r+K`TKE zt<2~AQ_zYVw9=&W2&;Z9Y1H=+L*yX#X|v4AK(?ezoWuIEzwN=PuRv7h~X$mc9^uet5Soo4kTvJS%*c zjRWoXVLw~J)3HvnscDVCHLY{^cf>j^`Y7mb`24QX=f~JrI6i1@;w*)1E5I3n--M11 zEi0orYwUi+OqLtGGm-iFE;}9kpcVc~+^bUFE#|79jTdJ~G)Q~=Ebsfpye;Bv#GYc# zQa_`8lst*z6h=P-%()4%1H$^zp`2Oa&H24Y(NCar^S59lgk01!jcP-?Heb|Byo~UV zTq@YEo&mC9o%l22#RE8lfqi|SqQ21+ak5}YLr&qPu)B{9EyKFU6m{a9#;|2Yf6n!~ z?uQNPV>>}^%fHeDn>&}~P4&U%rux-JcA%k@4dEHbVAlqFi&*VIC3~#b#nulruwcZ^ zYGLC%R)>8qN8Ealav*crxRPqbCw%POI`~h@5z8v~va0f2R$o#B8=k&*3v6ui+pqW+ zakk{Y+?BK5BWSaO$0a1+66a#RS4Qzq@s9ebtvLH*L-|-6E82#&Zj2f zTZbNUH?m19UF;_8F@u z9xbP5X>4uLLLNVBLJyi9tBcrU*q`;-pL4N4ldwPM;y(IGQ6IahE|>j$+FHE(EnOd^ zSQ722lMRJ(+0ROxSaT`fIbI`iGS{0+K6EyFC7oF=%PnzWA4~CkVVBJH;(a)eV4suK z4py+o`ij_k?D@_<7uzv-Ddt=WJqteOl5y}8(DShWt~P#7p59fHDMsXVz1h2)d>nlt zb|Bi0b-&qjYru)T%X+LkjI(XP*)ptU)#UnM5z~6n zPU!hNq6^u3kyVrL^}ktmOP~VJ@ZuS7dhQQ`7Yxn~*gn_OIsc{JdCpbgiR>V3uI@ja))hzGeR zIM2F1Wz)>{VxD;4`T<(^Lc}&)*bj#NXyI{=xn9EKYa%WpcuXFn|GeU(_&4zzDL*M6 zmiRaE93Sd8XwOMkqPh;^DbybYcqk{I(#k&z9zr}Q2iWv>-%dHPE_#M<@LM19%g7>kZhG^^u9U8_zHK z3+UO+4&YfAl=$!+FFS^J?3~8%EPTHV`{<%IxbeOQwms^`_usuuet&Yw7VvYY))T=v z%;CwB7VIlyPZxI~j_O|cWNkal*+5!QiS79t+~E`r6sL!3H*|H_Rpuwe1^B*$y$fEsKC)`?9z5G0SjYn4nUi`~O^x`y>?rujfxc???qCh__o2TUvOw97 zs-Gu~q4|zB4u|cf^QJQrGRa#`XH0SjbMX}GXFc$ba?duDgkS>|2m z;Ll;4+q(_-==4nd+R4`OUXbGV-T3>_1|L3Nj3K>6*VFiVi2v*d?*UEpYHVuJc*s7; z=H54}W(M39Pxv2%oC2;O|3lMS;m0avfoKshR)Mo{VZN34dn=v`o{#yqeC4envLz=$ zjvb4*T}8nyLl5)$F2Osz7(=vr{}9pSu|AE>DY^si3*p_>c&FPtHF*Be!=TUEn9HWA z4mv@AbP@PEa3>pE7p=xVH31JkJi8TtzaDcb!kn(>`!lte z?!Lkr%WmOwoP_7L7Hu0^4!*u465?~*Si5%UK|aSWj3GVJg`Xij%c6U6zG&r#?RtMH z>M2FB42om;ratE<-e%}y6^R`vB6sE#WL86{!+v{eOJwZJk+9XsHf{e z&I<9)uvW+U=hg2g!9PD(#`)(_{X3vX&Nqb)`1s6D@J-aSGfA2H>{evEC87n8UNInKqyCxc45A&o^C~r&ZJ)A zc||!LgR8E(-9I#RQ&~e!Pv7`o{@lOnSG#Ig4W8;>HMKh6%jx*^%}ch{b|OFG%}eeN zym`q>ekabmCa3vR;BBA)xkTW%CG#O`z>msh-HQ*n+Vh^kVL?u~yh}s=hSssPU&CFB zuuok%9igzs%8GKFWf85X&z;lUm!IQxHO}?~8vnO0P?6IU@#b{&xsZ3#cm?v7{>y|do)g}3e@COLH>nY6=-A{cdF_Go!a(TlJI9K?(PizkK{u#yZ zu%&K#@4_{Ym(x4xeT*GFO#Sew4}PH@Tb`1FcitA2`#gCW>wMU{&&WZp$38D8lKVWl zWG&*7v_}hhO!xWX8hwvCO?&hX*Np|gpmq50yDuE#JMN#CdGJdkc6;KjibK-^qWUT%3Pwsax=kr;A@3yw}~&nh!@=$6+UE zk};<)pKpXLd8+6jm(L{c)<@jVRzp7Tf(()J8T8R`KCikZ1OF0mFMNv2=WeYBGVy2AB9PCZ$!LB~ zUDT1&GdQ2WV@7eQe*TU6`LkjB*>2kF8vWg^`q;PlyJ=51e8tcG#0Owc(ONGE`gGa8 zANGTn?@d!lC712AH(x0VaoK(VcCi>AIYzRb%iyUET(<9sym`_82HnxG_+L9#=W*p! zfhXUG{k_*y0siL2I;tU)!k>~%Ul053Sl@V@a|CNVhoAQa#k)Qw`5ty{!x-{UZNX0( z_aWA(>k&o8{ETY#d2FbyhmJxzloRuI<2{XdmXGuS{G_?kpO^6G16|}tJRLuQGdfSR z{{?aO5|Z1L3s%8t{E6Zad?7T}x8`vkv!$G?;WuHR$o=q{I z!MvTr*3*jTjJ6&+n=LpKvRh?*iq5H$?`=^@E9@ECgZ*n>pXq zcbqBTWYb3 z9`Hjs9BZ>r*@%6p#y$+sHG$oNy|dp3dbfB#?U8l($A}>{vbty!{0d=KIMB&F1N&J=eK*rqU8+k&Eexe6P6gHg3 zwoUa-e#AdhTjzE!d_F+D{2;sE(~3MB`m?*ctoAL|;Aw(xNBKp*>uLiHu!r3hPuCV` z4|)o;RrubFS}$AW`EAE%{uVqF=X!Bt?!UT$yJ`D#DesKV?g#Mez6@RBr9SNK_h^rK zUm*BjzX(Voo3 zJ?8THOUrQEdL;Jq$0FW5&Xi+0ne!a#n@P`i?{5#jb!@$-4bPpa{i}YCIe2E|aO`JV z^)<3_wy=lXV!l5uzh!8Zr;CaCxgL5E>%XG63;x&G&l^F1#a`rvO&k!|09J}|54xw+ zq%VY+m}|vDKfqk4j`IAA0=}z?&Ahbu8tm!zsPX)g%R%pCchi{(`A2wOTGpbUH~o7B z)tpC}CXKfMBzqmr* z|NMvM;`uZ1{Ei6GrlQM>(9gBlOqV5he74@>(4Vy*w0x=l=jfWb<=gmkv5K)QH#F87 zUy^y5)GwR-yTl)Tlh<;8uMvBiy3^l4zTC3|h-Dq%y?%&qHiK`jc|+KY$n1b#w_@r& zx$8ZZxoZ*U99!f9pUh<|iX6ElJ7B zNx)+bz7^1mIrJ9 zupPg9@`o*7jQD(CI}N|P2|ndoeD~&n{9em6eDAyBdx!~JzIV&l>3gT+d%=}kv^vj9 z=t;J_mbYuz-CE|IA?2$-Z3YWM{8DpZ%oneD>3oMeGsm)uStm*|p1x*>$TE+jlx! zalZ6U>@By`6a210Hw^y&d^Qt!m^F~k{E<7qudwjpXG=YQ;e2e?N?}tpxhT#=?=ASZ z7eRAtBaGb(S-b*qx^+?N6H{pDWgDg~1XeK~^eAZbOw+R)@a#tZ?77}HoC(dp{^(K< zVp(qY(EYB{QKz`%*gBlYq>wm|P;oV4SL73Z_J4#d@PU@8j|IilD~{cRvFqzVdnJ{y z(Z{g^`nj$zE5ukFFg$aXsgKl$E@{k7U} zsL9j$n!(R5J15{nt&MN;eaI)+sq?g>Jg!v-p2kq)C~F-H@MkAJMfjBBt;WE2H#247qce)(8eDR`X|yzWx)y7R&7?%}*H{{9qTe~Pd_!}nw5g#zoO6a59W9^yJ^ zGv{~8Kd0h80uyt+#On&EzU>O|yIY5F&Xcf5g>~=$`83}nkW=Ha7rbe{{my^d?0*F@^0w;kecs$k|04`u!u+Nsk zf44dx@{nR;4$v;1jo-Zkp7btw(q|!x`JB(Th0cczEMk7}qyTu*TJWTG;7PIfh2BTD zNxU&)?*u)89*`5!?5gB)`-k9>w?&U!BhO-TNj2i%MCWq93ICG+R2ckcDe(U)_|HLZ zGv~8Cs8#;Z51NP+DjrmV{2VvF1Nso}dqBOXn1SDn!+X}@3|hfI*5eEu@K?EqR+OC% z`S2ioPa1sn4#@2W(|j)ZFTsC=4m#IM`!9TVn6aKirq;_W{vWavDMyI(9m-w0^8?}g zG{!sb#M#k4Et|z_TP=Yo(I^z8Nosle-bGG-M;NLo!j~#({Ybp!Qt6oA}bslJU^dXkVYzV+p`1 zatVls3E!FZEREbgL2K9x`F>glNg{os;=A#`R`=SvK>luVE3;9xY zu2TGYAwD(mdr=>RnvZWr82r3hj$e#*RlwinhTn^LKs|h5l~`8`*6D_yJs){h!XLB; zx{|6X?l~;@Y6aq#P3Qwe^LMas!bTzAk=5>oeE>g=ob#i7V$2G}$CM6A@1{IJdhZg} zyc)SIc=sgzd1Ea;+a}httef};_!V^MUW&=t*gc$Qmg)1P@idnBxp_Q2L+KCIRz8cI zfD^&Ptaq(=nE0O~@$g^<@USrnJUCSr9+VCEZ@_?f&HI{1-nd)O9n;jqtsCzRq)s zb(*yL{+{ILBzTS+J_h19m00V;b9#a`;1AKErQkXDxM8>2&H9K@Zw+S*( z)y}tp*Eo?w)-)7G%}c0E@SMWFy`>#N^0yE#+3W2Ij^sb~^|W$LRlU+KMn1P$UpN(1 z1i*-oH6EF2ysg`B#arN&k$7v2jkm#Jcw0?)^JWNdPb7#p8ka2I7U^eG!BUGiG3V^y zZ6$JU2~#Bh62%+wEW%tEJdN}n;&EM|ZPJIxzMy_i`2EMjfn-5<1WqckEc$o(Nrom@dhlwd$_|4ya~MSH2s-YorY?{C2z?4Sjy5J$ejhh z!`x%@JLp!%e9zW-qBZsaowj+X` zD9-OX1;4|Y59=XN!Fi(Do-wcM;(mp}wPv1|4`gzlXXSSib8WDx2yYaxAX#hH$0h!x zT-BhD?=1x0F6s#)4!aV%X>{vv72bd^&zju|Z}8JVFGr4P&Yys{Crg?PxjJ_autjne zd`@!_Z(FQQ@wffrk#gXT%UB^##{g^BL#9@7Sy}{)kuFT~%n5xyu1v+5;Cs;H?PY3f z3?4@~QF8S~$kmr!G*)1(BN|txLY_|elfoBhOV`~4wz87z?#4XNw#5wecElj=!G3dH zO_!%P>R7ze(r>I4_+pT!kfo@#H{@yWUgxOtG(fl_ePF>MF@N)O9Eh>gGl;*Ly<#&rdQ2eeXh5Sy;w>d7qYe@mW+lYLB z@G7V?if^Wa-<>G_q`aN?niYRjc8tW|J2v>UlebRbFH`dN*Gb@y#wLtEc4ANVu)-ySReHohxFi3{#{W>blm3-+N8)rzmwYX3-wR>;7V7?Ft=#wOWbS8) zYxklyDxTf@?-uOE_OH-51AE-R633Tp@~<4x`H5j~V9s&}wb(_|jgDL$hV&3un zD^`DUw;sc)>m`4(?7O|!)noXUN7}CS(suPyyx8ntnW(ReFqnvcCDr`y+b=5I5x={5 zi^84cci|-YT~mhmU7H1SvEvss&cIxP_N`g|rjp-@IcJC8U2VczqW)xQU${{xD*btt zs1GF{p5%q(OP0R8A5o0#`|#ye!QY7bPxAYX#SBmR!Q0$Q{mceRk8P{!I&Uxr%X`*r`?3gjo=Z`2mR2Nxm#t&`u|C` zeJ#C~Iw}o05j1a_=Pu+!2!FM`KhdT2ENkF)F(ZE>VylSp!{;Y`fWTbe-tL~@Ue>|= zfWu?`{a72Vf!0auqBYWUXnnM1TCW%NL9_=Cyd%~r-$(DFXIp%Zc#pl$aae8v&s$Be zzj6CEMGM4_*ZsSq1<8*)ljO(U8REyk#M!GDOKg5jXu#dyuxBXuz2QXg~e{2FTbYq<#WK7OSQVysC$k?K!=hi_k$LrT45i{ z@u2@eRUdnHx66^EffrRl7Zto&@@4P^m)qdWg~RwV^i}X`CwQ~q%O3FMD#e$PUqC!Q zVcv}RTRh(Ut601l`oqJ+cr(T(#G9)T^K|6Y^#W|kToKI0(1fX{AF7nPIt6W?gq^jGDrG9^|4o4YChfI&u!q(O^7A7 z4N-n>6|XTQ{w#Idy`7NptS3nEL=%4=)@woJKRR+cQ0HAYNNXcrP3xz1(|YCFiC@!x zT>J;IZlVdlIo@dGSXlY5)K5+{-Z<~q3hU&5pR!3|UHadyws>QnK7W>G|GVVJZKixO%Do`HSMp;S?G$Gx|2Q8?uC{|SXdDgUoIh*uvzhTf zt+C`-#FqawE?N1%8?}KJe|(Da$;6!F%l}rygB+Y6rZ%7KU|-%6xM^g_QTi z3rXIa^PBJdrNR^CH-EcD;YsE1o1}W zlEvFr{cMc*M~d_xG3V^yt>^jV^`BJPdkZ!xoRPgZ{ZWN8Y40se(BA9LpuP7{42;>? zdo(std+&&T7OBp65%W#Iy*FK-f4c3x6UCp*ciH!Z6@ObBN8+!-27h+>F6@_?%lBKA z1pa7jqWIft!e1)$UBrCj<1ZEYE=Qgdye!@LOWOWxQ8?rF-$M##(*7%A>9_w*OG4jw z{?gw5I}Lb>Xa8M-I(P7(G`M|;wP2YPQR@vx^eJ$Rtn8}4&NZM(D!rGKaqy%Mi(l2{1RJ=UH}R!J-b z&|`{fY=V)?bC*HaZYi0MJ|EOWVBK!>Ts72Y*BZ4O6dRy1kddaCK)xyWMZ^Q>{tr<@ z?+u$AeJQPR%`SsdNk2ImcVa|wc`Clwy}2N8#D);Wv`5x)85C} zchSee=(%K#pP2c_Xm}}HZ^et&FcL4N%!-#;9Va(l=>Ek-@e(rOg?beygO};y^x%c& zkx9IqsQxSC9Qz)XSgQ4t{k8Q0iKU=l+F#>XV)cDZ(0`jURPU0@_j{yI$ECp) zgOGtq_?v#2nRwfn7+4&h?@i;9^*1fhb&^#3o5Y;6<8P|_jo`t__%~&aW2)-uWxn^m zhZOE8-+ODl!kx_bcILJKccPv?k$ms&UuG`fyVHWbrkM5gG|s?Y68YZyUY7Dw_phfY z-&@Q(d->i+b^Vzzn2mhz8y-}+BYrpQUWGf!@4E7m<9F;=nc;U!63j24aR%mKFT|~_ zhu%#&Nk@v(Q_n2soE?5wsIMs*ewS+b`q4@&-d$ySe3n*IJ_~d_UQgxB z5Z>w%#2bxE7H`wPmL9x`IcEoNRbNfMem>QB3;cgpyxmYY5^wpj@n#!8bY}=}OB2K! zjY}49cU_Vmyooty2XD=#$>S|u`dr=v3U{Q>9jaBhGxWK<d(WmPT${#I59=1pI=?eT@;czW*c!OWz5c(ePXZo3LS9J0|T^>uHu7+Px zpRO?Kri?yas87<+r>n4>`gBok>0<3H)Jio5ysT%2lXak%HEKv-_@LH_F{)SBVO!rN z?}cjAW)|r_Tx(y#p#*IU8fRb;`TU|+mwk^g-*2ygzg6|?T4T!J;r+TWf8@x|NUWyx zI$J+4YF}1SUoV=MsDG-}*Jtfzh`@8fV}xLHlB#DZY(54O!2j<7kDYuWmB^FvXm+BY!o0 zP0837C+a_z`4elFE1Z%4_^ux-oJs$&+s1!vmp{?mLlhfbleaWBQGU0tRq?x2%3Cqt`1~#<@>ZXJy7^tI!a!*8PjZA?bU8YK23o?-eB8 zkDBXyHCr+hzkN9d7KiJ5G%i_vZ-UAGNTq*8%sD&yo=4YVlhOCm72lY$MB$F&8+nTr z?qqzUD9L=4hAo+kZ@gl`UhMb=jWe*9M0{hBuA3Y7MvCGaV&2({Z#lnZ_BIOVFQu*KoY0$i5YG&JMq8HeoH% zei*67+pK@I;%#EpNW8TtiMOr{;qAW?#2bxE7H=C(_HHWWtC(|k@b-poLnR|$WsEk_ z{wp8dq3}fYcdy^5@FeT+F4yw{s(D}E1CeyxFL^b3#L3=#qDN5d`z8Cg*w^1(jo5#@ z`nxk1$Q+Z@_Ftj*rn27Zwrj*ZQ&E4HYW}nRc7+#`ck8ZKc#-mMVdD9jT;4ghW=6mN zdrJ;UY-X*GJBIy?&Z}0qBmI8LwF-Aq zzxV2VO26L?HFc^7IdVi?ZRk4&f5#wvYrOw>=~k-y4a)>Ll@3nL+$rn;`yZ-0|RVO`7m0=AAwKZBG(^cKR39-=gfF z-*<_cSl<6m#_8|8S>h__FUUdvy9EMQjBP01tlf)zxW^*roATi*aCf%UztBf<(0s>t z?EAgX9rb>1#&%4r#`AV*4|%A5nX$>Z5BL!e)ftx}$KChIF5EvjQO}vP-tV{vxq-Ak zc^@zJ)`brqI#E>v^)|2By4%&ndzjxEXk;3CnV*LIyes^4U#}bWt<=}N67}{@+)++< zcJINnDi=EYE4@GHZ@j6{-*{`4-_7RWp3AYe@26Vh>H0Zge@yowt=Gp7?|mK|_3m)o zzu=;|&>CnyqTYF@{yb~FHT=sVp{sR7?DOF|{g(SHG2i7IgltXZdo+gX(i|+Y=QHeO zDeAvLHArj-r^pRSohQe$B>DlzP{QvcTwW_ z9TSebIF5rR9NXVH`F}PzZU=59jvIhu^fp88>Fqj>sVBc3j;nBA=PkkiOBTl;EJv+R zOOWuq+=OQ(&v)qgc$+Y8bFk33OZ%}txi9E*k3F2JkF(w>vV?h7%X!7aGu{`XxT}NJ zMP$CGJ+A9Hu6?F?zpmptneWqBf$zlLC-Gfr#`mfA_?G$r;akSqBtJ&3s<>}h$G3s^ zuf2_X&9x}?zYT+bVLzg~Z%{b*0_PjQqj0`U$9cDo^M2qQIxBh$QazBn%!~YE!aV2K zxOcY*dB}uw!hKw<8+Y)=$GRg&@$4}<#ItWQVg1XtJTq#8^{@%+(CMHn6R*BK&<5Pg z`zI97zQQkfwx^u17flxHZ!bnpslxki9XG_k!<2uDebN|%?i~m7#{T$qyjy!#EMXdY zcZj(Oyw9mMH{i|Ju9d%1}pr&|A@ zxn)xScuwclp9lRz>g1%KlRi%Mhf+V6wBv(*?tngiChShxpJe*qDS9XcJxsV<(Zd#9 zAMYR25~BVjT|90jZBCE0IW2wN;_BhBh@B3Ns9f@zze{8x(;QMa$Ws&*p=j0`pPh9yQnad~srp3>!Vr+K#>@-&R znn$l6+i2i3wfCKi`8LO`A4^3(@u4>beUY!DZ74+d3YIxoA@5;E@imFVy5Po$7cC%_|Tj3*WG*`^K=vN>kJ*p-OBdz;T&{56 zME;MjE8ItQd$0Nwp`SQ$*Xv^Kr-8-V+CUq6#ZWJs3U)5;b1g%>?pl8n-35(aDvPys z`1=k&?)F5V81zQ@)l0QS=owSFa9n?7K4Q<`(EOFo-TjSos{D=L>wpbvABSK;yB$N8XNSzG|q_8$++bCrdUk@kJZfSRq^#bx{bKU@B7+o#$DZy06(xn5MO_M zX3fVNT}OxBpSd4&Q3Klwy_Flf|KrxOE)iD`Ah!uIn+VqRbfBI!M=Kda>}GzzjaUjj zr_z1l$CZ_Le%$z*Lg70UvUgM10-;{k~U=g1+B=6a8tdF`H*iG(&O6{S>#s z9>$H?82c0}W`h_d=0kJEoX}%@K;O?^=*1rz`-yjjN_ott<1lb@c=R|)XDzUHm~`k^ z>*>*H>3E;ZbbFA#ugB|?o*TvI@f`Fk)uQ=kd-F8>tBt)WX^iO2j=r!jxYJX_?DC;L)ZZlsRUa+4!cUi4*n5?4Bj*L-=DhmI(SV z`(wr@SYPY@b>{pr%i(*LdG&6{!BW;USjoD%uTa%Bz6iPUvWvzh>W|4=A>)^+^~Z?$ zrr#ekuU^bQ-ToM<@29GN*{pJfL(0FOc(KBv%)c+lIT%W&AAIGnGn0RRZwxFd94-Y8 z?{U#MBL_9Xdb8<2Q+QPV>vg*Bu;RG;mx(!NC;z_cUa_WR^6w?Tv-(Q{ey9#EsVn#< zuOAUlIpmVK(*1v5QSx8LQ#$qd;>dUk<7k{W(N9x_zm26< z{4GCkB>v7%5P#te;%`L~_@l9j;_pzMfAm&^r^TR~~FcT#U76u3q^*3oe@sztO`bJwb{)Nc)P$8Mb;7^~%$06+V^z7|UL- z?W350h_96EHq=Ey->b!j4TXHOGOG0u^Uhwq=nVm}F0$DZsaKZvO{)Au6E9M@BmdCR zFDpJM{X-RF4#M6^=)OSSpTXIl8UN5{j~*qvH2a1Gq9HgzsuA40`*@@ zCBGB%&K|$J*o47E_+7g2H|2aQ{_?&w5`UFR;;$xy_#2-f{%G9s;BV_s75_^m{=~eq zhrf4!lAOFvmA$dGP~i>y&9mmO72c%3<(e^x->#T%`t6Mg`ux*v@1|PcyZBs%L(=!oI8)(J>U#^5)c3*}()Yd;1B=7;JsM~5 zyae^Vyt@^@OQpUi=A0dU?-HNlb&2+$l=9Y^A0*-@lz%7kgVrK`@`B%pr+n=Ij}Kb< zADkm`7WDJ}2VW34qdqk=ZHS;Pl7%i&y7wW_n#Vy%aT9)t||{mERrrmchE}xh4OuTmz@(Z^q246$m<85Mg2fOddx+U2hX&QXuj4H zMK86L`%zDDohtvnLAhU(i)XT>9>%s8U&`*q&oKJt zZ47p?I@d*W#U4XPEGb~?-Cew|;D%}A*h8KI_EN;hI-*h3GSqzhXO|Pb-+o8u2%lO# z>xrW8U?iW-(|f#K8Ss5~exOkAcZRc!;4C6I*9gux;``(k=u)>K$FH8}UTxC(E9G8w zQ%!==OX|dRDVk$ES%LS3DwEBN*4IO8p*0O(&mVMNk@R!*dI9>Ltanc?SDSf7J%ShU zpQ`A#qo#g>G5SfRi(cnBtn@l1N8)cov7}d*?%(@=iC#l7==BTem!1s0PKnC>icPO~ z&rXhBzW{lc3VOXejr2-$%rw1j`W(`0s^Z^mkgw2ZqHD%Udad>I`1dhUGh&W^yLEb{ zc#yeQH_6F1rXf$a!$rNi=}vcwf44nnjek>LZgbCW>d|fP+impfM&E9__g%^lH(TGU z;>q^?x*Zn1FLpeL#u>h;B;rByO!^=9Po=0|x0rW)e>`$T)7G#1PF*j|TKxMog*zVq z9#puK{!mwv_sw=cmzntY7oc0%*&4(Bp)}6GT!Q}4tv^)uMk@WGV$Rv|hxXi_ygxM6 z{`Y52wc_o8fsuIIpJY7_dpb9V4ncU$)HHY?AH zw~7BZ5^pmT=WimvCqsDqVuE<1amnKC$Umirzlk|#2XBS?nzEVSBlWr6ISO~A&u#pR z!kx_TxjadI&i#Dm^tm$=)aPiNfxRU3xkdjx41X!o=fu3Tr_ViL!eAo#J<>;aqV+5b zn8F+7S4{sOg*WLh?$;8_ukb#fIe)P~29LAz7t>gQwbAn{E;jMERQij>eADkQzVkAr*ebtS0_IS)vM0>NZ^k0EM&dv5?#)o?ESqa+Qg8}{k@u=Pp-e$ zM95|%4w1;cK&Jj)6aGQs_dQeoZLI#b$sx2z+$*V7Y}_pIEY`>BcVt_9znby)FT_;YX{*7`_=9+&In_X$y+k!SGe z&<|$ez7q8Ly0JI>{C()}6-M7Hr=NU@VIHR|EJq(KKm3V5^J)xu(d)~JI34#H zzVJb<6Zf)^pOEhPbFjnuS@xng*@s3iE;sHJRKCL^JwA0&z;{)#5ubX~!h>V`4r!dB zYa*A&jk)KuS8RKL`F?waC0}Uy7bTu|htXB&fr?`ajqAZcE1 zb^yJ%YHjaW3d4Ws2F4oD!?tON0oPg|#R{npm&Ds%FV2?P zY;BvqAl629Pvej&<}?n*G6#V$C}W}Bl&=6DD0Nfnkq>is1D8+m{`b(?Rs+)pE{SInuXMgZ zyt13~%1-b@;+4cFiEj#CSpZ)7Z{U@@M#};RrJty*cNO!F?;j%m=mdWx?6nO!d0vl$dHP636ZQyedpmoAke|GdANW*X|4>IC z;q8gsiXio-7qVL9gP7N~?q>$wvM@{$AuKdCPS^ zE^7;6w_m~KC)vnGe$DXQ8bfcg&#jqY!C`D!OXCb2a{KrIaze%X<-4VhHC*4jOP5O& ze@1?80y&_tkBxc9()VzmDCR-)if4}~`P9jI@s*Hu1sH?Bh(?BOCvua7p&a^8E^z(jK{FmM zu#(Bc>=7DgVDmWbk;27_XQt8~p}A$-9+|gD@y>Ymh_s1MG+sF6pu!);Yw~`l@F(Mi z3t3|E!te{3ix+;$f;XiD+QkcLtiasp@xn#A>>~aLI&1K~eKYKhfUQ5z&A|I$%XpEW z?_~COqid|mMROAKO@F**<4poT40cN&hVhzMKU9 zXl$bR+jyhmZK=ecm~Z;=cj$)C7yhQaXT@LM8zcFjH$nV$XApk{N#KvhCW^m(Y2trk zzUjx`1bzOW8~*o>6@Sb1J0i^dFF!Xi`P-jC{Joe2{%CBX_?u#~hf~S_#C+3_KdC>Y z8-MBYM^E^p!Xx>kkG!h*q4Y=Jq1(xJ{%FTGii>2=AAPn3m$7YR8YeJW7bP7|#E?h# zN6)KN@|nl$Qsj>o^Uj_>`p)l&btPJVk}mwM`Mni?ckLO8KW~ok)7at9nPvPnCWt>8 zcRcu8{e{V^!|FL^p=Iq~xEjWvB|I*k* zQ{LHL_@*yi|H>y1NY6bo^%!oIzw9Y*|va$hL_z?yqd#PeZP z?tz|vpyyO{R4A+^8lRK$wjVi9h_eh*ypCxie^u&&l$%94S$27NlTqDoLS|2IZb-i84S?yvS5!~O}i(VnU6{tn0`&QU zvyA2WSB>bQ;$tDi=IU{mtsA+k9Z}p}HLzGaA91-VPOF=F2o5sf$u-O zqVU`fJU_Qh;TibmxrLYJh*;i1;5m%k!U$rV{lN3lp}BLqfaPx16CrGOqUTWCwl5>U za794Go11}YCop{);>(2TI>e{70ob6x^%Nd&rkt);%m?|{$gdOqA{Dmp*Doe&laIld|OEb%Du zJvz^w>y5R>ADLu*gE{BW=nXUyzr=3|!wi^}vL8JwIDSDBgT#}0KI~O90`2;J;8a^c z`Ll#)Gmcjhj;{uezdszug)0$Hjh@-5a2y7XKYmW(xJ~EFOwURDP{;8up1XY>FzhLd z;7t30YvNl1%T;Av+s;DX1o34C4F8<-Wx}<{nK&PqJ{=gQx&q2w?1>`Rd%%ZWX!J4x zp0(9fYoM@fpC92y?yjma*sbGkkL6DAum#IZ@o3~HJp4`K(S&8uTZ_gDEK^@C;?W6U z`M2m#X2SC#{j7;!b3CUoznkW#^Xr&+t^uAKhA4m5Sq6U1^Jjq%V&XCX!Dp_1P1RUmto=;f?%9ySFI3 zN&nGX3C3?6+cW1sI%2_@vYG7iCunS<{-e9rD0?ZD@f$JU^!tytJ}BnT44pItzFF8y za-Vpcp$EY3B7M|G576_^poLm=Qma0iD*P=9Tk$vVmm~3aFhTs4W)Ob^N#KvhCW^o1 z|CS#7iTS1DHXbm;M!&^uuRS2fhY4zApu+yTo~| zpZxn1pHg~)^zZwU^zS!p&y0V663$)vRpC!nHqo$pFB)gqM2Y(MXG#9MqYwPB!Iz?b zdt%O6^6$?SYf7fxOZt~mU4PRFSqeXAbo*9?zb(Mux+fL>T6CY%Te`150-w@i?I-XN zJsN0ZZeDwHbm+V}i?x~X6W!qNgs&gIXjc>Y{RaOZ{kOtT zEb&>1`I5~}e*dk6$M2C(sSZA+7tyc%Wf#@K2%i$=qSwNwbh@p7ba-9P_Hu<&_~=qv zmqYUuexymZF@jE`4x9Q`bh{j|hep)ppe8ncT~3j-i{P6V`oQot{$Yl~t;H{D)4xLM zsHyfJP570><$}{0GmHs0! z@9g=HE;eB=5&u!T@VBPTiod%aABn%VQ)1(w0}Sf_9&?US{62O)P8zkj`SM`rAkTP>K2ZJ*FM19J)5CwF~a;VqT+iI{VC z?33o{iq|EYf0SyxUA)PPw=*6ciMOUC@m853yj3TNHyW2L-lphhL-FcV;!VssJ9xYL z(&X`$E_+z!zCH7V!XNdcc%V_?Pxhm@UiUk8!X8GQzoqVFjeuM_f2}xDIMw*wfd$ZH8vCNb+akBKIn9!nd z3BQcz$Qp%9*uy-BEu`nLQG91OE|HJP`{OlmY{u-5w|cRb-u`$^7HozUHiz}2pm7E^ zkFy_zX2K}<&7jX;+?=&h`=yBfcr-VG&+PTbn_|LfynYli=d2t4FPT5tj~rOvRo@6m zTUq9#$=J7yH&XnuX{hc~x=Wk-+@kMGv~{TYQ|jgDyR0D4hF*`9d&&Db>UnGX;aBW} zUvW{h!Yla|=dD(Fm3~F9&PV%!SNO74Auj>_Q*wCUTk4-em~GloZ}f8vGYuF%K)I?j zkaG-w;(YiMzl6`4fS1)FN3ExUa@UIRd&*z)ZCD2XV8;yAPtU&B4*C0hPq)-k{;-ox z)qQQ&9=Q80xQ)$IX`F%EU+t;|PSE4WK7Z5qLT|0_rTm~>|3m8USa_|{G4~UX#d_l6 z*H}ZWem}r3=0tNu-(U2@jq3d!F^?BMH2OR4*YhnyL*a7t#6=HY(eDRme;8-Zdpz## zhhMP?eU6cX35*zha)Bw{9~b={>3&nA?;hnDGwEN9v+j$(uXF;xIbUrYzO8@X-2ag< zNEjzfV=jY)abz5Gd`n${;~N;3x~jyt%+I7;Oo{Ktp(+F4gnf?p@BTf{HLj!l%yO?HtT&smetQhR`TAbphI@3Z+vjWkF+r@;I0Ngz zUfh1qc4z*pS86G*iE_@j>itnjza{K<6W+0=xOg|#5eM&>7tJ#s-n)VK5b}y@hQc!l z^A1*ZnEdF3Yr;J6b$D+Z&b_~f_c)b3ugtOXCvvN63GcwqVc?4QniQBvzbjg&-TL*l zKd1K=AsgRk#{3xsd22j9TX>HE?>Lj_1CJ`azXiPC`GCUvE*j@S@;fFvsMO<|6hC@+j?711irCRTE*d9dN2pmh=paVTx*ZNobTCWrGbQN& z`;sy`pn1ll1LTLNkq#)fq{o*=p@%ZPw=B^^%_#Ih{F!LNt$E9&u2ZS=f2r?q{tx{{ z>N{MYG4-#O@__Um(s87I(=g=ul* z@A{ou$ES3^=wj_b#9=)%e4vLK$bksx$G7^jTEsPH^n-Sk-ji<|%jEZlK6*G*pGS}qAR*rAfI*G=K6aXbjVTY zfMmcM)k^c~jHkOl``oA$H10(4*)uOa_@udI8=ral+DM0p zhflMO*gaG?2pxV<>H`-0aKwEU$9Vl7=?gv331mLioedI)L4P&wyZZK0fkVo}eoea< zdcb3mdrbBq_#)?%r0053XV=a;z$f2BZqo;~R9i>-E!lcx<2hpZ5!~!t(;Yt5wss$5 zJEm3R+2eB_@<4x%FgCd)Kj#sTo6YGfWvF3A-g5yv%T`b5vB_bjI#`*LO+A;rJ9k58 zxjhi(HtZG9)9VBE&;{JE%gKJNL=Kpf?l^#-xd-^D^!}iq^0Fzz#${Udl+$O-)bXWvJ* zA$XiohYAc0tNAzI4W#S8HtV@dkA)o1bLl%GfBX36!}NUa0&_lhjQT*y&q=3FM4u+z zoO~;!Q%n8aciE%>(GA^C)CIc|`x%}7fTEia=w?Dt(al?uZuC4v(x0t#(*e3E91H{B zbO%Zi=!j^@L_4eF(vIQxjZZs8CfYfN)6Tgj+9|NbZnF*TbeU);1iFE*htm$xk?{3g z;a9X%9}u*o;eL=Y!DgZz&<)WK(GAg0eA?->^)F5^(GKa_@Y#-Xe+=ly*r!l&9{>5W@zk*)WWPKQv{R;4|P${P$bze+;8tSYCjt(3Cluzu}G1m9ao^WrCw13V1OM@ohk2lj6(M%%rMK-ClSBa*`9`=3rM(&$`7W5_kl>1gF z`l$HRy853Hkyixt~(VrMelUzY~p-51RbzVfZNF%jB}kL}&43l;NL_ zPiNhll2LDIB%|IttYp-eZ0YQv4V`tH=&T8JCj6_n2jbIN2kwK~ReLa5I`}le9)V*UvcP7pDT2LnEw23&|9UTH}0z^dzI*kWS7}y1>U&t9y*YI zS57DI>mlflXhX^`tjlh_x7)pB0$&XG;}D&|k1|90amXj>gC9ovaEdfRD>cyP$WKH5nYc0uehT52iA^h{D;@-` z&^XfP_H$ahRtb9H>m9}4b40I`uLqsj(Mt&Rb`@rN;jsbne6u{kyLmh; zUG(Asy*NQHZuma2Ptm|KMKATBmmBU<^fD$#*gK6ny|}pFQ^f=FwXmx|>vl0s#REz? zoxq;a>8T&I5~VnRPESNX6g8?fA8&L~-z&FPRYrc%U8pVT-ucZkmqt3>eSXk8 zepbUSI_%$%9z{)zLFaqT51;A`dQPQtLw{xIsUJ7~qS;S$)p)8F5U~WZi|pT@C>>p- z_mHL9Kg@5GctYZIMDvbEM|f8#oB}#Zgns7f{a2|zh3JRqNXjexgx^|=TJ8gmK|f|4 zED`;S=q(ZZWl_6^N38}?1lG_j^qou)>UMBv{pM^7}z zY|vAozNXI;JxQ6A>iWv9cT0Mz^&_6=S@T0dPjuhKJ$n4QMW-jdz7n?oB=kqjnd5^^ z(9Seh8|!fCzUtMD@M*cj3(M&azQx)pekbnXTdZ9R{pUjDZxoi3Z`=3kf;M!3W=$H%^?o7Z_4;z1aDAG|q^d@cK%MQ;YYHxP#Ah-|g1#N&N5VYbRNPxySZ3 zoA0JC*L`3Y!4Fq#_`o#m8TCID^G>wB2)Q$;^QGJ*2dnF)ezVekk6+_kA8?xU?@a4@ z_wU8J60I+i{5;+9<|#i`c%*o9-faqxGTz*3is!YWXD9in=ED|T z#*R1BI0Ki*8E<|=KTFCT;_;9aZ=KF!n^DG7Hjjs zE42prR-@pd@ZWZDzhx8pZnmN)aiignxtDT(5c440neH{M0#Egncap8F_fM`sUbE`W zd7o~>4(~IId{FQqd>`?W`FiZo+JE&E6NW1>ciBgQ_oO>j=ED5|eP(}HMq@=TT-AV^ z%?5AXq`!BQr6)7?w6{Pj>~&%fu+QkB{A3V&9l^e1pQ5Iz`zmznd2r~bjGSUON7jkLZa*9bg^po`Oc=pFP-;=}N3iaX5leEVK@6_TG1>t#36A0+h! z!nC9f8Q&)QAfGDFe}?~5@^;_X4)`6gmp_KDhx~z%chNOJl9&(ry|7>Jx>@PlyL7+k zW*zgC&kue)2z`L(Z+ao?DIQ0T(+AuqXScqLezc2>_`n(+ z59Ff>6W-AiMMF>C*g6LMG{*kCt?L+jg1%2)Gjxn4=+7(XCgRz1Y;_U5FXZ4hWnDz- z6B2_X!_B%nx9MMmz zd^LhT>HC@T_ZTt;`j*tcqzrOErmTcaX+Yc{%=IktpF7JM zwYq2%bgfqCTJ6xaI-zTIX(}dn)(;gewSbleu2-~_ug4g=bXqzezSDfId37h`Y=ed# z_PB4N5xPbb^o&-ms<&OM>kUKaDngtAIvMT?=!y12w~9iyVp`RJL#rDoKrVJ0bg3G; zivoSeDp;`3q2D9ygPt|AmS9e=4}AmLxDI8n@5nd<%_ok%l^XS z3_{1kodmN=HO&=9jA0kkR(6GdUWWP%#21*~rPaaaUICkXKH>~j1C+D9Sn~&(fMKkM z-+5u=UY%Rz{|o-Tv4rxk-iukMM*er43-+zBmvkAN5B9S;g7b>t?6A*Ok>ytltP=ep zE~NKsd)HPjx!Fy9YQKJ>kGT!<@D4+ELH6biV2$M+zQd5&VL`VVfuRnnH| zKe+Du%9fG+J>E*P|6qSOGyOfLW8aj|r(5N659>cj;|$w6!Tuf#41FxM{T9TWv(s;( zPM48nV`Qtp$F~<*@pkd|M&fOMl6Z4;WCm|vPY`c3E?K;7)nz@|yO0kl>vt*UoE^ON z=rSQ0yh&Z*MD5i>Kae;R_Ui6yl+GaS)xTKnRrn7_wO0q@=Ij{uSnBQ7qc(bX*ra#2 z!*&(+>g|Ej4zgFNW;nLJdK4Hv5qovIexGAH>{XguChgVR^t+85x(<HmBKy7=BQ)HQp0g0MGNg6~A1xk=JZ zt)KV5xmxjO+5aZ0(@m%F^Q_*??-=^QEa1<@eeNCPb65Ru+Ts6cL(GSC(kA#PMLlq1 zz{~Fy>S*AxAmr{lF-Fxa9@hOfy~rK^&~z`>BvY+Jk**I~do>)h@aZO{7YyrvL*ooS z4cd)czy8}REdH7)rrsj(kEOK#4b4mV+wJ?`fYz6l0;}lFfWEH`aeR%}C*r(~S_JY< z?qxl;HHhfVz~e?DCWQL*VQah6)LZ1F>3?&B!X?Fnj{L2{rHls^joBSy?1>WUe@Q+3(L1kII7R;t&$s6*oPwY7K260sP9uh&oZ^;`&+Y>M1RsXqkNSTU z!vE}nO&g|{D)C-|y^-DULV4euC{WkK;H|xCC8lyQqL9Eg^1FOh2b7Q{w`um5!H&(x! z=~qbqf$0B1`#CCJjrrT>`{Lfr)l{=W^Aq*n`)&OZUErr)@Kf~un9(rA5R1|HeQY>? zBR`7Qd%H!wH}Eu~-U~dH@MG%xq5J`{*6cCWDC+s~BA#=)wEczu&TRi@8qe##XT@{i z%8_`!MUTT1o`GGx?t54trw-M}iQo={!Aphscyr|eQ;0N;`t92y&yL4rEyj~*CLMDXRD9II@_(|ZSah>#E$16 zhH1<{KAvfQiQ&0P$8#NzU$&WQKK8akKLDNy(^NE{LB?2 z@q9-Dcn+Tgcz!!UJkz)n#q(WXP9L6WekUWI>&{9Z&!910f035UcXG? zTlOPcqT6rr`jK^aoIL%=-nHO7wmnDV44gwZh-=S{QhzkXX~lat=_4uXM@I9E*MFuv zt$mnA??-mgxeE8A^&^w|2dx8HTB;^J)hLCJD^wZhd%;3V07Yl zB%XtQsxLa~7I>z93h(H7C-pj>^AY=#`iF?4H}kp)(y2+0Abp|}KE7eK;qiTXhD?s{ z(1|D!J32ezKu_BzsaY^Ufk`1ZVF%CXf>-nGf2;UAGk`+r-yuz zIQ=I-K10&L&OXEv8)y$>>o3ShG4?9H{zCHANDncYO1c`6NvAQw;KYiWf6iPw_7n-%o6vi^dr`R}%FUyMH&p>oY0d$^GXk zs;3b1&R#vmNBhLO$S;}5eL>O(nW}t_kLD@dAztHo{Tm8*GM}S6$@??BFJ>mb?z3R7 zTlvO^<#W(D19J)Hb1eFU!W-gTDT}X*IcF!nzH-09TDI~z0+(6wcEj|McsrOR-a;9| z+uaG`jm9O5x4bmrP0Tqvc)R2{@Rlz5n&(ltqk6?dUsbr1@->pUeC73uO&OH0Ke1ph zwtS^=2KJJWuhW08_+2XHtC)B8tjF;*Y(QIs3LYLHyCU#Oo5ZZzFpBe;cot67~P&TcLQ9l*KYXR_4KKL&)PQL_Wkt$cI4OsR?nXjh8B% z!JhCezd+$^3D4s?5MihMDMa_)HX-jt^g@|C2e~Y~2TCh)xu`G7Vr`1w{n8`l$k9R^ zCxjl96}Y!!402trNA6Ztxf6X+sBWL?+mV+Qb)rT~_92nA`<9$7qgLPkzK&1~jPY81 z!;kVJ`qjPcqOk&J9Z|$1WA{P9{Y=aCvmkvAxs`f7e!#XK3-_t@sh$F7+s3{$oC(cI z%(q#u$G=g}&$<%*zULdYV6BLUGQ?a^C+`X)=T-DSDeT?r6!rHw*S@`8+{rbf_jXZ$ z$Ad8c-ERoFX?~7_iD!^4A?vj0IrcU8;#rLT8_TrNDf~~~;rBC1j1k@>7A4*gpGvsi ze#%!R{zUyk-uVK56!(<%3(iwoLgYVAqTW7!tTT=E3-y{4IqF{YN)&e{A>VOkI7Yp_ z_odP6?dyTvTbtzwpsCNjIW?;dQ6t z+t3&IJxt?ty6M#O#D~`}gkH*S{lYQ}50C8|qH%_vkYxSBqSqz<_4rE)@9(8~WwU-^ z#cRq&8m)do=B%Wvp5}&PD;{S}8i_~8D0pnkG9K?q5RWwOc=5RW)%4+!=9Nu6Zh9qg zJf_-SdiNrQKeCs$pRMpG?WOUj9E2Y6WJ$ZB$DTK*4f-qPWw&yDwu9@gRA)dsZFh$3 zrR5gf#kQAdoPoOp?WNs&6y8#4FNry4$6orlQ{gO8dr9i6DbIhnP~nc^GxN?;xRddj z0-f(A&`*;4C)uvd`G@YcU@x`|rf~-Ll8Db7`HjL~D&sR^-r4gHP1M(wXnZEs{O+Uk z74CTc!kkFnhkBu$HKPCw-8|>kn@Me`^GPTQgDNjQrtueNo{|`on8-M*71E zU-*EhDSvoq*CXYP8S;m(je#*ce>ja5I2+v`en>wH!WZ~;%KYJCzVZFxEh+GaPtoU} zZh!cR;!nn7CY)`>-;r@6@mHjc#GhR}rV04VR6OQeN#KvhCW^m(dX1LB-*|uI6OYG; z`NqdzD&jE{^!cY7e^TD2D!=-H0)<18w|AbVa46+%v33x8UPAs9E^osblDAjIz~aM3 zTu{VjXk4=LHgD1}{VqlFR?IoRytV3gsgt*tOiW(hO1zOiC-pn2&l&n1)jLkz!TZrW z&{Krs&$9p0#b1*63i@5BcRV9s;EUpZ+w^+JQmqB}+KBu9sLze4XB730g^;VH)4@*% z{hH#+)Mq2=dM4{pnja9a^iX;l{ zgy?_cBHKWU^Lu~J!#(#VGn0G6JixbqU$4B(kTZ8a=gj-_{BV%3=5tHM{b*H|8QZaQ zymN5|{d0aar%cV*?%1&tcZSf6lUwASoTni#9_#Mga^%Nvu9^#6y36_PH0Nv2K1bnm zyMum{{bv5!U_PATWil^4(RPQ&63o3)bcuZ5_Ly@g5Z?)toWq?R5wh=;4LH#L6SK7g zhc(>~oh|5g^L|>Z=8ro0Jk^hAyB}>hqyPN<^V=ti@2mgTj_=921Mz*yDT42-2f;Vn z=?>plp9sFq`3%X&H_??ce9IXNCkwt)6%U`6uW&E=0jFkZyFtZ=yb||L5GSd z8yL{B$@uXhT4&l0F5*KA$0+%n+g>r5=VtdCf6W{T!MR8&ui*&xTr z$DnzRG@Fs;WmxAmK8u(+#m{$_B5r&HY{$J^G_$c~=NQW2pk87n{=FIV zZsCuzR?NBEf!7_V`R$}RjU{FCNA`GF+rt6K6`D&^mUm-M-Ap5RP2qvVb+?oUuPJ)< za6Y>&W-J=@wGo=N;$a&jX$@&bb4f zM3<10pUb>*#of}P4)`?2tn(Qa25H8q!ZO2MbaWrP!ZXDNtaw)O0m5^AwE7rf znJ`STfo9AgrP)X{Ux~0z_or|?UxR&pA2rX2&+kQi{z$II^P9l)ov z4Cc57Kdhap?xGX*?X*_hMK?%1Kh`WTnRDUz{(?A5lFc}aLFOO<-{u|?%s~RZMBiX@ zz$$=m%q1Z#cJ}}W&7FLnGq5sXmLtt2h1~2$EXtfs8c49;$udt% zGW%XD&PRefV#EU!rjuPiG$C8#neyqmM>L+5zjQ$2*{Q$Okw$;1*n(3Za=j#f%OHQ( z_M1UY>r7k0g}-FYrzf+1NYI@*f5~k=JyrN?WOn?m_@9CJ8!6{vImI9QRr>t(R~+Jx z)(r)Jxt9ETGVv$q&K&+GTXO79{B>oM4mH27@|#mXSMi|AAm!Ib_h`JS{Cb2r%Wryq zmA?GuG#k#ePZTS^PHP3$2GPgVZ)VOOOm4rKpf~mT&7C8~_eXI})wh<4ezRoz=TG-( z9Fl+j&?g#)%0K^@9SFPe&wam2kAGeg2aEmlo3zf9c@F*aEvJifNVb12XwHm(-g%nX zlN0gA?Xy47SVK2UaLF-KHx$rM$%kPTtmrVOk(49H^?v6Z-K_~WI zvgO^?pK09j`1c<)?v#G*bt&)a(xO^LR7j&r0|5c(f(|Lb2$;*_AZV z*cWEP@2aA>Xa9QoG8T%Q!!G-I z3+^;h_Xpr^qG@#(8A0T3YAIhchmGx`z8sN*xiS>^&RokKTOrGxM6q)!!;v3S@ocJ< z--;d}iWSbm5AN$;)f>GLIhvci$D`-Z==jx2?|jyP98Ftq4PyRf$YTu$_G$LNj~(yM zV^Nv6vEP{(?`)4ARXt(ryJ>&uaVW`WL0Ri|tL;8+AG_W%-+x-1dN`aDXd#+>Y#Zp= zCS(0iRtBEhZ02n)={NV@nmM2FO z4>&jk9CYLR#~dK!L%hiIMoYUPzq+AMyRG>T%J=n`2mN!JBjg^*FRr!bKt?e9XTP5z zY4N{98kao&_rAuZ8UKsXUlXgp!SibR;(z~%?@VD1c{nrA5i9;jYlWU3JpOkis$^4g z<9~wQhLq2nnkwl(<>G&T)Hvkvzu##bD*xo;tOJmbj`|yTeU9(d^u+&Oh=axc{t2yf zYcEdtT;nmB^*Ms(%-D<992a}aX#DS>9dBcQI}mR@F7Z~8CcM4q5O1{3E#CJ0IW>3_ zG-n2HhTKyo@%Gk-cDz0P?m)bqpSdtoAH~0c>Bzyd}~b;-nKc!8?AGTx25vCNjBaD&6&YlgY>7}$hTzq4@dTCoRR;q z=hqr%%75r}=s$F%(SLX;4#r~n542X`Y;gZ!su|lzuKytDZAiKQu(Vgmu2ao_xZ^#I zL-HT4eoNy}`44|~Deu^>^!N|k<6yDB|3K^9%DaVsN{u}yXwHnhTlK&0^(*4BeC7?+ zOR4&3in~&L&x|)CwoEnsBpWG?$LHP@Ag*JX&z<`_g|n*Qc*K_2IicomH{pMl~{SG|NASorl{0^JmsG znxWIiecYm5-!EBYuprGf!OTSb{tu|%rdi+X(Kj$2F~DlX0BP2DK}q1Fo8>l^guV?MZuaob~ZKK8g}cFuJ%t2_zs-L>u9Z0eLMRzg_-2)TS0H?_3etog8oxY-yVNQ=UeP#w#2|hAQsmwo(NEXT=a!UX z=3yy%j$XcuX3o(a?bL6CoErL(jN&@v)WW;YgdWX94lNAbTaGzo4SkD@`FK4M`m}Qz zdXW04caHkaJjk)-vu|>}qVCO5^AK(QMdlslvGr+z4U?^AK4a~ro#>e>NB(RX^0D`N zX`P8l^s4zld!GFK{+}DGpN#s7R#`C0b7@KHnDez|1VyL_@+zpVzoUyqWix&&}NgKSRv7hA$6$?p!`2LD+W& zX1%rXJ0)PZ@%h&Iucfaa@;f%{)oZ)1Uq3FbGqLBQUVcK4mUqdlmlt$ru3rA?|JE|k zNxgik@Hcv=9e+pu??C*Oxx`;l8u53nL;TUYq2Mo9eorL-l8HY-cjoXn`Tyq*f9djf zSG=t8NdE4^=QJLbzgy$d-z|GB{r>LxHeAN{cWIr8%c1(apJ*AGOn;YX%ecS$vBqg4 zf45oI%=<7CM%6Eu8JH1-`7jE*d_GK~`g_biqWlPI+%*9j#{eAfI<(*YtqhM8$QQljW)v#>mc8%X1z;ENT8o$p;eIAhVl;*`08VwKk zLZ{P=m5L z#f{Jda4hD`lwZDHNqK6T%}?>128#^#8kiGH0ROco8UAl@h<{p_Z2T9b2>(Ru z$&UXC4)IU@QY80#5c5_&SIAg$`LB9kxctWqFcmvc^TAZ^oMwlq`Cwe$%lTj=?}@*Z z{I9miel;iTt>-oFUxeI$`YDb3%~I}%CGL9>r*FrMI`ZX?N3&+sAvRAjdy3V!zE(4B zFM3}V8J-~G^?isbbGhGvekmdMuSIXv0?7O|A>^;8QS6>(eNo>O#q9%+-GrEZ!!#}P zE}}CL-aF6-6E@|2EAk%Yhe+O&oL91)%ljT7?^SP%wI`-2dvRq1 zbHPYI09WR0Fn-_6AhP~RX~$6M*{4P|BZV$G-&4nTdaW!6H*L z72jX~oE>kWrh#~?b%{6jdV26S-XY#-om;#uwfJ($jPDDYGlRDVix1}%Z%T(#PF?A5 zn*B*V(@OSneGQ*Y$v^VlDCe$hVe7nFvJI%en*6s0l7CmiZofv)tsV968jsM|rJron zcwDFQ?71S(9)bRbZeATre|ui9!Ccx7uD|DC<}394H0W^X?zyO8qdfZ;;k*3=y1M~7 zyOZl|o@?i`Jv%LW`$AdEH8B*pYLeNjNxGG0)I#^eSNpltvGy6YSHP)2(9)ddvfAS}+f1>&Ge6~m|*}I}k%icus;B?`0&y#k1Zh34VJ|A(Juc&`L{rQRs z4)ICr?D%wFpI0uwLld7#s?Q_ZGM%qj5pjl3Wy2=Rf4}-?8i(Y+PhP8WsQmXjm;O|1 zn*6CR+prhkf2VaO_8j`}jq>|Qw*M|@&Wu0x_8&FIocdGA#@oJ4cD!x-$w0iVbBVW( zG~w+l4)I3o+~RGa{BDwsH$ih|@V4p??(vo`{X6dojYF~zr#_-_sO-afm-?5zk$(MK zXv1WDpPkm3m>gogz_SO%_nB<{OSENL|L!@Uv6{#}Otw6H>v4@k(!Woy(l}K5cauwb z=y@YO@yv-f?8Vo=w9dqyL;br(ejmw}hl1wJ$iudeG{!Qef3II}$J>k_55!xJ%X(#B zn($WY5O1{3E#9We?EC9T`q!TU{d<88 zlkxR0turw>ME$#}Gd22`Xv?(z-O{14noj+Db)Ci`_kVw=aj5j~W|#UmoF;jAp$&WS z^)Ib6vFA|#PLSV6vgM(mIWzL`n*ADMPW7+KAtrnNZ7b?0P#50&)*6jJkPas3;YB1TQMo}y1z#HqiJ*M&hp z;@3PzjXAM212>;tVfN^%K3R%et6EE5<7viuW7qpkvf;2kZZ8L|GjYi8|NQ_xy5jTI zXRFWcKLd8*2U_;EQm!zGb8d+)A^$36oc`8O;2&={bEmCle41fS3C+0`{kg~u>p8cW zS(13pZC*&sxkY}k-wfZC`!p^GyZ<*``g!VVjZ4zcqgQBLn)=z2KcSrVVEyB*8PLzS z*{~U3KhruBn?uyk&%UoQ%JU~licb@5nbyyH-qRROr+$9AR^yQL^Fzxt4o&^+(qHLF zlYagu8}{PsXIf`s&!K)^D8G+n>t{i8X7ux_-)oFH)z8U}$ISSV9dBd91M$}45^wo$ zrY9bAyFeCpYpi+4^_eeRjO94-CZHi!SjN zP7~h##Ub8kom;#u+>;u-37Rv5w^i?Inda2qOPBtgdauSI_kaIQ<520}ONNQMZm09p z>NB8!AF^RGzW$|kCMJidf1iCvV>FrimuSnh{@wE%jn#DO->0iJ4!QsPe>4u2{`C$! zfcT*E`(N7ABoBXN!(M#-OY2PRIn=)k<@b?n|5wnQA$j<=#+Xxim~8z!qsorAv3Cx{ z+jN(BV{fI$|NXH;ywN(hcstmxWm_`sJwbD3@b(3{CpY$9y7cdspvEEhfB#wIQ0ZTv zOZ{8)R{H(lS{o+g>t9-DVseQ3_u^k`j3!h65^b5*zw>r$*_clKJNa&nL+=0Hu5qaJ z?>Ah^Lw}m&;VK*U;_F{pXJXHx{yq4X##%Dvp`bZK@=)%{jXX@Y{@wNiJKomcIuLJj zT;i=ZO?Z3QA>L@6Tf8lNGc|Y zktTV#$%ei7`j^(3*mJ0V7s~G=+5WGfIYaVrm&Vx1CJ!f6XdIF}%)L?LP|3qbT*^bX zJN^DhqYabsp`dH5@h)pW|k^>=6-k~|FEpmC_=VVz5P=-Hi~ z_)L=xd-3HVtuwLbP#(^f-$%0Lp`bZ4^6<``8e>l7A!d{G(Oet4&kgHJ>rj_E^`A7(?gh?9U$1etgx95h5Lq|u4?ON{ zy-%y2HF)u}dJ}3=Y0mf}V?xlk`_U4*hmGn{#T{%ps71XFwW#GK9)1T~X-VL{oA@1U z9^A{OYC+Y#F$Fo{Z{x1B2(LxO3~(_oA$Be5&*ES#*8P>VR^V*#`z!bC(6Ve3)t`di zd=`pXFY05J-2s!%v*iqi5y3$ANOOj%f$xN967)7CyuWf2>Q5Qw)wD#z-d4;#oOkfYfM@I||6HjSD~)0ADvYffn%>S#&7^*QPpVU zZ~p%CA)M~P%B-U7?;qIiE!C$!)1Nk z8fjW*%03tK?hn4K@yX*cpgG~}4wK#zIU{KzW)@8{XC&cnz+%F%pgZxr@fP6I1ANv; zTY=FIufQknaV%=9QnL;d*G8+m92v(`;Jt-aYL4$Hxi7+KCg$BM{7qP7$6xOJf%x0x z5`W<|;_pd^_@i}0!Qbe%)ZkChojLr?Xw^E{3I38D4}AJ2jXUoD&eOP4_TFvL?-p3@M7=wv&NdkH2JqQ}=FHf8)h}tRIkoqa zt#2_0YZdfI@6>XQJJPqKzoT)d^zGIht#6y5Q>{98EA(xPzF&sx+m?Rvj_%}Dy4I>^ zNe`3mCHv2`1^f3TnffcX9e9xqd-3%xtuwLbLfGR zSh+8!{%xxI(Rab_YlYo6<9iy1&p{53y;9?FlZ>;BlyWeFe)L7g-JwOsW4K4iS4_R= z$D`-ZTx3j#U3YyDcSjeacN+1)g5siIpN05eGyeVlU_C<&i*;bObq8L*#(UDK7rku$ z$R5nLewcc@sYksm@5Y|G?-{{s3J)BvyQMsMP0_2ki)c|y`yDa22+dOUu#FLl!;t;h zlx?4HeYp`f@1-aMy+yc-$cGr{<%G%awc$SLYTPINGVYW9l{bL?^tI8>sv1VIL7H!U zddxUp|6cCN&ug6W9B>l*)QL`!_c&LcfqkB=o}(JZ998O5FW_^nZGGzg!TQui%#c~; zQTN~Dm0PvUthLUu9)WjZ{`IJQ-*onaS>C3sykM&2<(g|XPDx)cy+Y$u>FXUXkc=-5f#`I*2So_?E^U?7z~5 z(>3mv$a;l$a|YHcAUDkCW;G*Tt?CupfBk3)W@e?OUSX;YYdU5at6qWD3cL+ouP{}9 z2NbVCY(8oA3WDCm^$N{Ns8?9pA~2NddIeQa-N9I~vK4z!D?@igDQwc+P;}=b)zjck zieq$N6x}BUzv>v>&tttW>RH?oMRhg1OW|i-sqcw8_)U$^7lF^6#TuWRIX+*C?3ME_ zdu)DnhZnLHxs?T7xbxBUt=r*S!)Gt<`Slq1*M!xT@THrjZ`}&tdIw&2z_;$iy(EV8 zt=k?BU?vsa8^wL=nf-n1cy~U+x5nK|iG1s?8?7;Y>j3gJ!nbaNZ~Y;B>pyzG&T&k> zb!Trv-#X4cC1?FY%g%Pfc9Q075nYMu3hCacGSoTLq6Vj)-y0?TYuh~~ha!yNQQCtudHP|60(UIsazcW{tZ{`qx`#+3~mLl7aXele;Ob z>b;!cuPBZ9yTT#4`*P}Er%e9&?D!k~)q(gca*02G8u2&R zA^vFHQ1Ex~=c&P;pgVK;8zuMU6o1MF>_9$2*^+dZc;Ko_LkgQzdu_ER)&1dQPuAm( zaIz)U{o&1YU%0$KoNP_HbClbY*TAm$erMHQ_&cz9de_X*_@q3|(kU9BDo;}@@k#b1 zasx5%4Xh{ipw#OyPUW zG&{c6Od5#qM{+lXN&hFpck4-l?}ZNWP3w|{?@sw$Qw$)P_$C@pR(yZ*Gk5q-*ZsP5 z{_U)~ci*KN*E=A$w@uWzh8#z{{-sEroa@=k<+ia}=h#Io;CS@q%T$hC+!b9=T+d4J z!-{*_{}*zbVgauQ_wtxl7(F z>4~;=>zF|N`=iS(*sih4?gaNoD;p%)@qy7(HI6AhaOBGx$0|N>iImT+GVe54eX!^4 z^u-6RwqVqUUM#|B8RB+pr*ukuE<>#9UN5aP<*|$Sz)}k?w~}p+^_uRV?UyVD{5Xx&io zckqeS;7`z1`^vcdE41Tp>6ZrLZ?4PyB>PSJ{EyWR@ki^1g1?0gsllJ1J9GGZ zsQx68e_yua@5mPi;;+ml{(Nb~-y;t3N9%@yzk`pb27iL?%;9g8+*iis-#9z|mX02X zzh*oBR*M><8)x8-NN@Nz51ML3 z;&0TKLvv8*en{%g&S$U3jQ{!A=Mn0k5xJ7D$X=C+p}%sUl-?ht>p&W^tYh!LI^ zv;W09H)P?4e)t3J33EFpy=TjLC?l!@uZ$cp4@J=J6o293mZ+yh%tI;d-i_KInuh|P zpnLZ&F|UVWg4R4vQ}!G_)5n(2vCKnxX#Ghd{|fB*JMuRJ@weHIzd`2%)TdGYJ>?L8 zw9bw{icyRC1Zp-xft*ie#owBB{qUEh_@AKLDgKf_k7wIs?(mnYdUMsU_|Ul;hm;4u zBVXfC<-w;*KO|zSt4!Rl*!r8y_bdKgoPNc>BTOc#UvZzTv!ys;vilW@PEk*p*?z^N zvR;&Q_F(;rki~p{9@T76eFouI)oZ9&PGH=IAaeG-U%=cvH6JSX9EHQGU{Thx(u1P} z4jJ1x={e&*!LX| zLbooC*$d0qOBXF>ZGC%P!~(|EMh#~$x4LcM$7@D9w{J11tI?RvvgO!dvZ zQIY>R9(`hZ3wn5$Acs+b+LMmo?8F?kQrHc*gy^p6MaF5c6Rrr>Ah+q`^Zsf=W$5qq zV2&TvuwM@hl+E|_l=;!idqY8x`gnb8CS>S{n4eFy(Y(5YbxMA2@7D7!_DS9RT2Z8|w9=(due+lOC4HeH*&$8or z^yvff+#&mTPG&rN2f;IY#~q%%L&WozpQaAaL{lp8Y)G0e8us+HP1P`-KiT>=*L9lfHhTVtm(2Sm)}+Vs?RL~DiZ+6LL2z-}dZyGG$N zx&1S!*+%lYnnp#C*qc? zpJN59k4Hs(Q}hEZ=n8XOcA!7f6T~c{X_!mNRk6qS9HI2d-dordkvEGKuR#RWEz0_W3M(a#mqG!^Fe$PC1NItVG7%2JJ ztgnpKFG#hIpUT`Y`SNs*w2y=_Pm}fp_3WU9XcK72h>(s|wd@r0+&y2^K~lU^>0+v5S3VW$*{Q#l_eI9q-)KwTJDv9}OdhFm zNb@L1eJUjHj%!sw}`xca}w8oF94@lj+&A_@jA3V~=Y5sd++SX$S6t zyaQ%eZ-(wwdY5vH9bD(Oa-B;ukaRBa&Gjzj85bF6LFd*%=hAF~wpu>>89n?o15oD{ zW9vThV`-*<(7A;%bBpyh9LBc=X`P8fK2L~rZtR?9{~35|`sWuxzk!*C3H7Z>cRYQI z*@vKm=o0!i_BPt8u9Ok$V&PBkbMG`XdbvF-Yr74D$X0 zXa2~}{`tiu`6Ghv%=sgqxXdr63V&0x?D!k~*+BeVXUE^5`EAd;>8mgMsYCqHIy?T( zb(Y`$S})}u{G^YQS>G+_c8b3gn_T|(cRysIo_Fq)_xs^fkH`afuai{zZU#??+ zqmTRz-@EDYH_B|7i|=pHIumma{f!l7J}|lVpP)H2_TRHIzv9NHZEo5Iw0P4*wfT`1OKwg3EF_iFpE74{$1mQh_Gk8ZmQyeyAa1} zMLe+an8qc=16O>kajD{g>zIxQ0&g~40;hb2S_Q|ZhzDXO#x%kv;WAzEz^~Y_*{WkQ z{o;YN&cx;rL z7Cm<&{quuHZPvJUGCwF?^Hth${<~l&g#Jh4dNXi+{Q-?@*t0xuc(0Vh5#Sp7U)l*- zyf1?61lSIJtrlF187pnm$X-yk!Xo2~h++N&G0X;@Hzd23W~-=~DmsoCd)^i0_w*c< zpU2D{7T7Qy-&UY?CZ>_o6Eju2W9JUz%u!kMjK(tM66ri?FA3wB;2#l(jTg@>SWWp+ zqA$@L6`HH+M?5ner8z1L`NL{H56hN6q&X_SL~~SX`pr>ceunr2pNAD^&kd4)$^QyF zoTmbsj*-l!8E*>PxDA=ldsDs{#o{U6u3`f!9&g6yDISkFJmR*!b+|Cn_?Ht|m2@-ZCW4TSG2vCnJtoa}8MYkZUZUjKo{x02rv zI*{LNkG4xPCBMhna2;QM(>fE^LzLeOpS9yTnevvLs5G41TvPT31*(1#wBt8eul!vkBz>T-yAG5W1 ztb^`bTRT(DfD=6?v`)-`tL~*ap+c_5uDOaS*DP}Vj(@lF0nR09a-HZ*B-bM;mFpIJ zW)S&)tCR&K-zx@@?AbvF^{i@@s3D=Q%1d!Q?{&l-CMr;ovwf9&Q; z=%0v(#kS?Y46N)xe+p_;`f5=V7smhVlZ9M;58ukvA2Zwyt$Xy_WTay5QsLSH4*;3M(6T&)1I$K4Nx1e#{nJ= zk$p~fJ-6qZg*^`pavR@j*EePFidm~eH9CC%gUI~R79Ln)mHB^Vzb`~#_(c0xMt5rb z-V6L5`HjZ!5{};wBEBqV_br9@q_2Of7T=}L4GNot=6=TNpQ5!wJ`dhMwZ~$2G?UHo z-c6V{5sKNLi}*};0JT1_!@x&pOU&EtD+9bkGzofB-@l^p!+_&cp?_-42X_1|Z6Aog z8i)9+O(XuEaDhKs>lA-mEV3_|_!IP|9)Cw9|D+m!N~b5gUNQH5jmJkI4-dYj@d)|I z_4y8|&mGJ|UR{UST+5#H)r(zh!)5#!9IZ2LRu}V-r#`Rk)2$>QlQa)S(4Dz@vFo?$ z7=)8~w93Xzb-l#W-)TH<0v_kRq45ZO@;t~cOFkMhV>RVIR2>iHKq&s(x`*m$GgmM1 zRU0nj$Ixh3sCO|Ij#1R4<|I!y@=c9HVHlN?6 zvAIjiN^jPtFx8lSh8)IL*035rOr(c(M$lU|Bfyv!5AT8x)RkwHcIO-A-R*mx#AjD` zFEVBaJ)bpd}aydH|`@}s1H5~VrhjG6DujiES6mq zGlT8s!Tb`68`GRK@{8i%hX9|*wB_bXd+*9n;5&28S!X}8V7Lsl7m40|VRH^wv9KFw zRDAkR#k5w$!pe_Qe_V#q`0@+raHnxtCgj=h$<7R6GE7Bywav_yn!-idn= z+W4$9mA}C3vk>_^*1gewXm9i!+9&Oi_P6l=3Ot8}y^5S+X%{_{VgSIbn6ZZE$L{qP zpF`OW`|K2vFSOo&L-;3~fiT@6d%cwZuksz#(?u}?6;BZPj?a0&4aEmK5d%>3s`kC3 zuwNBij5$Hub_(p%oS--5oS;q8PN4i9Fv|1O6vy==|GX7*efaDk)EiRY48?CLH&+kb zCY%{$_MRl38FWULo*9&vMKgnDT4n~F71LLlh_fNySH3;X4BCYmL270Y@m$BAorqD~ z7HZ`=$1A{pHK7{F2p^vrG(0F~24Th^>M$qbSu`(*<_6KcAetMLcxKS6RsH*O4Axrm z_79ZJv0cb>oLT&MKvlQyD~cTtSi;&?EBeH|m1xZR4Cs!q2e`y{-wjNdJvmnVYs_1F zab&*w@WB1#%DoKbx%3_}UubCbAeUE6^M=M)=M9bE+~e<`FI4so@r$yx6UEOc{;cwY zCjVT1Zix7X`qSExH^F)KHnwZN34?D|ysY`=UCB2uO1`0ZnX3O3eA6~f$ojTE(&>fZ zBjO>)ykquBC+3|(3-6r6dFMO}?~IAbJ5yrtPP>J7dcZfkIM3V`(z+|wye$LsIdiI} z5bwB}x3#M(R=@SaO3gcFJxD@(2>fH7Q#}4bJWbN*WBW0G>vP#J+yy!PvDq)&4*n_P z{L?ldP8OSoc2xpLhe&tudXK}g_p~Y`_B8Zo3;v|{3w|0JeTtuQto(#~eeqw~_-Wo- zc7B?=eIP%zo`U>TGzdTC|Cc*{DoPSRZK+NjKM{?Y;HS>;smD*Ij=}w$R$WCp$cet9 zoQ}%(kd8tuAN5)bLZrv&?sw(m9C=OiR|WLdo)&i`U*0h*J%lTRn7Gk z`QTJjO80HH;%-j(G~D)cthbO;gkJ+amsoFgSms2&%jZPyKcweGo*7ebO^U&19TvS+ z1U@6bi)_BcdJ8p^s3V-@md|3rq?=?t4A&=0-^{h@n>hDytl58)15;t%4t zHt@w>*m2P7z59Np`J#sWpRJlN-j{sQEcqf2d;#2B{GSHR7pP68dfQ!YdBUt&P0SOM zEVi77+j3D0Pkb>ZPh1d#C-z!+q6|ENT2}`=ff+=wr7m#G6NfPuHBPN7*>KO^t9b&o zq=VG=f*;JYO27}2PQed*W6o#AXN7&7A3D38@B;BbQ+A|^c!GE#kYHc?B%hzi^Xa|9 zo*No{iockZzsx%sXZfx11mX|k3A!Iz@fz_C=@iHOM)3ylC-GMu)eocIfbOQ?$|ws8Quh}O}};=NoKZ9fz?XBLl+$#;`u@SWEv zE#3i)w?ghzfbWWUjl^xCh#CL80{5d<_aeWF+PIofJ$&2>=vmSMlU?#1W{35~l+TvB zG~&PN6`KEeeL})|WALAOX0iE?*C$AN6X_#-R=7pzBeNcX_z*aZtB(W^?y4jn1ZJgg zCG-*B?;!OEYox59drD*JqcGwLbFBQrYmW!|KZ-|ErH`&|)%-#FX!5^n{!sd8^C_y2 zE{wq!R((|KQXgIDk}nd;ZLW{*)BKQ3eMEF-Odm-e|NrYFp^r+Tk37&vIFD73L%sW6 zwDa4xXEeX%WQjTXTP44Fp^upX+8Ct)Km64 zwu^vE*b0b~KY_c28@^6{t&p;Z?t>uxB=6If{u1+sVOy0s&`*&e-WRdwdCdoOU&NND zG#{w@BEBJWpeOTu{Z%n^ObdJ*mHTOjj&XBe#45tJtN69JFXG698nfWvTDnUkpC#wM z2%;$!^Yu$5%{`9qnh^F8trz}^v->HOf0D}kB69!3j^~5&{&Va7Cl8(ic-}Y&o_k#4 zdE*fAeDKGq!!yy83OrvdX+D|otYW(4V=Gy$^7rs<`pCaf`Fj-)4t(tc9=rM!whQ@> zTM@UK@SMiCAM!d^-a}6K-XZKS|^Aeg-SJFa$A=rbc1?jOWwUX0Jkx5TP)c&zFMOWyHIF@5H*#lSh`=9S#uinx`C+ujn&|1IV2 z>7E~J&i;y^$k~^cQ2oo-T;u##wwaUjexmVC_7I(u!B|Pce7$)-@5PKeEkW#1(I)Ud zQ?8qcoaZDn--yo(=X1NGIs!Zl=(PoIy2&3VU$`k--TOnbSjgkRVf$WIt`U0~+B0YQ z>3vGR4}~5j@6WN?FL|IgjrqkREt+2_U%yAriza?i`TBOrFO;tbzwr7)!7pv7b16V= z7Wn5R%hz8LgKw<)dJlNTO}_pT*L)K@x4q>N%|FS`*AtBy$uF)Jdn%GX!C>(!!JpPz z0KuR1e!)+Pb1<66taG!iy^U@~p(n>iuns_Ns`pna%Z8aXelxH-o-i123 zTB9=(VBwNF)C$(4PO#Z1@7iiqceSEs5`J|bV!gc))JXQAHnJDBk<2JRnr~De9fO!} z3u+-NXkI<+=sB#aJ74yx1W+eAuorkHzmrb*&9UnhmETPDWh%Za>dW>=wBP&(sjIqd z_Z>iP75|v~&7wx~cy!i`BE#^u!e`!ryJ>yD{b4cstKl!Rpx3A_S!Aq4Z}eRF&E-d_ z2W^oNM10rp#eR6rrCD2cUU~4x`1iUgRA06~k{9RBJ@O~ z;u~e#1=GzXMxshb7m(Rpd7;w%XX3w%WZhbWXFyR`WyW)WcpI{7%M( zl0f&Ss(W!(?tJW5s&kH@6VWxo@`01ZS7*_%X9 zB7X#*7e-wL>M7eI)||OTUI#tA_DkR;aQKy~TuHB!_t6@u9~?bj>4U{q`zkj!UPT{5p2d9N&{`2Uvff8hlzkxV@IDegAGqST>6s7wCcfuby_akI-A6*}%w7(M z^MR*!D10V&KCqxUGxLGV_lrGIO}o?kA(D-^$&Gfrjgm8qt$3T{5^uF>!rL1T@kZ<1 z;%&nFsll6|IWu^><~{d#Q}!5YW89a#=Lv-?abNNldH)~jWflKE=M;z+ z-XB9ZTjSp?(9Le*-}eKH?sT(=e=q%1;W7F5B@<1F^fT<(A>EhU)+1;>nc{^?eiELQ zt*P*A#s`7tz=bdJdQq}B4cMEASFFN0^d5g)*bKfeR*LhLeo4ay1K|eR5zJ=l* z)woAd-349%o0EEZV0WTFwh%tppmwL(dzQGKjq;UbpHf|o$X8Zb?9SLT2>#U=*w;gG zK@}rx1-1$6gV%VLm(cy(|BAW)uCV>l3f%K8@V)0_jc>$bW&d!z{LbU%ddAs{Wpj}HRjH-hh11)JHYWDc>{tL5*{j?>QrTQ<&s9<$ECeQKwwpFW&<>Zp-&jd?I#? z3w04))LZBzhA@c z@9%E4<$Drf-aMb6P&lkQD4fC3(PZUUW%AAKXsMH zbqCo$%QdcjGUqr~%6C6l6xYV~;j{oPu4w@Z&2m3)?Zm5j&3Im>eB{W+EImK15 zJ8Dh8_O}JWy1y$Aj=oErAN=h})7i38#xYc@_9!#4QZ zxqrU#qLJ(;rDNDDkpO1c^rA+%;?qBR5eF!FhrUPn`!&ef`q*~lD`&@?H-qmIb5c4n z3#I|HQZPS-`Xb+ht@Ke1pZ`AbGsSD$#cY@)*4hw_iF8W`eCaZ`c9Pr=?S=N#e?Q-s zxgOWgmHsikPx;&KY&YRw6Mq#U_VeQLDCNk+Oqn?KHmTy*6%X0@bz#*&e!V1TQ<(gf z|CjhR9EV>=VP=&ZeqFd!@nU>_ef|Zt#u>kkLcA*({Cd>Py(XVuiN%>!tUr#h% z_Q^`kmlO|v>mJRQDjr-R`BKKq#C#`SH%jr~lP6wwPRw|)t{JU|ort<2@ZBx4=bvgu zW6i1&@!)fY5)YPfr=5LDhb2E=Msy{z7l#xNmUNGjbf4VuvJkJQQTC&g`sm#IHO?ts zb}*oEuHt1qmUsYcZq$1sK9;yXI%Dy&KgaNi;>F8a9mE6v3>(3;5i!q<=9(p*X=bk} zUidG%zSABrTQBY9m9Xy~wAjn2!7<}yiR+_@wnRDrpO@77=(YbW_LA?`4wUv9z3;^A zH8Ic3Nqw}k*X;3R_xy2ixt%|DE*;1p*GWAf`v*>H{`g`HT@a5yIvnuF7v1WDel_>H z{%3o?c=Cz!2ho;J{rd&+4*C|zYOG$@xz3Fe=6vYl`ibuce0lP2M~CxTS{uoR~EM*TvuiYkx)$ zud?KPr;D5V3gC|kHz1h608J{<#{)|;03z|=+{*0mG zdEr0X@jTl<5YO*R`{!iF^QD8}nf=}!o-Z9Do<~b;P&_HwcqW=sf#>q>Qw7hWA4BCH z0^`>6`t&cL&!`3US;(FBuK6cBo|j%f5YHdS#WT+-^VtrWmd_=F;5pwVo=e=~S>|OI znt0xC!E?M?^c%XVZ%F8@c=H=j`+**K>Xjmzl8R?Z^RxdC;d$p`JDwZ=VIZFWoEXo2 zG^-@jc%C^3o{L=KdFBxDJXK-?y@g4~Gtra^JXat3e@8waS!l=ep6?CB^Jk|3o@We# z=Q5Xgo^cZ5nP~b;!SjjMvyHt;i2DYgWPW3le0NZZr z*}mZx+m?Q~BU1K}yw?5A@$3(G{hvfvB7C1nJ=+XP_sLSvrg}PU{X6LIq<($nJ6iie zTljr7=m#x1rtj~({4Cxd@izJ+_QKw7hrK<)uW?@w+~@wi#(l5s>%UpX2kAbiMaDgt zLAEZ`f_nc}+?_fH{hf=9V$?(aL$Dq-Z@5!=+9G2;UcVH?Jg#XT-2bFz9hS`>*;AHx zV^7_sMzGAYv!`w*?!f$B8+?G+J^p-dxq0{ANLddy0(ZfTH0!}sZ^U>@Z^Rhh8!@v> z_eR8?8@?9!L65m@Zuwr+c~-!-U4j{GwZFfmxSjV*oQ64T)u{iBU|&z+e$R$py6+aV z*g`(c@}%dK`M&aLS=k+**1cK~@}NJYZg_c!?gSLIaIrr>@J1neLB5F|273=_gN0|P z&wnq)Rrno+3HZi5r+7W2mqJD!fp^X#(SQHakP@*Rco_Vad^uz!kpUEEM+ z6^ecYdcT}!HRv55hzVk*Y5#eLbVsq#n`fPG73Y3J<)hl`qiIgx88Z3<}a!r zZTz<8FI7KUVTr#Z=5SK?Td#|uTjJHnwLs4d)^ELzc*o6L^nScD+v4Ba>wgmPidjDz zk5|NeU7}6sm-O^o-z9yU{8ONQRM}feoB#HG#V2z9+f{;3tn;|8%{>ryGykpQ_vxAc zHV-&)GXIU%xt+(gXSK>NC3pUtpgA-1xD2_cq0E0Hd8~SwmA#{EBZ?=+n_o2JdkSAw zL9*}1Ua94*_oeT^t~7|*lORi_uSd{-*YR2E%yDMhZR1PZ{HJLsj~0K zO1e)L`(DY@q2l}cYwh@+am7G<-+YST`}>37+v5`7-#w+^*x%teFAak+_u^h=sIaMi9-XtM02qoW%Fu{E|gR z7=G@spof*OBHwnA@fG;91to>>?MMe8_Ya!p@ILix{2hmzvabvUzB4y;P2S6g3v$BW z9>Yo_KDMEYd@hksnIwDKCx!x7O$wFg`Re%DUvL=S#>Z7=%wD?Yu~ zOY2PA0lo4*>>*EnzWQwS%)omK&HI9vn)6m(vczBF^^R0_YkEthe>l;0rv&C37gO)A zpu2pPk9`1N^4yp;3eZW*J+Ni#qpjYSXor{P3goluuH8j#RjMC-x3{w@!7Od~(&2A2 z*&k)y*Lqp^Pd3Cl+;xRD3H#HPd`*_U`pLI7?j8j0-tuYO1tsp@cWJMdy_X()^#?Z0 zb!g1>n^#QhOw2i)S3J8@*#pV7R|UsHKFII9X${9xf_ zTCc14!8w-r0dnY0?&rx^|LOfPbbG5MHcfL1#k{s#LVoD^!S3g|9~gBNKj_zAcSOzx zPDTF^(U#KqLBG9BlzTZ9;s=U9l5G#nyHfFsum`4=Xt}KHf%%eOoZ187G};3{vB~E6 z_5iIjWwQ%=Aop%9pLIUw#O(n=cjoMY$#;o;#kU8T?Y{C<;cw3scKmJe4#Z!xoSP=` zhdId$V2|E719Hz>|K0=0p)lkcJV9lX!qzQ8z796&T-c#s!q3`}A9g7646EqQHJZgq z_9)q&WQ*pr*QGsXzo*s5K9A_$`LD#ZM}H3c+lf6&>+JYj0DJT_`OFcaz~v)N8`o;L zc6Yc;$e@5$jBak0#==EV18_ff*!9L2cucxq2 zU=e=9{+KvzyGdc>^GH4AzCeFI`=-Q}@UxV!<72?cAa}CRXB(`(gg$o(YgjFPmY7(r zhtEQ@?}V>X-bI)oJlL_YnENGXNjhnLJ}d8{@7}teo`LUK-mfR#WBMt%j16}GPa-_r zG0TpJt1lUdhn6(pVY3T7bi~2K=0WgKeq(CzK%bjTJUm}6=u8G4)ctCdV^_XwJM@A* zJ}CT&t3%l`=qN{VWSIOg;)yoQ~}ph6iZoToCRG~2VK>PI)JuX9y@vAqe>6f zXkB$k$^iS_Xj~SVv6I4>y6PAF`|Di27_!HQ`_SUWPH3H}tDsMOpgk{+jtsnWh3)>% zrI#q|Nqq(S4b(U!)LACo|0s3VmA09Wke?5eUL(4MEUJ|IyEPQ}$JiYd7nxvdSGTbMkncMd++q{{DMg`!%sQl3R7w7|IBe zQg(fnYCNu=VaH==%0N7Nj7?#h^C$3FYO|X>{jdo9t+wKE6Y!gAJkD{5M_M;jJg%6Y zIy@3xnZ)ChCC>4vY^G%SkE;J*bcx0x#gmUr(l}K9<9LZfvfr(-WU|*=V8deute5ad znB(!}_wDgyiW^&F%7_*BTI0$po=dj8+j#Po4lzjUOboj4ACFAa_(QFVyszZM{YOD} zV*4HaZ7GWih^} zInck?A#XvwiskSXOSvyVc=O=y$AmZoCKBZ>X4-J3W5{HS>wE8BhA;3dFRc|=YwJyz zx9HwjHLpnH3;ZK(|4>Z*$Zda<&e(VT!0zY$DuUjIS|Q&S#MH~1fG^4iw?xCwO4f`03B@|k!BVN2yY=sEQKfxd-!78J0^XAI-N z`TOhRWZ`eZ*X{VrEgXnHW;nxNIF0!8xxgQ-b&9{K^82IsL^AOw=uJKTmR^(|{3)L# zS^2c}U(-0Gd|GIN#-YlmGlT56CKRx-h(l}Vua!}-OX`QKa9p=;4OxE&{ z>s$1K#rHiHSmI@O$CQ}{>Xxa;Ptcs1d|KNiu_uy;PVfIrmb{yKvBnwc+tK4R&Xm5* zb13gx(-R-$;k}>qsO1 zE_Z=HTI&>lM=sRzEt&dO(3^VvO_lVg8h=XPw!ofMxdZZj$=@*RrDXjS`NlNcTKOHH zQv7cs{Emw|tJMARlP75$lD-{vuEwF#xA`&jZ8Q80__?b^?7xls8tdTelD=j8(xY#` z5eJL?^)0P)t8eFBpz(;9r<`XJ&%br9Zw1YX^)2ouTAmO8L)1%|{zo^}OIiJf7(PQ4 z#RGM2O7zQ+ZXlnedZK%MtMC>p-fZFx7zvul@ug5zn>aAyk$0!%0YVnRopO}u=EOH0swH5H=J^S3%ThGR`+|{h?H0$~1 zjaT^G?x3D;f4}=QFOz<+y{1py7fW;{wI21brhEN3K{v@s)BrlVZi-xN`zRGm(spN5T>sbWdiR0mvAM|j0A^G(z2SSi*lz*W-Of#=d5%wwNqRBoDr^!AwY?#xr z@&5KHtury_FdlTr85(cNj0Xvt6Wgcu{7dre)3txAvF0=$q;zz$@_(wIWb}C&cRc@> zuW_g3T~PvgSD#^dH`0c^_%#u<&cvPzc{l2BH2!$~Xp-vp1l^gFcT>NhG3cb9MA?r+ z&HpJsyzv~3H=h6dD~&fZ9+@*R{{k5&<($s{weNeh1hOtI`M)e1&a{k+6_2E~0&9ck z|K9p*jW6zh^V+`?&;JQ}6UT$d|F*_)hLZmqCF!?5Cl&cW@>fU(QV*Tdy&XfW4{Nj3 zhqc0=1z-1$`jW;a)rWm@y2hod4;v}vAl2ibJ{fZ>%KNPKVLeiV!&)Q3?mGu1JZ zPEK__PPPrB@ns>cGi9O6`mh?T5 zf32~(7ubBw(AeB1dkD^vGVwFmh{vO|X0Yr|Z<*21SNp;1-rg+gX}dpEW|ZUq)Yo=J zaEwt8|D_~|&-TtY%Dt^vQ_;SQ(!o-_-Rnl#ef3$axEB9!$-+E_ zZ(>eCmY&Bz>j<-vEc7-Z&z7jCpgyNF(t*5fEB1t%O0Uo8?A`g9*ayxxg7b~wd?PsD zF3Q*8{JU_@T{wft_1PNlEL-Ix$4c5q1OwS4&HE5Q1E1e5_7}VUhiElexJ2x;TJ}O! z%Dm96=zX|d&sNOtT<*`NdPq+()kEg9h6wpY*4Xv#Ilv5R8G$!TuUs>ad)Ma}U9@M~ zyV$pJ^sU2U-?TUD-f7>of3^38Sz_M2pgCsBUiG-NS6kC)ujbk0c6^_S)|obf3ww1N(|As%y(;L=oV|K5 zI#~a4di!avK2770?A6JC);Lu5>i9wI)t(I7t0Np@k=B`5bZM_%{dvEB_$1n^L{}#5 z)jN-COlHb|-#J|4kmO zuC&gMKWFiyT#G-IOnofqc8b5`$B!mUKPx`|?D{y__FxO*=)h9%&MZ6r8b2F|zi(LZ z*RP*&wdyCN8q0cMlllq${qUE{e!^=U;*Zu11%Fd>#CcHtc{2M61>K49XU}IRcRro+ z+cJ&6+02f=3I8(?e{g(_dxv3b&0>0G~(|&4)I6phJwE}Mr!1rpgVK;Q+|GY{Mqe4v!)z#OH@9adKgr% z1I_vlj9aenGP!WOS$Dn)ebrk!L|o}O=A{O{e6N?{oPooyRE4_5zu$HCUBQ;@Wu<}c z7ceV}&7po;hC69!&GQGhSj!5z`C zFB)Zh7VPi-Tl~F(<_2;5y|bHUbf_7p)_9qUQ8i^ps!(@qso9_9_if!))oZNt^+uko zVxZxS|GYJr&2Fm*gQjO9pQCqpc=2V!hRqwn?kjvGYegwzAJowvsK?o0Kc8Z-P|3Ay zLunSfU{WEyXYWgh)g7O9*|4tfj$kVbi}0RjCSDd2?`gz)?kRa@?*^MX;_1qLN*el+q?AJiY1E6Ca=va3_JzE1hM85&vhu9)L z_q~!!4Bsrqs=A-)>63J4V|{kv$E+I9zb8n46Kh{8c_z|V*&e+V&%6L@PP?#qeuL3oUf`dX%_>WXR-)5NTSat@Z+rA~zPDVKb72df z`&#s>;%6o<2+ha5lkL$1{A_aB$_sX|HNMBA-vABYoR`anU${BCw)Dwp4%VI>67@i{ z{M(~{!m}dR=CYa#H?j3t{{y^UgxA9guZvb={SUDIp3odVONG|Iiod^szdulTEn9*0 z_w#eh#ku80*I@l{FPHN%d z*$)fP_3l+Xeq~6|O#8hBf4?1n zfA9hiUw;ce&ky?9g?_&Netb_G9-E6j67BfC&c}aWkLPR%E#|+UgWt~$h4DM_*XBQ4 zX8ZEFG=w#QH)}kXWJVy`$@3Op4%ddlQR7%mwBXpakju5v(qnbe@?-VU>SN8(hGQ+b z8wvb*EFZJTXl{~{J>&y`Kl_x-$-_Le&f^8W0i)n(1%4Le$B&;U|0wwVx#18OY~7Se zY+Y&K?0bSFdrB}qMQC-+jwJS zMnpV|VeT9K8^yuJ-#+XskbespX@0HFpP|`nO8PUO5(x{@stWIxoFz{CP+34)h(bYCdz)T?U(2eA}+E!LR!v z!^dUgI|}tiqrZMIt8)U@{VWjZ>&Ci5vCex{$T#Pu;MaX`2LliMJ!rVfEb3ohY(I3}b;NKto`k0zv z;PN+u7nE0pjz@p|!wbr`SAM9oS{EyA;=UsS~PrsluD zW&2BVl&*vxz4HV0?7M>3;`<^j@7t^Xjb>jg^D(ydqIa`?;v-C#O1(=so+^K*_pE$h zyk`<*0PRKm%<^9&b^I6EdDFO#{^br}VBG4!+5Zv@EYGg|^uNUW82d#y0DaF`?v!Bk zQD4|Fx_rKts*30aU~BP8#vYh-bM!vn7ugLfC$k@3G(Y;2(g4lU-MFF>nIdoCsg0Ef z-;>WWvI_&?-Af?f0}p(;GO&7fW#F-!D{0M@e-eD1leNr;vjV;+P8k_}v@|dJFh1v} zc>Z9iytf|nz9cw;=_^Rci2iZ@+BSllL1+QeWmMP=GD~qw$GrqMr z^i1INU>0Ni{dr8i|69fMS>pNURu+9X7qiUjEAsIfVcSuNfymS3FB%8JLIS05OE-g$WLEqLx5 zRYe!I<9(<9D}Sz`p4*1!HU*yv91Ip+5dqyyeC|>4cR%>YVD}>L{ZX-R&Zf%ehJO^A zfBX?23!DSH@WJBiK3`iphvN?O(vVYx9aeJPF~Z?2jzb~4{oXnJ-~IzLEPoK0&VLv3 z9C>pt#}`UIqwgL($mMr!UPT0Temyk`%{2tkp)Rb-Z9*O)X{%F;g{ogd zG-f@(*qA9r!yo0Z^O~NhVQj@k6~jmu;Y^#Jz~9$TYRM(O15-CG!{2iz_2dYBUe@$7 zUf(yRC`UXm(m1P|){SWrdcLUXe8>XGfTkPyzw_Vm+TZjte?6z^L)*X8-^p%S+%&5% z(DX!KxasA-nx+r?YMahKTG4c4-^BewHj#{@b!W-f^u91Y)5FH!Gn3t1Jd@o7*)wBG z{V;!^Y<@WOa^%sw-siHyKYiib;u&|rZrKICoVQQBZpwa=&p$+sMKAY(x;IzR=M>00 zEui10)Zre;EY>kIi?z-q{(zjBIUc$pob{+Lm~~$%>ES$fyyT2S9|V0pGlR2w_Xo;Y z*w@RZcLn+m=;z}ejizk-eHg5DJLLApi_T=(Q(B_X6MdiaXVG)$dGxHU(Qqlvgf-;8 zeLeqK_3p5B{JTM&0cKp?Tt$6$bvVE4^XL5N##-pT8Tj2B`0}I@ z^z_c8nT)#@guE5N%xrlcWVaQf&+~W`v#d~aA6amp_qE@PvpN^gS})gCV2-edRRw(Q z+pFfoha*3*ty8RnUx@k6A5N#wrO)VDaEo_W%)|HU$ z(cYMKwDV5QTkVa@BJ_9S?-6C<-)Y_T|0;fO=km#jfOq+frpA`$&{91e;wD;cQz$tJ-_H42K_lwr$`~=@M z;ez}zydT)W|1r;4<0I!sPoVD`^O@zj5=J_XFY^(756OR{@7%*G1HPV#RXNZp^tU_Z z-#qNrK##UKF?oqVT-o{Ou-*jW|T<|H?P?5dnU+{Bp%Yu8o z`y{^ivS9Dq@2K}|oaBK{Zf8M!7aK1+1Gw1IF8KoV_{l531C%o-! zotJI=CvRC(R^5c(iS@s%yZ;dOa2DwOnYU&^oi`-uXa>D^ z%4ZNyctB&lIA74ap>&?aP(6Dey@&5hdb4cjTMv5uPb~I&aK1Z#E9hxC+W&l6$r#`v zw;#Q0%(LQnn3B)weU#3Z@G!%_;3;o-!GqqnBptP&w@u4F(7U0uMx5`YGk~MU-Qx3W zfQ4EU59i~2eS~+8hZ@kE|HNJ1yrx-?jh6KG^jhf^whpalz{552^VAu4n&-7~N-zA7 zxuAjOf#@LGOK~N8S?jRsahDjfd%0{8oV8 z)`mr1=<~XT(ibSQ(MxBC`ReeY8|C+^Xq{@(%FlOF2d9_#jpG65`!jFFf*S7~^4$EO zw_HAh@J{?TU(n0>ZMLL$KKpZ@A3t${k@508*!(ZvU;6FOQNw0H$bbfU-x{`2kHQ7&r zvu_SQH+&qw51Q=9sjrLk74~C!q$zu`lD`A&N9*%~_)h70klC1@P-Q-|4bSwT7j55b z;<{4K^891!2pE z)(!J~yzb2K$K&Uhe?0B%@gI|JXdhY7W3eHPFu*{xiJ#c}Ckzt3YVU7LI;ToHK{M#= zj1+;cM@#(E+3O4aupzsCQ?L_svX=*mFTZpHl1u-ig%IkPO)wkv+~|>6aS2Bu%{JLzERy_4|oZ3 zyO`wgV%QSUoA^OI3qJwO0iAQhwh}-8yd0@dyos3dDeF4%)%U}VV8Be`<@E~{Lr2H(fVI-S?%92RUI;|a0CC#y!X4Zf$(3M2os%s0tk za|2h63t4y#N6Z+lFXZc2^7WG~>pg7TU9r{=<@xkn#6CD3>bdl}^zR=>mzApDJ1oDy zYx#Yb<@XmYzqeR^--O>E(KFa>`!m=G@8q+Xg@)_^?X7T381ao9{sGuT#$O8>I`Dcpf4!CeorMgR$6q(|*FL;HjlZtrul;y^I)7b**Gpp1N9RfOJ#C>c zke$tWqFK^Me{Gw6&`9+blq4h*xA?S-n?dKPb+RrbF{1dH@ zM<1OZ(MNkw7_*)q(MNwH`sn#F=|NR|4xE=w-zNmvi0{fAisQ>ilT!Y`m`L^ohS;f!D2^KJogSc-pAp(PM>&v6-iCV@y^ex zKb6hHa`gPez}Z361U!!KwgL8anA<)LePnmGl~7!xx>e{NvN;#u@U3d{J#N2Y;!3ic z=sAJIJF5J!nLIhAtH$RPtiAQyB1Sz=$j9j*y*A)1AH&xAN>ye9!;xl%j zKHwl~0+v^8X%nAS*1Ij}$*JafnFi%6

<|4KQUB;P>6ciA{H3nL-i@e#)b(;_bQQ+m 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 CG`3 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

AB=w1VrvBL;rD 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 literal 0 HcmV?d00001 diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp1.ii b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp1.ii new file mode 100644 index 0000000..22b2239 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp1.ii @@ -0,0 +1,23636 @@ +# 1 "CMakeCUDACompilerId.cu" +# 1 "" +# 1 "" +# 1 "/usr/include/stdc-predef.h" 1 3 4 +# 1 "" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 1 +# 61 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +#pragma GCC diagnostic push + + +#pragma GCC diagnostic ignored "-Wunused-function" +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_config.h" 1 +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_config.h" +# 1 "/usr/include/features.h" 1 3 4 +# 438 "/usr/include/features.h" 3 4 +# 1 "/usr/include/sys/cdefs.h" 1 3 4 +# 499 "/usr/include/sys/cdefs.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 500 "/usr/include/sys/cdefs.h" 2 3 4 +# 1 "/usr/include/bits/long-double.h" 1 3 4 +# 501 "/usr/include/sys/cdefs.h" 2 3 4 +# 439 "/usr/include/features.h" 2 3 4 +# 462 "/usr/include/features.h" 3 4 +# 1 "/usr/include/gnu/stubs.h" 1 3 4 + + + + +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 6 "/usr/include/gnu/stubs.h" 2 3 4 +# 14 "/usr/include/gnu/stubs.h" 3 4 +# 1 "/usr/include/gnu/stubs-64-v2.h" 1 3 4 +# 15 "/usr/include/gnu/stubs.h" 2 3 4 +# 463 "/usr/include/features.h" 2 3 4 +# 202 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_config.h" 2 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + + + + + + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 56 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" 1 +# 59 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 60 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" 2 +# 68 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" +enum __attribute__((device_builtin)) cudaRoundMode +{ + cudaRoundNearest, + cudaRoundZero, + cudaRoundPosInf, + cudaRoundMinInf +}; +# 57 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 1 +# 59 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 60 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" 1 +# 65 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 66 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" 2 +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +struct __attribute__((device_builtin)) char1 +{ + signed char x; +}; + +struct __attribute__((device_builtin)) uchar1 +{ + unsigned char x; +}; + + +struct __attribute__((device_builtin)) __attribute__((aligned(2))) char2 +{ + signed char x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(2))) uchar2 +{ + unsigned char x, y; +}; + +struct __attribute__((device_builtin)) char3 +{ + signed char x, y, z; +}; + +struct __attribute__((device_builtin)) uchar3 +{ + unsigned char x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) char4 +{ + signed char x, y, z, w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) uchar4 +{ + unsigned char x, y, z, w; +}; + +struct __attribute__((device_builtin)) short1 +{ + short x; +}; + +struct __attribute__((device_builtin)) ushort1 +{ + unsigned short x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) short2 +{ + short x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) ushort2 +{ + unsigned short x, y; +}; + +struct __attribute__((device_builtin)) short3 +{ + short x, y, z; +}; + +struct __attribute__((device_builtin)) ushort3 +{ + unsigned short x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(8))) short4 { short x; short y; short z; short w; }; +struct __attribute__((device_builtin)) __attribute__((aligned(8))) ushort4 { unsigned short x; unsigned short y; unsigned short z; unsigned short w; }; + +struct __attribute__((device_builtin)) int1 +{ + int x; +}; + +struct __attribute__((device_builtin)) uint1 +{ + unsigned int x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(8))) int2 { int x; int y; }; +struct __attribute__((device_builtin)) __attribute__((aligned(8))) uint2 { unsigned int x; unsigned int y; }; + +struct __attribute__((device_builtin)) int3 +{ + int x, y, z; +}; + +struct __attribute__((device_builtin)) uint3 +{ + unsigned int x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) int4 +{ + int x, y, z, w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) uint4 +{ + unsigned int x, y, z, w; +}; + +struct __attribute__((device_builtin)) long1 +{ + long int x; +}; + +struct __attribute__((device_builtin)) ulong1 +{ + unsigned long x; +}; + + + + + + +struct __attribute__((device_builtin)) __attribute__((aligned(2*sizeof(long int)))) long2 +{ + long int x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(2*sizeof(unsigned long int)))) ulong2 +{ + unsigned long int x, y; +}; + + + +struct __attribute__((device_builtin)) long3 +{ + long int x, y, z; +}; + +struct __attribute__((device_builtin)) ulong3 +{ + unsigned long int x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) long4 +{ + long int x, y, z, w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) ulong4 +{ + unsigned long int x, y, z, w; +}; + +struct __attribute__((device_builtin)) float1 +{ + float x; +}; +# 276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +struct __attribute__((device_builtin)) __attribute__((aligned(8))) float2 { float x; float y; }; + + + + +struct __attribute__((device_builtin)) float3 +{ + float x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) float4 +{ + float x, y, z, w; +}; + +struct __attribute__((device_builtin)) longlong1 +{ + long long int x; +}; + +struct __attribute__((device_builtin)) ulonglong1 +{ + unsigned long long int x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) longlong2 +{ + long long int x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) ulonglong2 +{ + unsigned long long int x, y; +}; + +struct __attribute__((device_builtin)) longlong3 +{ + long long int x, y, z; +}; + +struct __attribute__((device_builtin)) ulonglong3 +{ + unsigned long long int x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) longlong4 +{ + long long int x, y, z ,w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) ulonglong4 +{ + unsigned long long int x, y, z, w; +}; + +struct __attribute__((device_builtin)) double1 +{ + double x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) double2 +{ + double x, y; +}; + +struct __attribute__((device_builtin)) double3 +{ + double x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) double4 +{ + double x, y, z, w; +}; +# 363 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +typedef __attribute__((device_builtin)) struct char1 char1; +typedef __attribute__((device_builtin)) struct uchar1 uchar1; +typedef __attribute__((device_builtin)) struct char2 char2; +typedef __attribute__((device_builtin)) struct uchar2 uchar2; +typedef __attribute__((device_builtin)) struct char3 char3; +typedef __attribute__((device_builtin)) struct uchar3 uchar3; +typedef __attribute__((device_builtin)) struct char4 char4; +typedef __attribute__((device_builtin)) struct uchar4 uchar4; +typedef __attribute__((device_builtin)) struct short1 short1; +typedef __attribute__((device_builtin)) struct ushort1 ushort1; +typedef __attribute__((device_builtin)) struct short2 short2; +typedef __attribute__((device_builtin)) struct ushort2 ushort2; +typedef __attribute__((device_builtin)) struct short3 short3; +typedef __attribute__((device_builtin)) struct ushort3 ushort3; +typedef __attribute__((device_builtin)) struct short4 short4; +typedef __attribute__((device_builtin)) struct ushort4 ushort4; +typedef __attribute__((device_builtin)) struct int1 int1; +typedef __attribute__((device_builtin)) struct uint1 uint1; +typedef __attribute__((device_builtin)) struct int2 int2; +typedef __attribute__((device_builtin)) struct uint2 uint2; +typedef __attribute__((device_builtin)) struct int3 int3; +typedef __attribute__((device_builtin)) struct uint3 uint3; +typedef __attribute__((device_builtin)) struct int4 int4; +typedef __attribute__((device_builtin)) struct uint4 uint4; +typedef __attribute__((device_builtin)) struct long1 long1; +typedef __attribute__((device_builtin)) struct ulong1 ulong1; +typedef __attribute__((device_builtin)) struct long2 long2; +typedef __attribute__((device_builtin)) struct ulong2 ulong2; +typedef __attribute__((device_builtin)) struct long3 long3; +typedef __attribute__((device_builtin)) struct ulong3 ulong3; +typedef __attribute__((device_builtin)) struct long4 long4; +typedef __attribute__((device_builtin)) struct ulong4 ulong4; +typedef __attribute__((device_builtin)) struct float1 float1; +typedef __attribute__((device_builtin)) struct float2 float2; +typedef __attribute__((device_builtin)) struct float3 float3; +typedef __attribute__((device_builtin)) struct float4 float4; +typedef __attribute__((device_builtin)) struct longlong1 longlong1; +typedef __attribute__((device_builtin)) struct ulonglong1 ulonglong1; +typedef __attribute__((device_builtin)) struct longlong2 longlong2; +typedef __attribute__((device_builtin)) struct ulonglong2 ulonglong2; +typedef __attribute__((device_builtin)) struct longlong3 longlong3; +typedef __attribute__((device_builtin)) struct ulonglong3 ulonglong3; +typedef __attribute__((device_builtin)) struct longlong4 longlong4; +typedef __attribute__((device_builtin)) struct ulonglong4 ulonglong4; +typedef __attribute__((device_builtin)) struct double1 double1; +typedef __attribute__((device_builtin)) struct double2 double2; +typedef __attribute__((device_builtin)) struct double3 double3; +typedef __attribute__((device_builtin)) struct double4 double4; + + + + + + + +struct __attribute__((device_builtin)) dim3 +{ + unsigned int x, y, z; + + + __attribute__((host)) __attribute__((device)) constexpr dim3(unsigned int vx = 1, unsigned int vy = 1, unsigned int vz = 1) : x(vx), y(vy), z(vz) {} + __attribute__((host)) __attribute__((device)) constexpr dim3(uint3 v) : x(v.x), y(v.y), z(v.z) {} + __attribute__((host)) __attribute__((device)) constexpr operator uint3(void) const { return uint3{x, y, z}; } + + + + + + +}; + +typedef __attribute__((device_builtin)) struct dim3 dim3; +# 62 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 +# 81 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 1 3 4 +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/syslimits.h" 1 3 4 + + + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 1 3 4 +# 194 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 3 4 +# 1 "/usr/include/limits.h" 1 3 4 +# 26 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 27 "/usr/include/limits.h" 2 3 4 +# 183 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/bits/posix1_lim.h" 1 3 4 +# 27 "/usr/include/bits/posix1_lim.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/bits/posix1_lim.h" 2 3 4 +# 161 "/usr/include/bits/posix1_lim.h" 3 4 +# 1 "/usr/include/bits/local_lim.h" 1 3 4 +# 38 "/usr/include/bits/local_lim.h" 3 4 +# 1 "/usr/include/linux/limits.h" 1 3 4 +# 39 "/usr/include/bits/local_lim.h" 2 3 4 +# 162 "/usr/include/bits/posix1_lim.h" 2 3 4 +# 184 "/usr/include/limits.h" 2 3 4 + + + +# 1 "/usr/include/bits/posix2_lim.h" 1 3 4 +# 188 "/usr/include/limits.h" 2 3 4 + + + +# 1 "/usr/include/bits/xopen_lim.h" 1 3 4 +# 64 "/usr/include/bits/xopen_lim.h" 3 4 +# 1 "/usr/include/bits/uio_lim.h" 1 3 4 +# 65 "/usr/include/bits/xopen_lim.h" 2 3 4 +# 192 "/usr/include/limits.h" 2 3 4 +# 195 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 2 3 4 +# 8 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/syslimits.h" 2 3 4 +# 35 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 2 3 4 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 143 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 + +# 143 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +typedef long int ptrdiff_t; +# 209 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +typedef long unsigned int size_t; +# 415 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +typedef struct { + long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); + long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); +# 426 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +} max_align_t; + + + + + + + typedef decltype(nullptr) nullptr_t; +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 +# 204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + +# 204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +enum __attribute__((device_builtin)) cudaError +{ + + + + + + cudaSuccess = 0, + + + + + + cudaErrorInvalidValue = 1, + + + + + + cudaErrorMemoryAllocation = 2, + + + + + + cudaErrorInitializationError = 3, + + + + + + + cudaErrorCudartUnloading = 4, + + + + + + + cudaErrorProfilerDisabled = 5, + + + + + + + + cudaErrorProfilerNotInitialized = 6, + + + + + + + cudaErrorProfilerAlreadyStarted = 7, + + + + + + + cudaErrorProfilerAlreadyStopped = 8, +# 274 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorInvalidConfiguration = 9, + + + + + + cudaErrorInvalidPitchValue = 12, + + + + + + cudaErrorInvalidSymbol = 13, + + + + + + + + cudaErrorInvalidHostPointer = 16, + + + + + + + + cudaErrorInvalidDevicePointer = 17, + + + + + + cudaErrorInvalidTexture = 18, + + + + + + cudaErrorInvalidTextureBinding = 19, + + + + + + + cudaErrorInvalidChannelDescriptor = 20, + + + + + + cudaErrorInvalidMemcpyDirection = 21, +# 337 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorAddressOfConstant = 22, +# 346 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorTextureFetchFailed = 23, +# 355 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorTextureNotBound = 24, +# 364 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSynchronizationError = 25, + + + + + + cudaErrorInvalidFilterSetting = 26, + + + + + + cudaErrorInvalidNormSetting = 27, + + + + + + + + cudaErrorMixedDeviceExecution = 28, + + + + + + + + cudaErrorNotYetImplemented = 31, +# 401 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorMemoryValueTooLarge = 32, + + + + + + + cudaErrorStubLibrary = 34, + + + + + + + cudaErrorInsufficientDriver = 35, + + + + + + + cudaErrorCallRequiresNewerDriver = 36, + + + + + + cudaErrorInvalidSurface = 37, + + + + + + cudaErrorDuplicateVariableName = 43, + + + + + + cudaErrorDuplicateTextureName = 44, + + + + + + cudaErrorDuplicateSurfaceName = 45, +# 456 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorDevicesUnavailable = 46, +# 469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorIncompatibleDriverContext = 49, + + + + + + cudaErrorMissingConfiguration = 52, +# 484 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorPriorLaunchFailure = 53, + + + + + + + cudaErrorLaunchMaxDepthExceeded = 65, + + + + + + + + cudaErrorLaunchFileScopedTex = 66, + + + + + + + + cudaErrorLaunchFileScopedSurf = 67, +# 522 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSyncDepthExceeded = 68, +# 534 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchPendingCountExceeded = 69, + + + + + + cudaErrorInvalidDeviceFunction = 98, + + + + + + cudaErrorNoDevice = 100, + + + + + + + cudaErrorInvalidDevice = 101, + + + + + cudaErrorDeviceNotLicensed = 102, +# 567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSoftwareValidityNotEstablished = 103, + + + + + cudaErrorStartupFailure = 127, + + + + + cudaErrorInvalidKernelImage = 200, +# 587 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorDeviceUninitialized = 201, + + + + + cudaErrorMapBufferObjectFailed = 205, + + + + + cudaErrorUnmapBufferObjectFailed = 206, + + + + + + cudaErrorArrayIsMapped = 207, + + + + + cudaErrorAlreadyMapped = 208, + + + + + + + + cudaErrorNoKernelImageForDevice = 209, + + + + + cudaErrorAlreadyAcquired = 210, + + + + + cudaErrorNotMapped = 211, + + + + + + cudaErrorNotMappedAsArray = 212, + + + + + + cudaErrorNotMappedAsPointer = 213, + + + + + + cudaErrorECCUncorrectable = 214, + + + + + + cudaErrorUnsupportedLimit = 215, + + + + + + cudaErrorDeviceAlreadyInUse = 216, + + + + + + cudaErrorPeerAccessUnsupported = 217, + + + + + + cudaErrorInvalidPtx = 218, + + + + + cudaErrorInvalidGraphicsContext = 219, + + + + + + cudaErrorNvlinkUncorrectable = 220, + + + + + + + cudaErrorJitCompilerNotFound = 221, + + + + + + + cudaErrorUnsupportedPtxVersion = 222, + + + + + + + cudaErrorJitCompilationDisabled = 223, + + + + + cudaErrorUnsupportedExecAffinity = 224, + + + + + cudaErrorInvalidSource = 300, + + + + + cudaErrorFileNotFound = 301, + + + + + cudaErrorSharedObjectSymbolNotFound = 302, + + + + + cudaErrorSharedObjectInitFailed = 303, + + + + + cudaErrorOperatingSystem = 304, + + + + + + + cudaErrorInvalidResourceHandle = 400, + + + + + + cudaErrorIllegalState = 401, + + + + + + + cudaErrorSymbolNotFound = 500, + + + + + + + + cudaErrorNotReady = 600, + + + + + + + + cudaErrorIllegalAddress = 700, +# 775 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchOutOfResources = 701, +# 786 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchTimeout = 702, + + + + + + cudaErrorLaunchIncompatibleTexturing = 703, + + + + + + + cudaErrorPeerAccessAlreadyEnabled = 704, + + + + + + + cudaErrorPeerAccessNotEnabled = 705, +# 819 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSetOnActiveProcess = 708, + + + + + + + cudaErrorContextIsDestroyed = 709, + + + + + + + cudaErrorAssert = 710, + + + + + + + cudaErrorTooManyPeers = 711, + + + + + + cudaErrorHostMemoryAlreadyRegistered = 712, + + + + + + cudaErrorHostMemoryNotRegistered = 713, +# 861 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorHardwareStackError = 714, + + + + + + + + cudaErrorIllegalInstruction = 715, +# 878 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorMisalignedAddress = 716, +# 889 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorInvalidAddressSpace = 717, + + + + + + + + cudaErrorInvalidPc = 718, +# 908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchFailure = 719, +# 917 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorCooperativeLaunchTooLarge = 720, + + + + + cudaErrorNotPermitted = 800, + + + + + + cudaErrorNotSupported = 801, +# 937 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSystemNotReady = 802, + + + + + + + cudaErrorSystemDriverMismatch = 803, +# 953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorCompatNotSupportedOnDevice = 804, + + + + + cudaErrorMpsConnectionFailed = 805, + + + + + cudaErrorMpsRpcFailure = 806, + + + + + + cudaErrorMpsServerNotReady = 807, + + + + + cudaErrorMpsMaxClientsReached = 808, + + + + + cudaErrorMpsMaxConnectionsReached = 809, + + + + + cudaErrorStreamCaptureUnsupported = 900, + + + + + + cudaErrorStreamCaptureInvalidated = 901, + + + + + + cudaErrorStreamCaptureMerge = 902, + + + + + cudaErrorStreamCaptureUnmatched = 903, + + + + + + cudaErrorStreamCaptureUnjoined = 904, + + + + + + + cudaErrorStreamCaptureIsolation = 905, + + + + + + cudaErrorStreamCaptureImplicit = 906, + + + + + + cudaErrorCapturedEvent = 907, + + + + + + + cudaErrorStreamCaptureWrongThread = 908, + + + + + cudaErrorTimeout = 909, + + + + + + cudaErrorGraphExecUpdateFailure = 910, +# 1054 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorExternalDevice = 911, +# 1067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorUnknown = 999, + + + + + + + + cudaErrorApiFailureBase = 10000 +}; + + + + +enum __attribute__((device_builtin)) cudaChannelFormatKind +{ + cudaChannelFormatKindSigned = 0, + cudaChannelFormatKindUnsigned = 1, + cudaChannelFormatKindFloat = 2, + cudaChannelFormatKindNone = 3, + cudaChannelFormatKindNV12 = 4, + cudaChannelFormatKindUnsignedNormalized8X1 = 5, + cudaChannelFormatKindUnsignedNormalized8X2 = 6, + cudaChannelFormatKindUnsignedNormalized8X4 = 7, + cudaChannelFormatKindUnsignedNormalized16X1 = 8, + cudaChannelFormatKindUnsignedNormalized16X2 = 9, + cudaChannelFormatKindUnsignedNormalized16X4 = 10, + cudaChannelFormatKindSignedNormalized8X1 = 11, + cudaChannelFormatKindSignedNormalized8X2 = 12, + cudaChannelFormatKindSignedNormalized8X4 = 13, + cudaChannelFormatKindSignedNormalized16X1 = 14, + cudaChannelFormatKindSignedNormalized16X2 = 15, + cudaChannelFormatKindSignedNormalized16X4 = 16, + cudaChannelFormatKindUnsignedBlockCompressed1 = 17, + cudaChannelFormatKindUnsignedBlockCompressed1SRGB = 18, + cudaChannelFormatKindUnsignedBlockCompressed2 = 19, + cudaChannelFormatKindUnsignedBlockCompressed2SRGB = 20, + cudaChannelFormatKindUnsignedBlockCompressed3 = 21, + cudaChannelFormatKindUnsignedBlockCompressed3SRGB = 22, + cudaChannelFormatKindUnsignedBlockCompressed4 = 23, + cudaChannelFormatKindSignedBlockCompressed4 = 24, + cudaChannelFormatKindUnsignedBlockCompressed5 = 25, + cudaChannelFormatKindSignedBlockCompressed5 = 26, + cudaChannelFormatKindUnsignedBlockCompressed6H = 27, + cudaChannelFormatKindSignedBlockCompressed6H = 28, + cudaChannelFormatKindUnsignedBlockCompressed7 = 29, + cudaChannelFormatKindUnsignedBlockCompressed7SRGB = 30 +}; + + + + +struct __attribute__((device_builtin)) cudaChannelFormatDesc +{ + int x; + int y; + int z; + int w; + enum cudaChannelFormatKind f; +}; + + + + +typedef struct cudaArray *cudaArray_t; + + + + +typedef const struct cudaArray *cudaArray_const_t; + +struct cudaArray; + + + + +typedef struct cudaMipmappedArray *cudaMipmappedArray_t; + + + + +typedef const struct cudaMipmappedArray *cudaMipmappedArray_const_t; + +struct cudaMipmappedArray; +# 1160 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct __attribute__((device_builtin)) cudaArraySparseProperties { + struct { + unsigned int width; + unsigned int height; + unsigned int depth; + } tileExtent; + unsigned int miptailFirstLevel; + unsigned long long miptailSize; + unsigned int flags; + unsigned int reserved[4]; +}; + + + + + +struct __attribute__((device_builtin)) cudaArrayMemoryRequirements { + size_t size; + size_t alignment; + unsigned int reserved[4]; +}; + + + + + +enum __attribute__((device_builtin)) cudaMemoryType +{ + cudaMemoryTypeUnregistered = 0, + cudaMemoryTypeHost = 1, + cudaMemoryTypeDevice = 2, + cudaMemoryTypeManaged = 3 +}; + + + + +enum __attribute__((device_builtin)) cudaMemcpyKind +{ + cudaMemcpyHostToHost = 0, + cudaMemcpyHostToDevice = 1, + cudaMemcpyDeviceToHost = 2, + cudaMemcpyDeviceToDevice = 3, + cudaMemcpyDefault = 4 +}; + + + + + + +struct __attribute__((device_builtin)) cudaPitchedPtr +{ + void *ptr; + size_t pitch; + size_t xsize; + size_t ysize; +}; + + + + + + +struct __attribute__((device_builtin)) cudaExtent +{ + size_t width; + size_t height; + size_t depth; +}; + + + + + + +struct __attribute__((device_builtin)) cudaPos +{ + size_t x; + size_t y; + size_t z; +}; + + + + +struct __attribute__((device_builtin)) cudaMemcpy3DParms +{ + cudaArray_t srcArray; + struct cudaPos srcPos; + struct cudaPitchedPtr srcPtr; + + cudaArray_t dstArray; + struct cudaPos dstPos; + struct cudaPitchedPtr dstPtr; + + struct cudaExtent extent; + enum cudaMemcpyKind kind; +}; + + + + +struct __attribute__((device_builtin)) cudaMemcpy3DPeerParms +{ + cudaArray_t srcArray; + struct cudaPos srcPos; + struct cudaPitchedPtr srcPtr; + int srcDevice; + + cudaArray_t dstArray; + struct cudaPos dstPos; + struct cudaPitchedPtr dstPtr; + int dstDevice; + + struct cudaExtent extent; +}; + + + + +struct __attribute__((device_builtin)) cudaMemsetParams { + void *dst; + size_t pitch; + unsigned int value; + unsigned int elementSize; + size_t width; + size_t height; +}; + + + + +enum __attribute__((device_builtin)) cudaAccessProperty { + cudaAccessPropertyNormal = 0, + cudaAccessPropertyStreaming = 1, + cudaAccessPropertyPersisting = 2 +}; +# 1310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct __attribute__((device_builtin)) cudaAccessPolicyWindow { + void *base_ptr; + size_t num_bytes; + float hitRatio; + enum cudaAccessProperty hitProp; + enum cudaAccessProperty missProp; +}; +# 1328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef void ( *cudaHostFn_t)(void *userData); + + + + +struct __attribute__((device_builtin)) cudaHostNodeParams { + cudaHostFn_t fn; + void* userData; +}; + + + + +enum __attribute__((device_builtin)) cudaStreamCaptureStatus { + cudaStreamCaptureStatusNone = 0, + cudaStreamCaptureStatusActive = 1, + cudaStreamCaptureStatusInvalidated = 2 + +}; + + + + + +enum __attribute__((device_builtin)) cudaStreamCaptureMode { + cudaStreamCaptureModeGlobal = 0, + cudaStreamCaptureModeThreadLocal = 1, + cudaStreamCaptureModeRelaxed = 2 +}; + +enum __attribute__((device_builtin)) cudaSynchronizationPolicy { + cudaSyncPolicyAuto = 1, + cudaSyncPolicySpin = 2, + cudaSyncPolicyYield = 3, + cudaSyncPolicyBlockingSync = 4 +}; +# 1379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +enum __attribute__((device_builtin)) cudaStreamUpdateCaptureDependenciesFlags { + cudaStreamAddCaptureDependencies = 0x0, + cudaStreamSetCaptureDependencies = 0x1 +}; + + + + +enum __attribute__((device_builtin)) cudaUserObjectFlags { + cudaUserObjectNoDestructorSync = 0x1 +}; + + + + +enum __attribute__((device_builtin)) cudaUserObjectRetainFlags { + cudaGraphUserObjectMove = 0x1 +}; + + + + +struct cudaGraphicsResource; + + + + +enum __attribute__((device_builtin)) cudaGraphicsRegisterFlags +{ + cudaGraphicsRegisterFlagsNone = 0, + cudaGraphicsRegisterFlagsReadOnly = 1, + cudaGraphicsRegisterFlagsWriteDiscard = 2, + cudaGraphicsRegisterFlagsSurfaceLoadStore = 4, + cudaGraphicsRegisterFlagsTextureGather = 8 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphicsMapFlags +{ + cudaGraphicsMapFlagsNone = 0, + cudaGraphicsMapFlagsReadOnly = 1, + cudaGraphicsMapFlagsWriteDiscard = 2 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphicsCubeFace +{ + cudaGraphicsCubeFacePositiveX = 0x00, + cudaGraphicsCubeFaceNegativeX = 0x01, + cudaGraphicsCubeFacePositiveY = 0x02, + cudaGraphicsCubeFaceNegativeY = 0x03, + cudaGraphicsCubeFacePositiveZ = 0x04, + cudaGraphicsCubeFaceNegativeZ = 0x05 +}; + + + + +enum __attribute__((device_builtin)) cudaResourceType +{ + cudaResourceTypeArray = 0x00, + cudaResourceTypeMipmappedArray = 0x01, + cudaResourceTypeLinear = 0x02, + cudaResourceTypePitch2D = 0x03 +}; + + + + +enum __attribute__((device_builtin)) cudaResourceViewFormat +{ + cudaResViewFormatNone = 0x00, + cudaResViewFormatUnsignedChar1 = 0x01, + cudaResViewFormatUnsignedChar2 = 0x02, + cudaResViewFormatUnsignedChar4 = 0x03, + cudaResViewFormatSignedChar1 = 0x04, + cudaResViewFormatSignedChar2 = 0x05, + cudaResViewFormatSignedChar4 = 0x06, + cudaResViewFormatUnsignedShort1 = 0x07, + cudaResViewFormatUnsignedShort2 = 0x08, + cudaResViewFormatUnsignedShort4 = 0x09, + cudaResViewFormatSignedShort1 = 0x0a, + cudaResViewFormatSignedShort2 = 0x0b, + cudaResViewFormatSignedShort4 = 0x0c, + cudaResViewFormatUnsignedInt1 = 0x0d, + cudaResViewFormatUnsignedInt2 = 0x0e, + cudaResViewFormatUnsignedInt4 = 0x0f, + cudaResViewFormatSignedInt1 = 0x10, + cudaResViewFormatSignedInt2 = 0x11, + cudaResViewFormatSignedInt4 = 0x12, + cudaResViewFormatHalf1 = 0x13, + cudaResViewFormatHalf2 = 0x14, + cudaResViewFormatHalf4 = 0x15, + cudaResViewFormatFloat1 = 0x16, + cudaResViewFormatFloat2 = 0x17, + cudaResViewFormatFloat4 = 0x18, + cudaResViewFormatUnsignedBlockCompressed1 = 0x19, + cudaResViewFormatUnsignedBlockCompressed2 = 0x1a, + cudaResViewFormatUnsignedBlockCompressed3 = 0x1b, + cudaResViewFormatUnsignedBlockCompressed4 = 0x1c, + cudaResViewFormatSignedBlockCompressed4 = 0x1d, + cudaResViewFormatUnsignedBlockCompressed5 = 0x1e, + cudaResViewFormatSignedBlockCompressed5 = 0x1f, + cudaResViewFormatUnsignedBlockCompressed6H = 0x20, + cudaResViewFormatSignedBlockCompressed6H = 0x21, + cudaResViewFormatUnsignedBlockCompressed7 = 0x22 +}; + + + + +struct __attribute__((device_builtin)) cudaResourceDesc { + enum cudaResourceType resType; + + union { + struct { + cudaArray_t array; + } array; + struct { + cudaMipmappedArray_t mipmap; + } mipmap; + struct { + void *devPtr; + struct cudaChannelFormatDesc desc; + size_t sizeInBytes; + } linear; + struct { + void *devPtr; + struct cudaChannelFormatDesc desc; + size_t width; + size_t height; + size_t pitchInBytes; + } pitch2D; + } res; +}; + + + + +struct __attribute__((device_builtin)) cudaResourceViewDesc +{ + enum cudaResourceViewFormat format; + size_t width; + size_t height; + size_t depth; + unsigned int firstMipmapLevel; + unsigned int lastMipmapLevel; + unsigned int firstLayer; + unsigned int lastLayer; +}; + + + + +struct __attribute__((device_builtin)) cudaPointerAttributes +{ + + + + + enum cudaMemoryType type; +# 1554 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + int device; + + + + + + void *devicePointer; +# 1569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + void *hostPointer; +}; + + + + +struct __attribute__((device_builtin)) cudaFuncAttributes +{ + + + + + + size_t sharedSizeBytes; + + + + + + size_t constSizeBytes; + + + + + size_t localSizeBytes; + + + + + + + int maxThreadsPerBlock; + + + + + int numRegs; + + + + + + + int ptxVersion; + + + + + + + int binaryVersion; + + + + + + int cacheModeCA; + + + + + + + int maxDynamicSharedSizeBytes; +# 1641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + int preferredShmemCarveout; +# 1691 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +}; + + + + +enum __attribute__((device_builtin)) cudaFuncAttribute +{ + cudaFuncAttributeMaxDynamicSharedMemorySize = 8, + cudaFuncAttributePreferredSharedMemoryCarveout = 9, +# 1708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaFuncAttributeMax +}; + + + + +enum __attribute__((device_builtin)) cudaFuncCache +{ + cudaFuncCachePreferNone = 0, + cudaFuncCachePreferShared = 1, + cudaFuncCachePreferL1 = 2, + cudaFuncCachePreferEqual = 3 +}; + + + + + +enum __attribute__((device_builtin)) cudaSharedMemConfig +{ + cudaSharedMemBankSizeDefault = 0, + cudaSharedMemBankSizeFourByte = 1, + cudaSharedMemBankSizeEightByte = 2 +}; + + + + +enum __attribute__((device_builtin)) cudaSharedCarveout { + cudaSharedmemCarveoutDefault = -1, + cudaSharedmemCarveoutMaxShared = 100, + cudaSharedmemCarveoutMaxL1 = 0 +}; + + + + +enum __attribute__((device_builtin)) cudaComputeMode +{ + cudaComputeModeDefault = 0, + cudaComputeModeExclusive = 1, + cudaComputeModeProhibited = 2, + cudaComputeModeExclusiveProcess = 3 +}; + + + + +enum __attribute__((device_builtin)) cudaLimit +{ + cudaLimitStackSize = 0x00, + cudaLimitPrintfFifoSize = 0x01, + cudaLimitMallocHeapSize = 0x02, + cudaLimitDevRuntimeSyncDepth = 0x03, + cudaLimitDevRuntimePendingLaunchCount = 0x04, + cudaLimitMaxL2FetchGranularity = 0x05, + cudaLimitPersistingL2CacheSize = 0x06 +}; + + + + +enum __attribute__((device_builtin)) cudaMemoryAdvise +{ + cudaMemAdviseSetReadMostly = 1, + cudaMemAdviseUnsetReadMostly = 2, + cudaMemAdviseSetPreferredLocation = 3, + cudaMemAdviseUnsetPreferredLocation = 4, + cudaMemAdviseSetAccessedBy = 5, + cudaMemAdviseUnsetAccessedBy = 6 +}; + + + + +enum __attribute__((device_builtin)) cudaMemRangeAttribute +{ + cudaMemRangeAttributeReadMostly = 1, + cudaMemRangeAttributePreferredLocation = 2, + cudaMemRangeAttributeAccessedBy = 3, + cudaMemRangeAttributeLastPrefetchLocation = 4 +}; + + + + +enum __attribute__((device_builtin)) cudaOutputMode +{ + cudaKeyValuePair = 0x00, + cudaCSV = 0x01 +}; + + + + +enum __attribute__((device_builtin)) cudaFlushGPUDirectRDMAWritesOptions { + cudaFlushGPUDirectRDMAWritesOptionHost = 1<<0, + cudaFlushGPUDirectRDMAWritesOptionMemOps = 1<<1 +}; + + + + +enum __attribute__((device_builtin)) cudaGPUDirectRDMAWritesOrdering { + cudaGPUDirectRDMAWritesOrderingNone = 0, + cudaGPUDirectRDMAWritesOrderingOwner = 100, + cudaGPUDirectRDMAWritesOrderingAllDevices = 200 +}; + + + + +enum __attribute__((device_builtin)) cudaFlushGPUDirectRDMAWritesScope { + cudaFlushGPUDirectRDMAWritesToOwner = 100, + cudaFlushGPUDirectRDMAWritesToAllDevices = 200 +}; + + + + +enum __attribute__((device_builtin)) cudaFlushGPUDirectRDMAWritesTarget { + cudaFlushGPUDirectRDMAWritesTargetCurrentDevice +}; + + + + + +enum __attribute__((device_builtin)) cudaDeviceAttr +{ + cudaDevAttrMaxThreadsPerBlock = 1, + cudaDevAttrMaxBlockDimX = 2, + cudaDevAttrMaxBlockDimY = 3, + cudaDevAttrMaxBlockDimZ = 4, + cudaDevAttrMaxGridDimX = 5, + cudaDevAttrMaxGridDimY = 6, + cudaDevAttrMaxGridDimZ = 7, + cudaDevAttrMaxSharedMemoryPerBlock = 8, + cudaDevAttrTotalConstantMemory = 9, + cudaDevAttrWarpSize = 10, + cudaDevAttrMaxPitch = 11, + cudaDevAttrMaxRegistersPerBlock = 12, + cudaDevAttrClockRate = 13, + cudaDevAttrTextureAlignment = 14, + cudaDevAttrGpuOverlap = 15, + cudaDevAttrMultiProcessorCount = 16, + cudaDevAttrKernelExecTimeout = 17, + cudaDevAttrIntegrated = 18, + cudaDevAttrCanMapHostMemory = 19, + cudaDevAttrComputeMode = 20, + cudaDevAttrMaxTexture1DWidth = 21, + cudaDevAttrMaxTexture2DWidth = 22, + cudaDevAttrMaxTexture2DHeight = 23, + cudaDevAttrMaxTexture3DWidth = 24, + cudaDevAttrMaxTexture3DHeight = 25, + cudaDevAttrMaxTexture3DDepth = 26, + cudaDevAttrMaxTexture2DLayeredWidth = 27, + cudaDevAttrMaxTexture2DLayeredHeight = 28, + cudaDevAttrMaxTexture2DLayeredLayers = 29, + cudaDevAttrSurfaceAlignment = 30, + cudaDevAttrConcurrentKernels = 31, + cudaDevAttrEccEnabled = 32, + cudaDevAttrPciBusId = 33, + cudaDevAttrPciDeviceId = 34, + cudaDevAttrTccDriver = 35, + cudaDevAttrMemoryClockRate = 36, + cudaDevAttrGlobalMemoryBusWidth = 37, + cudaDevAttrL2CacheSize = 38, + cudaDevAttrMaxThreadsPerMultiProcessor = 39, + cudaDevAttrAsyncEngineCount = 40, + cudaDevAttrUnifiedAddressing = 41, + cudaDevAttrMaxTexture1DLayeredWidth = 42, + cudaDevAttrMaxTexture1DLayeredLayers = 43, + cudaDevAttrMaxTexture2DGatherWidth = 45, + cudaDevAttrMaxTexture2DGatherHeight = 46, + cudaDevAttrMaxTexture3DWidthAlt = 47, + cudaDevAttrMaxTexture3DHeightAlt = 48, + cudaDevAttrMaxTexture3DDepthAlt = 49, + cudaDevAttrPciDomainId = 50, + cudaDevAttrTexturePitchAlignment = 51, + cudaDevAttrMaxTextureCubemapWidth = 52, + cudaDevAttrMaxTextureCubemapLayeredWidth = 53, + cudaDevAttrMaxTextureCubemapLayeredLayers = 54, + cudaDevAttrMaxSurface1DWidth = 55, + cudaDevAttrMaxSurface2DWidth = 56, + cudaDevAttrMaxSurface2DHeight = 57, + cudaDevAttrMaxSurface3DWidth = 58, + cudaDevAttrMaxSurface3DHeight = 59, + cudaDevAttrMaxSurface3DDepth = 60, + cudaDevAttrMaxSurface1DLayeredWidth = 61, + cudaDevAttrMaxSurface1DLayeredLayers = 62, + cudaDevAttrMaxSurface2DLayeredWidth = 63, + cudaDevAttrMaxSurface2DLayeredHeight = 64, + cudaDevAttrMaxSurface2DLayeredLayers = 65, + cudaDevAttrMaxSurfaceCubemapWidth = 66, + cudaDevAttrMaxSurfaceCubemapLayeredWidth = 67, + cudaDevAttrMaxSurfaceCubemapLayeredLayers = 68, + cudaDevAttrMaxTexture1DLinearWidth = 69, + cudaDevAttrMaxTexture2DLinearWidth = 70, + cudaDevAttrMaxTexture2DLinearHeight = 71, + cudaDevAttrMaxTexture2DLinearPitch = 72, + cudaDevAttrMaxTexture2DMipmappedWidth = 73, + cudaDevAttrMaxTexture2DMipmappedHeight = 74, + cudaDevAttrComputeCapabilityMajor = 75, + cudaDevAttrComputeCapabilityMinor = 76, + cudaDevAttrMaxTexture1DMipmappedWidth = 77, + cudaDevAttrStreamPrioritiesSupported = 78, + cudaDevAttrGlobalL1CacheSupported = 79, + cudaDevAttrLocalL1CacheSupported = 80, + cudaDevAttrMaxSharedMemoryPerMultiprocessor = 81, + cudaDevAttrMaxRegistersPerMultiprocessor = 82, + cudaDevAttrManagedMemory = 83, + cudaDevAttrIsMultiGpuBoard = 84, + cudaDevAttrMultiGpuBoardGroupID = 85, + cudaDevAttrHostNativeAtomicSupported = 86, + cudaDevAttrSingleToDoublePrecisionPerfRatio = 87, + cudaDevAttrPageableMemoryAccess = 88, + cudaDevAttrConcurrentManagedAccess = 89, + cudaDevAttrComputePreemptionSupported = 90, + cudaDevAttrCanUseHostPointerForRegisteredMem = 91, + cudaDevAttrReserved92 = 92, + cudaDevAttrReserved93 = 93, + cudaDevAttrReserved94 = 94, + cudaDevAttrCooperativeLaunch = 95, + cudaDevAttrCooperativeMultiDeviceLaunch = 96, + cudaDevAttrMaxSharedMemoryPerBlockOptin = 97, + cudaDevAttrCanFlushRemoteWrites = 98, + cudaDevAttrHostRegisterSupported = 99, + cudaDevAttrPageableMemoryAccessUsesHostPageTables = 100, + cudaDevAttrDirectManagedMemAccessFromHost = 101, + cudaDevAttrMaxBlocksPerMultiprocessor = 106, + cudaDevAttrMaxPersistingL2CacheSize = 108, + cudaDevAttrMaxAccessPolicyWindowSize = 109, + cudaDevAttrReservedSharedMemoryPerBlock = 111, + cudaDevAttrSparseCudaArraySupported = 112, + cudaDevAttrHostRegisterReadOnlySupported = 113, + cudaDevAttrTimelineSemaphoreInteropSupported = 114, + cudaDevAttrMaxTimelineSemaphoreInteropSupported = 114, + cudaDevAttrMemoryPoolsSupported = 115, + cudaDevAttrGPUDirectRDMASupported = 116, + cudaDevAttrGPUDirectRDMAFlushWritesOptions = 117, + cudaDevAttrGPUDirectRDMAWritesOrdering = 118, + cudaDevAttrMemoryPoolSupportedHandleTypes = 119, + + + + + cudaDevAttrDeferredMappingCudaArraySupported = 121, + + cudaDevAttrMax +}; + + + + +enum __attribute__((device_builtin)) cudaMemPoolAttr +{ +# 1973 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaMemPoolReuseFollowEventDependencies = 0x1, + + + + + + + cudaMemPoolReuseAllowOpportunistic = 0x2, + + + + + + + + cudaMemPoolReuseAllowInternalDependencies = 0x3, +# 1999 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaMemPoolAttrReleaseThreshold = 0x4, + + + + + + cudaMemPoolAttrReservedMemCurrent = 0x5, + + + + + + + cudaMemPoolAttrReservedMemHigh = 0x6, + + + + + + cudaMemPoolAttrUsedMemCurrent = 0x7, + + + + + + + cudaMemPoolAttrUsedMemHigh = 0x8 +}; + + + + +enum __attribute__((device_builtin)) cudaMemLocationType { + cudaMemLocationTypeInvalid = 0, + cudaMemLocationTypeDevice = 1 +}; + + + + + + +struct __attribute__((device_builtin)) cudaMemLocation { + enum cudaMemLocationType type; + int id; +}; + + + + +enum __attribute__((device_builtin)) cudaMemAccessFlags { + cudaMemAccessFlagsProtNone = 0, + cudaMemAccessFlagsProtRead = 1, + cudaMemAccessFlagsProtReadWrite = 3 +}; + + + + +struct __attribute__((device_builtin)) cudaMemAccessDesc { + struct cudaMemLocation location; + enum cudaMemAccessFlags flags; +}; + + + + +enum __attribute__((device_builtin)) cudaMemAllocationType { + cudaMemAllocationTypeInvalid = 0x0, + + + + cudaMemAllocationTypePinned = 0x1, + cudaMemAllocationTypeMax = 0x7FFFFFFF +}; + + + + +enum __attribute__((device_builtin)) cudaMemAllocationHandleType { + cudaMemHandleTypeNone = 0x0, + cudaMemHandleTypePosixFileDescriptor = 0x1, + cudaMemHandleTypeWin32 = 0x2, + cudaMemHandleTypeWin32Kmt = 0x4 +}; + + + + +struct __attribute__((device_builtin)) cudaMemPoolProps { + enum cudaMemAllocationType allocType; + enum cudaMemAllocationHandleType handleTypes; + struct cudaMemLocation location; + + + + + + + void *win32SecurityAttributes; + unsigned char reserved[64]; +}; + + + + +struct __attribute__((device_builtin)) cudaMemPoolPtrExportData { + unsigned char reserved[64]; +}; + + + + +struct __attribute__((device_builtin)) cudaMemAllocNodeParams { + + + + + struct cudaMemPoolProps poolProps; + const struct cudaMemAccessDesc *accessDescs; + size_t accessDescCount; + size_t bytesize; + void *dptr; +}; + + + + +enum __attribute__((device_builtin)) cudaGraphMemAttributeType { + + + + + cudaGraphMemAttrUsedMemCurrent = 0x0, + + + + + + + cudaGraphMemAttrUsedMemHigh = 0x1, + + + + + + + cudaGraphMemAttrReservedMemCurrent = 0x2, + + + + + + + cudaGraphMemAttrReservedMemHigh = 0x3 +}; + + + + + +enum __attribute__((device_builtin)) cudaDeviceP2PAttr { + cudaDevP2PAttrPerformanceRank = 1, + cudaDevP2PAttrAccessSupported = 2, + cudaDevP2PAttrNativeAtomicSupported = 3, + cudaDevP2PAttrCudaArrayAccessSupported = 4 +}; + + + + + + +struct __attribute__((device_builtin)) CUuuid_st { + char bytes[16]; +}; +typedef __attribute__((device_builtin)) struct CUuuid_st CUuuid; + +typedef __attribute__((device_builtin)) struct CUuuid_st cudaUUID_t; + + + + +struct __attribute__((device_builtin)) cudaDeviceProp +{ + char name[256]; + cudaUUID_t uuid; + char luid[8]; + unsigned int luidDeviceNodeMask; + size_t totalGlobalMem; + size_t sharedMemPerBlock; + int regsPerBlock; + int warpSize; + size_t memPitch; + int maxThreadsPerBlock; + int maxThreadsDim[3]; + int maxGridSize[3]; + int clockRate; + size_t totalConstMem; + int major; + int minor; + size_t textureAlignment; + size_t texturePitchAlignment; + int deviceOverlap; + int multiProcessorCount; + int kernelExecTimeoutEnabled; + int integrated; + int canMapHostMemory; + int computeMode; + int maxTexture1D; + int maxTexture1DMipmap; + int maxTexture1DLinear; + int maxTexture2D[2]; + int maxTexture2DMipmap[2]; + int maxTexture2DLinear[3]; + int maxTexture2DGather[2]; + int maxTexture3D[3]; + int maxTexture3DAlt[3]; + int maxTextureCubemap; + int maxTexture1DLayered[2]; + int maxTexture2DLayered[3]; + int maxTextureCubemapLayered[2]; + int maxSurface1D; + int maxSurface2D[2]; + int maxSurface3D[3]; + int maxSurface1DLayered[2]; + int maxSurface2DLayered[3]; + int maxSurfaceCubemap; + int maxSurfaceCubemapLayered[2]; + size_t surfaceAlignment; + int concurrentKernels; + int ECCEnabled; + int pciBusID; + int pciDeviceID; + int pciDomainID; + int tccDriver; + int asyncEngineCount; + int unifiedAddressing; + int memoryClockRate; + int memoryBusWidth; + int l2CacheSize; + int persistingL2CacheMaxSize; + int maxThreadsPerMultiProcessor; + int streamPrioritiesSupported; + int globalL1CacheSupported; + int localL1CacheSupported; + size_t sharedMemPerMultiprocessor; + int regsPerMultiprocessor; + int managedMemory; + int isMultiGpuBoard; + int multiGpuBoardGroupID; + int hostNativeAtomicSupported; + int singleToDoublePrecisionPerfRatio; + int pageableMemoryAccess; + int concurrentManagedAccess; + int computePreemptionSupported; + int canUseHostPointerForRegisteredMem; + int cooperativeLaunch; + int cooperativeMultiDeviceLaunch; + size_t sharedMemPerBlockOptin; + int pageableMemoryAccessUsesHostPageTables; + int directManagedMemAccessFromHost; + int maxBlocksPerMultiProcessor; + int accessPolicyMaxWindowSize; + size_t reservedSharedMemPerBlock; +}; +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) struct __attribute__((device_builtin)) cudaIpcEventHandle_st +{ + char reserved[64]; +}cudaIpcEventHandle_t; + + + + +typedef __attribute__((device_builtin)) struct __attribute__((device_builtin)) cudaIpcMemHandle_st +{ + char reserved[64]; +}cudaIpcMemHandle_t; + + + + +enum __attribute__((device_builtin)) cudaExternalMemoryHandleType { + + + + cudaExternalMemoryHandleTypeOpaqueFd = 1, + + + + cudaExternalMemoryHandleTypeOpaqueWin32 = 2, + + + + cudaExternalMemoryHandleTypeOpaqueWin32Kmt = 3, + + + + cudaExternalMemoryHandleTypeD3D12Heap = 4, + + + + cudaExternalMemoryHandleTypeD3D12Resource = 5, + + + + cudaExternalMemoryHandleTypeD3D11Resource = 6, + + + + cudaExternalMemoryHandleTypeD3D11ResourceKmt = 7, + + + + cudaExternalMemoryHandleTypeNvSciBuf = 8 +}; +# 2453 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct __attribute__((device_builtin)) cudaExternalMemoryHandleDesc { + + + + enum cudaExternalMemoryHandleType type; + union { + + + + + + int fd; +# 2480 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + struct { + + + + void *handle; + + + + + const void *name; + } win32; + + + + + const void *nvSciBufObject; + } handle; + + + + unsigned long long size; + + + + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalMemoryBufferDesc { + + + + unsigned long long offset; + + + + unsigned long long size; + + + + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalMemoryMipmappedArrayDesc { + + + + + unsigned long long offset; + + + + struct cudaChannelFormatDesc formatDesc; + + + + struct cudaExtent extent; + + + + + unsigned int flags; + + + + unsigned int numLevels; +}; + + + + +enum __attribute__((device_builtin)) cudaExternalSemaphoreHandleType { + + + + cudaExternalSemaphoreHandleTypeOpaqueFd = 1, + + + + cudaExternalSemaphoreHandleTypeOpaqueWin32 = 2, + + + + cudaExternalSemaphoreHandleTypeOpaqueWin32Kmt = 3, + + + + cudaExternalSemaphoreHandleTypeD3D12Fence = 4, + + + + cudaExternalSemaphoreHandleTypeD3D11Fence = 5, + + + + cudaExternalSemaphoreHandleTypeNvSciSync = 6, + + + + cudaExternalSemaphoreHandleTypeKeyedMutex = 7, + + + + cudaExternalSemaphoreHandleTypeKeyedMutexKmt = 8, + + + + cudaExternalSemaphoreHandleTypeTimelineSemaphoreFd = 9, + + + + cudaExternalSemaphoreHandleTypeTimelineSemaphoreWin32 = 10 +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreHandleDesc { + + + + enum cudaExternalSemaphoreHandleType type; + union { + + + + + + + int fd; +# 2630 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + struct { + + + + void *handle; + + + + + const void *name; + } win32; + + + + const void* nvSciSyncObj; + } handle; + + + + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreSignalParams_v1 { + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + } keyedMutex; + } params; +# 2694 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreWaitParams_v1 { + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + + + + unsigned int timeoutMs; + } keyedMutex; + } params; +# 2743 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreSignalParams{ + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + } keyedMutex; + unsigned int reserved[12]; + } params; +# 2789 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; + unsigned int reserved[16]; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreWaitParams { + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + + + + unsigned int timeoutMs; + } keyedMutex; + unsigned int reserved[10]; + } params; +# 2840 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; + unsigned int reserved[16]; +}; +# 2853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) enum cudaError cudaError_t; + + + + +typedef __attribute__((device_builtin)) struct CUstream_st *cudaStream_t; + + + + +typedef __attribute__((device_builtin)) struct CUevent_st *cudaEvent_t; + + + + +typedef __attribute__((device_builtin)) struct cudaGraphicsResource *cudaGraphicsResource_t; + + + + +typedef __attribute__((device_builtin)) enum cudaOutputMode cudaOutputMode_t; + + + + +typedef __attribute__((device_builtin)) struct CUexternalMemory_st *cudaExternalMemory_t; + + + + +typedef __attribute__((device_builtin)) struct CUexternalSemaphore_st *cudaExternalSemaphore_t; + + + + +typedef __attribute__((device_builtin)) struct CUgraph_st *cudaGraph_t; + + + + +typedef __attribute__((device_builtin)) struct CUgraphNode_st *cudaGraphNode_t; + + + + +typedef __attribute__((device_builtin)) struct CUuserObject_st *cudaUserObject_t; + + + + +typedef __attribute__((device_builtin)) struct CUfunc_st *cudaFunction_t; + + + + +typedef __attribute__((device_builtin)) struct CUmemPoolHandle_st *cudaMemPool_t; + + + + +enum __attribute__((device_builtin)) cudaCGScope { + cudaCGScopeInvalid = 0, + cudaCGScopeGrid = 1, + cudaCGScopeMultiGrid = 2 +}; + + + + +struct __attribute__((device_builtin)) cudaLaunchParams +{ + void *func; + dim3 gridDim; + dim3 blockDim; + void **args; + size_t sharedMem; + cudaStream_t stream; +}; + + + + +struct __attribute__((device_builtin)) cudaKernelNodeParams { + void* func; + dim3 gridDim; + dim3 blockDim; + unsigned int sharedMemBytes; + void **kernelParams; + void **extra; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreSignalNodeParams { + cudaExternalSemaphore_t* extSemArray; + const struct cudaExternalSemaphoreSignalParams* paramsArray; + unsigned int numExtSems; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreWaitNodeParams { + cudaExternalSemaphore_t* extSemArray; + const struct cudaExternalSemaphoreWaitParams* paramsArray; + unsigned int numExtSems; +}; + + + + +enum __attribute__((device_builtin)) cudaGraphNodeType { + cudaGraphNodeTypeKernel = 0x00, + cudaGraphNodeTypeMemcpy = 0x01, + cudaGraphNodeTypeMemset = 0x02, + cudaGraphNodeTypeHost = 0x03, + cudaGraphNodeTypeGraph = 0x04, + cudaGraphNodeTypeEmpty = 0x05, + cudaGraphNodeTypeWaitEvent = 0x06, + cudaGraphNodeTypeEventRecord = 0x07, + cudaGraphNodeTypeExtSemaphoreSignal = 0x08, + cudaGraphNodeTypeExtSemaphoreWait = 0x09, + cudaGraphNodeTypeMemAlloc = 0x0a, + cudaGraphNodeTypeMemFree = 0x0b, + cudaGraphNodeTypeCount +}; + + + + +typedef struct CUgraphExec_st* cudaGraphExec_t; + + + + +enum __attribute__((device_builtin)) cudaGraphExecUpdateResult { + cudaGraphExecUpdateSuccess = 0x0, + cudaGraphExecUpdateError = 0x1, + cudaGraphExecUpdateErrorTopologyChanged = 0x2, + cudaGraphExecUpdateErrorNodeTypeChanged = 0x3, + cudaGraphExecUpdateErrorFunctionChanged = 0x4, + cudaGraphExecUpdateErrorParametersChanged = 0x5, + cudaGraphExecUpdateErrorNotSupported = 0x6, + cudaGraphExecUpdateErrorUnsupportedFunctionChange = 0x7, + cudaGraphExecUpdateErrorAttributesChanged = 0x8 +}; + + + + + +enum __attribute__((device_builtin)) cudaGetDriverEntryPointFlags { + cudaEnableDefault = 0x0, + cudaEnableLegacyStream = 0x1, + cudaEnablePerThreadDefaultStream = 0x2 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphDebugDotFlags { + cudaGraphDebugDotFlagsVerbose = 1<<0, + cudaGraphDebugDotFlagsKernelNodeParams = 1<<2, + cudaGraphDebugDotFlagsMemcpyNodeParams = 1<<3, + cudaGraphDebugDotFlagsMemsetNodeParams = 1<<4, + cudaGraphDebugDotFlagsHostNodeParams = 1<<5, + cudaGraphDebugDotFlagsEventNodeParams = 1<<6, + cudaGraphDebugDotFlagsExtSemasSignalNodeParams = 1<<7, + cudaGraphDebugDotFlagsExtSemasWaitNodeParams = 1<<8, + cudaGraphDebugDotFlagsKernelNodeAttributes = 1<<9, + cudaGraphDebugDotFlagsHandles = 1<<10 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphInstantiateFlags { + cudaGraphInstantiateFlagAutoFreeOnLaunch = 1 + + , cudaGraphInstantiateFlagUseNodePriority = 8 + + +}; +# 3126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) enum cudaStreamAttrID { + cudaStreamAttributeAccessPolicyWindow = 1, + cudaStreamAttributeSynchronizationPolicy = 3 +} cudaStreamAttrID; +# 3140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) union cudaStreamAttrValue { + struct cudaAccessPolicyWindow accessPolicyWindow; + enum cudaSynchronizationPolicy syncPolicy; +} cudaStreamAttrValue; +# 3152 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) enum cudaKernelNodeAttrID { + cudaKernelNodeAttributeAccessPolicyWindow = 1 + , cudaKernelNodeAttributeCooperative = 2 + + , cudaKernelNodeAttributePriority = 8 + +} cudaKernelNodeAttrID; +# 3170 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) union cudaKernelNodeAttrValue { + struct cudaAccessPolicyWindow accessPolicyWindow; + int cooperative; + + int priority; + +} cudaKernelNodeAttrValue; +# 60 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" +enum __attribute__((device_builtin)) cudaSurfaceBoundaryMode +{ + cudaBoundaryModeZero = 0, + cudaBoundaryModeClamp = 1, + cudaBoundaryModeTrap = 2 +}; + + + + +enum __attribute__((device_builtin)) cudaSurfaceFormatMode +{ + cudaFormatModeForced = 0, + cudaFormatModeAuto = 1 +}; + + + + +struct __attribute__((device_builtin)) surfaceReference +{ + + + + struct cudaChannelFormatDesc channelDesc; +}; + + + + +typedef __attribute__((device_builtin)) unsigned long long cudaSurfaceObject_t; +# 63 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +enum __attribute__((device_builtin)) cudaTextureAddressMode +{ + cudaAddressModeWrap = 0, + cudaAddressModeClamp = 1, + cudaAddressModeMirror = 2, + cudaAddressModeBorder = 3 +}; + + + + +enum __attribute__((device_builtin)) cudaTextureFilterMode +{ + cudaFilterModePoint = 0, + cudaFilterModeLinear = 1 +}; + + + + +enum __attribute__((device_builtin)) cudaTextureReadMode +{ + cudaReadModeElementType = 0, + cudaReadModeNormalizedFloat = 1 +}; + + + + +struct __attribute__((device_builtin)) textureReference +{ + + + + int normalized; + + + + enum cudaTextureFilterMode filterMode; + + + + enum cudaTextureAddressMode addressMode[3]; + + + + struct cudaChannelFormatDesc channelDesc; + + + + int sRGB; + + + + unsigned int maxAnisotropy; + + + + enum cudaTextureFilterMode mipmapFilterMode; + + + + float mipmapLevelBias; + + + + float minMipmapLevelClamp; + + + + float maxMipmapLevelClamp; + + + + int disableTrilinearOptimization; + int __cudaReserved[14]; +}; + + + + +struct __attribute__((device_builtin)) cudaTextureDesc +{ + + + + enum cudaTextureAddressMode addressMode[3]; + + + + enum cudaTextureFilterMode filterMode; + + + + enum cudaTextureReadMode readMode; + + + + int sRGB; + + + + float borderColor[4]; + + + + int normalizedCoords; + + + + unsigned int maxAnisotropy; + + + + enum cudaTextureFilterMode mipmapFilterMode; + + + + float mipmapLevelBias; + + + + float minMipmapLevelClamp; + + + + float maxMipmapLevelClamp; + + + + int disableTrilinearOptimization; + + + + int seamlessCubemap; +}; + + + + +typedef __attribute__((device_builtin)) unsigned long long cudaTextureObject_t; +# 64 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 +# 92 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/library_types.h" 1 +# 55 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/library_types.h" +typedef enum cudaDataType_t +{ + CUDA_R_16F = 2, + CUDA_C_16F = 6, + CUDA_R_16BF = 14, + CUDA_C_16BF = 15, + CUDA_R_32F = 0, + CUDA_C_32F = 4, + CUDA_R_64F = 1, + CUDA_C_64F = 5, + CUDA_R_4I = 16, + CUDA_C_4I = 17, + CUDA_R_4U = 18, + CUDA_C_4U = 19, + CUDA_R_8I = 3, + CUDA_C_8I = 7, + CUDA_R_8U = 8, + CUDA_C_8U = 9, + CUDA_R_16I = 20, + CUDA_C_16I = 21, + CUDA_R_16U = 22, + CUDA_C_16U = 23, + CUDA_R_32I = 10, + CUDA_C_32I = 11, + CUDA_R_32U = 12, + CUDA_C_32U = 13, + CUDA_R_64I = 24, + CUDA_C_64I = 25, + CUDA_R_64U = 26, + CUDA_C_64U = 27, + + + + +} cudaDataType; + + +typedef enum libraryPropertyType_t +{ + MAJOR_VERSION, + MINOR_VERSION, + PATCH_LEVEL +} libraryPropertyType; +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" 1 +# 61 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 1 +# 147 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 150 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" 1 +# 64 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +extern "C" { + + +struct cudaFuncAttributes; + + +inline __attribute__((device)) cudaError_t cudaMalloc(void **p, size_t s) +{ + return cudaErrorUnknown; +} + +inline __attribute__((device)) cudaError_t cudaFuncGetAttributes(struct cudaFuncAttributes *p, const void *c) +{ + return cudaErrorUnknown; +} + +inline __attribute__((device)) cudaError_t cudaDeviceGetAttribute(int *value, enum cudaDeviceAttr attr, int device) +{ + return cudaErrorUnknown; +} + +inline __attribute__((device)) cudaError_t cudaGetDevice(int *device) +{ + return cudaErrorUnknown; +} + +inline __attribute__((device)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, const void *func, int blockSize, size_t dynamicSmemSize) +{ + return cudaErrorUnknown; +} + +inline __attribute__((device)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, const void *func, int blockSize, size_t dynamicSmemSize, unsigned int flags) +{ + return cudaErrorUnknown; +} + + + +} +# 129 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" 2 + + + + + + +extern "C" +{ +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetAttribute(int *value, enum cudaDeviceAttr attr, int device); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetLimit(size_t *pValue, enum cudaLimit limit); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetCacheConfig(enum cudaFuncCache *pCacheConfig); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetSharedMemConfig(enum cudaSharedMemConfig *pConfig); +extern __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("Use of ""cudaDeviceSynchronize"" from device code is deprecated and will not be supported in a future release. Disable this warning with -D__CDPRT_SUPPRESS_SYNC_DEPRECATION_WARNING."))) cudaError_t cudaDeviceSynchronize(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t __cudaDeviceSynchronizeDeprecationAvoidance(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaGetLastError(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaPeekAtLastError(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) const char* cudaGetErrorString(cudaError_t error); +extern __attribute__((device)) __attribute__((cudart_builtin)) const char* cudaGetErrorName(cudaError_t error); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaGetDeviceCount(int *count); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaGetDevice(int *device); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCreateWithFlags(cudaStream_t *pStream, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamDestroy(cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamWaitEvent_ptsz(cudaStream_t stream, cudaEvent_t event, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventCreateWithFlags(cudaEvent_t *event, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecord_ptsz(cudaEvent_t event, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecordWithFlags_ptsz(cudaEvent_t event, cudaStream_t stream, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventDestroy(cudaEvent_t event); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaFuncGetAttributes(struct cudaFuncAttributes *attr, const void *func); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaFree(void *devPtr); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMalloc(void **devPtr, size_t size); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpyAsync(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpyAsync_ptsz(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy2DAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy2DAsync_ptsz(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy3DAsync(const struct cudaMemcpy3DParms *p, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy3DAsync_ptsz(const struct cudaMemcpy3DParms *p, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemsetAsync(void *devPtr, int value, size_t count, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemsetAsync_ptsz(void *devPtr, int value, size_t count, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset2DAsync(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset2DAsync_ptsz(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset3DAsync(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset3DAsync_ptsz(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaRuntimeGetVersion(int *runtimeVersion); +# 196 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +extern __attribute__((device)) __attribute__((cudart_builtin)) void * cudaGetParameterBuffer(size_t alignment, size_t size); +# 224 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +extern __attribute__((device)) __attribute__((cudart_builtin)) void * cudaGetParameterBufferV2(void *func, dim3 gridDimension, dim3 blockDimension, unsigned int sharedMemSize); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDevice_ptsz(void *func, void *parameterBuffer, dim3 gridDimension, dim3 blockDimension, unsigned int sharedMemSize, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDeviceV2_ptsz(void *parameterBuffer, cudaStream_t stream); +# 244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" + extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDevice(void *func, void *parameterBuffer, dim3 gridDimension, dim3 blockDimension, unsigned int sharedMemSize, cudaStream_t stream); + extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDeviceV2(void *parameterBuffer, cudaStream_t stream); + + +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, const void *func, int blockSize, size_t dynamicSmemSize); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, const void *func, int blockSize, size_t dynamicSmemSize, unsigned int flags); + +extern __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long cudaCGGetIntrinsicHandle(enum cudaCGScope scope); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGSynchronize(unsigned long long handle, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGSynchronizeGrid(unsigned long long handle, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGGetSize(unsigned int *numThreads, unsigned int *numGrids, unsigned long long handle); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGGetRank(unsigned int *threadRank, unsigned int *gridRank, unsigned long long handle); +} + +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMalloc(T **devPtr, size_t size); +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaFuncGetAttributes(struct cudaFuncAttributes *attr, T *entry); +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, T func, int blockSize, size_t dynamicSmemSize); +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, T func, int blockSize, size_t dynamicSmemSize, unsigned int flags); +# 152 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 2 +# 269 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern "C" { +# 309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceReset(void); +# 331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceSynchronize(void); +# 418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetLimit(enum cudaLimit limit, size_t value); +# 453 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetLimit(size_t *pValue, enum cudaLimit limit); +# 476 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetTexture1DLinearMaxWidth(size_t *maxWidthInElements, const struct cudaChannelFormatDesc *fmtDesc, int device); +# 510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetCacheConfig(enum cudaFuncCache *pCacheConfig); +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetStreamPriorityRange(int *leastPriority, int *greatestPriority); +# 591 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetCacheConfig(enum cudaFuncCache cacheConfig); +# 622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetSharedMemConfig(enum cudaSharedMemConfig *pConfig); +# 666 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetSharedMemConfig(enum cudaSharedMemConfig config); +# 693 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetByPCIBusId(int *device, const char *pciBusId); +# 723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetPCIBusId(char *pciBusId, int len, int device); +# 771 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcGetEventHandle(cudaIpcEventHandle_t *handle, cudaEvent_t event); +# 812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcOpenEventHandle(cudaEvent_t *event, cudaIpcEventHandle_t handle); +# 855 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcGetMemHandle(cudaIpcMemHandle_t *handle, void *devPtr); +# 919 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcOpenMemHandle(void **devPtr, cudaIpcMemHandle_t handle, unsigned int flags); +# 955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcCloseMemHandle(void *devPtr); +# 987 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceFlushGPUDirectRDMAWrites(enum cudaFlushGPUDirectRDMAWritesTarget target, enum cudaFlushGPUDirectRDMAWritesScope scope); +# 1031 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadExit(void); +# 1057 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadSynchronize(void); +# 1106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadSetLimit(enum cudaLimit limit, size_t value); +# 1139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadGetLimit(size_t *pValue, enum cudaLimit limit); +# 1175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadGetCacheConfig(enum cudaFuncCache *pCacheConfig); +# 1222 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadSetCacheConfig(enum cudaFuncCache cacheConfig); +# 1285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetLastError(void); +# 1333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaPeekAtLastError(void); +# 1349 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) const char* cudaGetErrorName(cudaError_t error); +# 1365 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) const char* cudaGetErrorString(cudaError_t error); +# 1393 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetDeviceCount(int *count); +# 1666 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetDeviceProperties(struct cudaDeviceProp *prop, int device); +# 1868 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetAttribute(int *value, enum cudaDeviceAttr attr, int device); +# 1886 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetDefaultMemPool(cudaMemPool_t *memPool, int device); +# 1910 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetMemPool(int device, cudaMemPool_t memPool); +# 1930 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetMemPool(cudaMemPool_t *memPool, int device); +# 1978 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetNvSciSyncAttributes(void *nvSciSyncAttrList, int device, int flags); +# 2018 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetP2PAttribute(int *value, enum cudaDeviceP2PAttr attr, int srcDevice, int dstDevice); +# 2039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaChooseDevice(int *device, const struct cudaDeviceProp *prop); +# 2083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSetDevice(int device); +# 2104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetDevice(int *device); +# 2135 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSetValidDevices(int *device_arr, int len); +# 2200 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSetDeviceFlags( unsigned int flags ); +# 2244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetDeviceFlags( unsigned int *flags ); +# 2284 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamCreate(cudaStream_t *pStream); +# 2316 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCreateWithFlags(cudaStream_t *pStream, unsigned int flags); +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCreateWithPriority(cudaStream_t *pStream, unsigned int flags, int priority); +# 2389 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamGetPriority(cudaStream_t hStream, int *priority); +# 2414 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamGetFlags(cudaStream_t hStream, unsigned int *flags); +# 2429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaCtxResetPersistingL2Cache(void); +# 2449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCopyAttributes(cudaStream_t dst, cudaStream_t src); +# 2470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamGetAttribute( + cudaStream_t hStream, cudaStreamAttrID attr, + cudaStreamAttrValue *value_out); +# 2494 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamSetAttribute( + cudaStream_t hStream, cudaStreamAttrID attr, + const cudaStreamAttrValue *value); +# 2528 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamDestroy(cudaStream_t stream); +# 2559 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags = 0); + + + + + + + +typedef void ( *cudaStreamCallback_t)(cudaStream_t stream, cudaError_t status, void *userData); +# 2634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamAddCallback(cudaStream_t stream, + cudaStreamCallback_t callback, void *userData, unsigned int flags); +# 2658 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamSynchronize(cudaStream_t stream); +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamQuery(cudaStream_t stream); +# 2767 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamAttachMemAsync(cudaStream_t stream, void *devPtr, size_t length = 0, unsigned int flags = 0x04); +# 2806 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamBeginCapture(cudaStream_t stream, enum cudaStreamCaptureMode mode); +# 2857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaThreadExchangeStreamCaptureMode(enum cudaStreamCaptureMode *mode); +# 2885 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamEndCapture(cudaStream_t stream, cudaGraph_t *pGraph); +# 2923 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamIsCapturing(cudaStream_t stream, enum cudaStreamCaptureStatus *pCaptureStatus); +# 2955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamGetCaptureInfo(cudaStream_t stream, enum cudaStreamCaptureStatus *pCaptureStatus, unsigned long long *pId); +# 3010 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamGetCaptureInfo_v2(cudaStream_t stream, enum cudaStreamCaptureStatus *captureStatus_out, unsigned long long *id_out = 0, cudaGraph_t *graph_out = 0, const cudaGraphNode_t **dependencies_out = 0, size_t *numDependencies_out = 0); +# 3043 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamUpdateCaptureDependencies(cudaStream_t stream, cudaGraphNode_t *dependencies, size_t numDependencies, unsigned int flags = 0); +# 3080 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventCreate(cudaEvent_t *event); +# 3117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventCreateWithFlags(cudaEvent_t *event, unsigned int flags); +# 3157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream = 0); +# 3204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream = 0, unsigned int flags = 0); +# 3236 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventQuery(cudaEvent_t event); +# 3266 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventSynchronize(cudaEvent_t event); +# 3295 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventDestroy(cudaEvent_t event); +# 3338 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventElapsedTime(float *ms, cudaEvent_t start, cudaEvent_t end); +# 3518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaImportExternalMemory(cudaExternalMemory_t *extMem_out, const struct cudaExternalMemoryHandleDesc *memHandleDesc); +# 3573 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaExternalMemoryGetMappedBuffer(void **devPtr, cudaExternalMemory_t extMem, const struct cudaExternalMemoryBufferDesc *bufferDesc); +# 3635 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaExternalMemoryGetMappedMipmappedArray(cudaMipmappedArray_t *mipmap, cudaExternalMemory_t extMem, const struct cudaExternalMemoryMipmappedArrayDesc *mipmapDesc); +# 3659 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroyExternalMemory(cudaExternalMemory_t extMem); +# 3812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaImportExternalSemaphore(cudaExternalSemaphore_t *extSem_out, const struct cudaExternalSemaphoreHandleDesc *semHandleDesc); +# 3879 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSignalExternalSemaphoresAsync_v2(const cudaExternalSemaphore_t *extSemArray, const struct cudaExternalSemaphoreSignalParams *paramsArray, unsigned int numExtSems, cudaStream_t stream = 0); +# 3955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaWaitExternalSemaphoresAsync_v2(const cudaExternalSemaphore_t *extSemArray, const struct cudaExternalSemaphoreWaitParams *paramsArray, unsigned int numExtSems, cudaStream_t stream = 0); +# 3978 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroyExternalSemaphore(cudaExternalSemaphore_t extSem); +# 4045 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaLaunchKernel(const void *func, dim3 gridDim, dim3 blockDim, void **args, size_t sharedMem, cudaStream_t stream); +# 4106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaLaunchCooperativeKernel(const void *func, dim3 gridDim, dim3 blockDim, void **args, size_t sharedMem, cudaStream_t stream); +# 4207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaLaunchCooperativeKernelMultiDevice(struct cudaLaunchParams *launchParamsList, unsigned int numDevices, unsigned int flags = 0); +# 4254 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFuncSetCacheConfig(const void *func, enum cudaFuncCache cacheConfig); +# 4309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFuncSetSharedMemConfig(const void *func, enum cudaSharedMemConfig config); +# 4342 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaFuncGetAttributes(struct cudaFuncAttributes *attr, const void *func); +# 4379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaFuncSetAttribute(const void *func, enum cudaFuncAttribute attr, int value); +# 4405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaSetDoubleForDevice(double *d); +# 4429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaSetDoubleForHost(double *d); +# 4497 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaLaunchHostFunc(cudaStream_t stream, cudaHostFn_t fn, void *userData); +# 4554 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, const void *func, int blockSize, size_t dynamicSMemSize); +# 4583 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyAvailableDynamicSMemPerBlock(size_t *dynamicSmemSize, const void *func, int numBlocks, int blockSize); +# 4628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, const void *func, int blockSize, size_t dynamicSMemSize, unsigned int flags); +# 4749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMallocManaged(void **devPtr, size_t size, unsigned int flags = 0x01); +# 4782 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMalloc(void **devPtr, size_t size); +# 4815 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocHost(void **ptr, size_t size); +# 4858 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocPitch(void **devPtr, size_t *pitch, size_t width, size_t height); +# 4912 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocArray(cudaArray_t *array, const struct cudaChannelFormatDesc *desc, size_t width, size_t height = 0, unsigned int flags = 0); +# 4950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaFree(void *devPtr); +# 4973 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeHost(void *ptr); +# 4996 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeArray(cudaArray_t array); +# 5019 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray); +# 5085 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostAlloc(void **pHost, size_t size, unsigned int flags); +# 5178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostRegister(void *ptr, size_t size, unsigned int flags); +# 5201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostUnregister(void *ptr); +# 5246 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostGetDevicePointer(void **pDevice, void *pHost, unsigned int flags); +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostGetFlags(unsigned int *pFlags, void *pHost); +# 5307 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMalloc3D(struct cudaPitchedPtr* pitchedDevPtr, struct cudaExtent extent); +# 5454 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMalloc3DArray(cudaArray_t *array, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int flags = 0); +# 5601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocMipmappedArray(cudaMipmappedArray_t *mipmappedArray, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int numLevels, unsigned int flags = 0); +# 5634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetMipmappedArrayLevel(cudaArray_t *levelArray, cudaMipmappedArray_const_t mipmappedArray, unsigned int level); +# 5739 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy3D(const struct cudaMemcpy3DParms *p); +# 5770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy3DPeer(const struct cudaMemcpy3DPeerParms *p); +# 5888 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy3DAsync(const struct cudaMemcpy3DParms *p, cudaStream_t stream = 0); +# 5914 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy3DPeerAsync(const struct cudaMemcpy3DPeerParms *p, cudaStream_t stream = 0); +# 5948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemGetInfo(size_t *free, size_t *total); +# 5974 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaArrayGetInfo(struct cudaChannelFormatDesc *desc, struct cudaExtent *extent, unsigned int *flags, cudaArray_t array); +# 6003 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaArrayGetPlane(cudaArray_t *pPlaneArray, cudaArray_t hArray, unsigned int planeIdx); +# 6027 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaArrayGetMemoryRequirements(struct cudaArrayMemoryRequirements *memoryRequirements, cudaArray_t array, int device); +# 6051 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMipmappedArrayGetMemoryRequirements(struct cudaArrayMemoryRequirements *memoryRequirements, cudaMipmappedArray_t mipmap, int device); +# 6080 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaArrayGetSparseProperties(struct cudaArraySparseProperties *sparseProperties, cudaArray_t array); +# 6110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaMipmappedArrayGetSparseProperties(struct cudaArraySparseProperties *sparseProperties, cudaMipmappedArray_t mipmap); +# 6155 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind); +# 6190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyPeer(void *dst, int dstDevice, const void *src, int srcDevice, size_t count); +# 6239 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2D(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); +# 6289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); +# 6339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DFromArray(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind); +# 6386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, enum cudaMemcpyKind kind = cudaMemcpyDeviceToDevice); +# 6429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyToSymbol(const void *symbol, const void *src, size_t count, size_t offset = 0, enum cudaMemcpyKind kind = cudaMemcpyHostToDevice); +# 6472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyFromSymbol(void *dst, const void *symbol, size_t count, size_t offset = 0, enum cudaMemcpyKind kind = cudaMemcpyDeviceToHost); +# 6529 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpyAsync(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6564 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t count, cudaStream_t stream = 0); +# 6627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy2DAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6685 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6742 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DFromArrayAsync(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6793 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyToSymbolAsync(const void *symbol, const void *src, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6844 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyFromSymbolAsync(void *dst, const void *symbol, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemset(void *devPtr, int value, size_t count); +# 6907 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemset2D(void *devPtr, size_t pitch, int value, size_t width, size_t height); +# 6953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemset3D(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent); +# 6989 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemsetAsync(void *devPtr, int value, size_t count, cudaStream_t stream = 0); +# 7030 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemset2DAsync(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream = 0); +# 7083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemset3DAsync(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream = 0); +# 7111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetSymbolAddress(void **devPtr, const void *symbol); +# 7138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetSymbolSize(size_t *size, const void *symbol); +# 7208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPrefetchAsync(const void *devPtr, size_t count, int dstDevice, cudaStream_t stream = 0); +# 7324 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemAdvise(const void *devPtr, size_t count, enum cudaMemoryAdvise advice, int device); +# 7383 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemRangeGetAttribute(void *data, size_t dataSize, enum cudaMemRangeAttribute attribute, const void *devPtr, size_t count); +# 7422 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemRangeGetAttributes(void **data, size_t *dataSizes, enum cudaMemRangeAttribute *attributes, size_t numAttributes, const void *devPtr, size_t count); +# 7482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind); +# 7524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyFromArray(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind); +# 7567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, enum cudaMemcpyKind kind = cudaMemcpyDeviceToDevice); +# 7618 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 7668 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyFromArrayAsync(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 7737 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocAsync(void **devPtr, size_t size, cudaStream_t hStream); +# 7763 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeAsync(void *devPtr, cudaStream_t hStream); +# 7788 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolTrimTo(cudaMemPool_t memPool, size_t minBytesToKeep); +# 7832 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolSetAttribute(cudaMemPool_t memPool, enum cudaMemPoolAttr attr, void *value ); +# 7880 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolGetAttribute(cudaMemPool_t memPool, enum cudaMemPoolAttr attr, void *value ); +# 7895 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolSetAccess(cudaMemPool_t memPool, const struct cudaMemAccessDesc *descList, size_t count); +# 7908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolGetAccess(enum cudaMemAccessFlags *flags, cudaMemPool_t memPool, struct cudaMemLocation *location); +# 7928 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolCreate(cudaMemPool_t *memPool, const struct cudaMemPoolProps *poolProps); +# 7950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolDestroy(cudaMemPool_t memPool); +# 7986 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocFromPoolAsync(void **ptr, size_t size, cudaMemPool_t memPool, cudaStream_t stream); +# 8011 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolExportToShareableHandle( + void *shareableHandle, + cudaMemPool_t memPool, + enum cudaMemAllocationHandleType handleType, + unsigned int flags); +# 8038 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolImportFromShareableHandle( + cudaMemPool_t *memPool, + void *shareableHandle, + enum cudaMemAllocationHandleType handleType, + unsigned int flags); +# 8061 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolExportPointer(struct cudaMemPoolPtrExportData *exportData, void *ptr); +# 8090 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolImportPointer(void **ptr, cudaMemPool_t memPool, struct cudaMemPoolPtrExportData *exportData); +# 8242 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaPointerGetAttributes(struct cudaPointerAttributes *attributes, const void *ptr); +# 8283 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceCanAccessPeer(int *canAccessPeer, int device, int peerDevice); +# 8325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceEnablePeerAccess(int peerDevice, unsigned int flags); +# 8347 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceDisablePeerAccess(int peerDevice); +# 8411 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsUnregisterResource(cudaGraphicsResource_t resource); +# 8446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsResourceSetMapFlags(cudaGraphicsResource_t resource, unsigned int flags); +# 8485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsMapResources(int count, cudaGraphicsResource_t *resources, cudaStream_t stream = 0); +# 8520 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsUnmapResources(int count, cudaGraphicsResource_t *resources, cudaStream_t stream = 0); +# 8552 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsResourceGetMappedPointer(void **devPtr, size_t *size, cudaGraphicsResource_t resource); +# 8590 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsSubResourceGetMappedArray(cudaArray_t *array, cudaGraphicsResource_t resource, unsigned int arrayIndex, unsigned int mipLevel); +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsResourceGetMappedMipmappedArray(cudaMipmappedArray_t *mipmappedArray, cudaGraphicsResource_t resource); +# 8690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTexture(size_t *offset, const struct textureReference *texref, const void *devPtr, const struct cudaChannelFormatDesc *desc, size_t size = +# 8690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 3 4 + (0x7fffffff * 2U + 1U) +# 8690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + ); +# 8749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTexture2D(size_t *offset, const struct textureReference *texref, const void *devPtr, const struct cudaChannelFormatDesc *desc, size_t width, size_t height, size_t pitch); +# 8787 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTextureToArray(const struct textureReference *texref, cudaArray_const_t array, const struct cudaChannelFormatDesc *desc); +# 8827 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTextureToMipmappedArray(const struct textureReference *texref, cudaMipmappedArray_const_t mipmappedArray, const struct cudaChannelFormatDesc *desc); +# 8853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaUnbindTexture(const struct textureReference *texref); +# 8882 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaGetTextureAlignmentOffset(size_t *offset, const struct textureReference *texref); +# 8912 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaGetTextureReference(const struct textureReference **texref, const void *symbol); +# 8957 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindSurfaceToArray(const struct surfaceReference *surfref, cudaArray_const_t array, const struct cudaChannelFormatDesc *desc); +# 8982 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaGetSurfaceReference(const struct surfaceReference **surfref, const void *symbol); +# 9017 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetChannelDesc(struct cudaChannelFormatDesc *desc, cudaArray_const_t array); +# 9047 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) struct cudaChannelFormatDesc cudaCreateChannelDesc(int x, int y, int z, int w, enum cudaChannelFormatKind f); +# 9271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaCreateTextureObject(cudaTextureObject_t *pTexObject, const struct cudaResourceDesc *pResDesc, const struct cudaTextureDesc *pTexDesc, const struct cudaResourceViewDesc *pResViewDesc); +# 9291 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroyTextureObject(cudaTextureObject_t texObject); +# 9311 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetTextureObjectResourceDesc(struct cudaResourceDesc *pResDesc, cudaTextureObject_t texObject); +# 9331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetTextureObjectTextureDesc(struct cudaTextureDesc *pTexDesc, cudaTextureObject_t texObject); +# 9352 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetTextureObjectResourceViewDesc(struct cudaResourceViewDesc *pResViewDesc, cudaTextureObject_t texObject); +# 9397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaCreateSurfaceObject(cudaSurfaceObject_t *pSurfObject, const struct cudaResourceDesc *pResDesc); +# 9417 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject); +# 9436 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetSurfaceObjectResourceDesc(struct cudaResourceDesc *pResDesc, cudaSurfaceObject_t surfObject); +# 9470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDriverGetVersion(int *driverVersion); +# 9495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaRuntimeGetVersion(int *runtimeVersion); +# 9542 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphCreate(cudaGraph_t *pGraph, unsigned int flags); +# 9639 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddKernelNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaKernelNodeParams *pNodeParams); +# 9672 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeGetParams(cudaGraphNode_t node, struct cudaKernelNodeParams *pNodeParams); +# 9697 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeSetParams(cudaGraphNode_t node, const struct cudaKernelNodeParams *pNodeParams); +# 9717 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeCopyAttributes( + cudaGraphNode_t hSrc, + cudaGraphNode_t hDst); +# 9740 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeGetAttribute( + cudaGraphNode_t hNode, + cudaKernelNodeAttrID attr, + cudaKernelNodeAttrValue *value_out); +# 9764 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeSetAttribute( + cudaGraphNode_t hNode, + cudaKernelNodeAttrID attr, + const cudaKernelNodeAttrValue *value); +# 9814 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaMemcpy3DParms *pCopyParams); +# 9873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeToSymbol( + cudaGraphNode_t *pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t *pDependencies, + size_t numDependencies, + const void* symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 9942 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeFromSymbol( + cudaGraphNode_t* pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t* pDependencies, + size_t numDependencies, + void* dst, + const void* symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 10010 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNode1D( + cudaGraphNode_t *pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t *pDependencies, + size_t numDependencies, + void* dst, + const void* src, + size_t count, + enum cudaMemcpyKind kind); +# 10042 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeGetParams(cudaGraphNode_t node, struct cudaMemcpy3DParms *pNodeParams); +# 10068 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParams(cudaGraphNode_t node, const struct cudaMemcpy3DParms *pNodeParams); +# 10107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsToSymbol( + cudaGraphNode_t node, + const void* symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 10153 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsFromSymbol( + cudaGraphNode_t node, + void* dst, + const void* symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 10199 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParams1D( + cudaGraphNode_t node, + void* dst, + const void* src, + size_t count, + enum cudaMemcpyKind kind); +# 10246 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemsetNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaMemsetParams *pMemsetParams); +# 10269 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemsetNodeGetParams(cudaGraphNode_t node, struct cudaMemsetParams *pNodeParams); +# 10292 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemsetNodeSetParams(cudaGraphNode_t node, const struct cudaMemsetParams *pNodeParams); +# 10333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddHostNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaHostNodeParams *pNodeParams); +# 10356 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphHostNodeGetParams(cudaGraphNode_t node, struct cudaHostNodeParams *pNodeParams); +# 10379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphHostNodeSetParams(cudaGraphNode_t node, const struct cudaHostNodeParams *pNodeParams); +# 10419 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddChildGraphNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, cudaGraph_t childGraph); +# 10446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphChildGraphNodeGetGraph(cudaGraphNode_t node, cudaGraph_t *pGraph); +# 10483 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddEmptyNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies); +# 10526 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddEventRecordNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, cudaEvent_t event); +# 10553 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventRecordNodeGetEvent(cudaGraphNode_t node, cudaEvent_t *event_out); +# 10580 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventRecordNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event); +# 10626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddEventWaitNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, cudaEvent_t event); +# 10653 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventWaitNodeGetEvent(cudaGraphNode_t node, cudaEvent_t *event_out); +# 10680 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventWaitNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event); +# 10729 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddExternalSemaphoresSignalNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaExternalSemaphoreSignalNodeParams *nodeParams); +# 10762 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresSignalNodeGetParams(cudaGraphNode_t hNode, struct cudaExternalSemaphoreSignalNodeParams *params_out); +# 10789 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresSignalNodeSetParams(cudaGraphNode_t hNode, const struct cudaExternalSemaphoreSignalNodeParams *nodeParams); +# 10838 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddExternalSemaphoresWaitNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaExternalSemaphoreWaitNodeParams *nodeParams); +# 10871 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresWaitNodeGetParams(cudaGraphNode_t hNode, struct cudaExternalSemaphoreWaitNodeParams *params_out); +# 10898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresWaitNodeSetParams(cudaGraphNode_t hNode, const struct cudaExternalSemaphoreWaitNodeParams *nodeParams); +# 10975 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemAllocNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, struct cudaMemAllocNodeParams *nodeParams); +# 11002 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemAllocNodeGetParams(cudaGraphNode_t node, struct cudaMemAllocNodeParams *params_out); +# 11062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemFreeNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, void *dptr); +# 11086 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemFreeNodeGetParams(cudaGraphNode_t node, void *dptr_out); +# 11114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGraphMemTrim(int device); +# 11151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetGraphMemAttribute(int device, enum cudaGraphMemAttributeType attr, void* value); +# 11185 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetGraphMemAttribute(int device, enum cudaGraphMemAttributeType attr, void* value); +# 11213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphClone(cudaGraph_t *pGraphClone, cudaGraph_t originalGraph); +# 11241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeFindInClone(cudaGraphNode_t *pNode, cudaGraphNode_t originalNode, cudaGraph_t clonedGraph); +# 11272 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetType(cudaGraphNode_t node, enum cudaGraphNodeType *pType); +# 11303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphGetNodes(cudaGraph_t graph, cudaGraphNode_t *nodes, size_t *numNodes); +# 11334 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphGetRootNodes(cudaGraph_t graph, cudaGraphNode_t *pRootNodes, size_t *pNumRootNodes); +# 11368 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphGetEdges(cudaGraph_t graph, cudaGraphNode_t *from, cudaGraphNode_t *to, size_t *numEdges); +# 11399 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetDependencies(cudaGraphNode_t node, cudaGraphNode_t *pDependencies, size_t *pNumDependencies); +# 11431 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetDependentNodes(cudaGraphNode_t node, cudaGraphNode_t *pDependentNodes, size_t *pNumDependentNodes); +# 11462 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddDependencies(cudaGraph_t graph, const cudaGraphNode_t *from, const cudaGraphNode_t *to, size_t numDependencies); +# 11493 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphRemoveDependencies(cudaGraph_t graph, const cudaGraphNode_t *from, const cudaGraphNode_t *to, size_t numDependencies); +# 11523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphDestroyNode(cudaGraphNode_t node); +# 11561 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphInstantiate(cudaGraphExec_t *pGraphExec, cudaGraph_t graph, cudaGraphNode_t *pErrorNode, char *pLogBuffer, size_t bufferSize); +# 11611 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphInstantiateWithFlags(cudaGraphExec_t *pGraphExec, cudaGraph_t graph, unsigned long long flags); +# 11655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecKernelNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaKernelNodeParams *pNodeParams); +# 11705 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaMemcpy3DParms *pNodeParams); +# 11760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsToSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + const void* symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 11823 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsFromSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + void* dst, + const void* symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 11884 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParams1D( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + void* dst, + const void* src, + size_t count, + enum cudaMemcpyKind kind); +# 11938 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecMemsetNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaMemsetParams *pNodeParams); +# 11977 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecHostNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaHostNodeParams *pNodeParams); +# 12023 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecChildGraphNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, cudaGraph_t childGraph); +# 12067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecEventRecordNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event); +# 12111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecEventWaitNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event); +# 12158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecExternalSemaphoresSignalNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const struct cudaExternalSemaphoreSignalNodeParams *nodeParams); +# 12205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecExternalSemaphoresWaitNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const struct cudaExternalSemaphoreWaitNodeParams *nodeParams); +# 12284 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeSetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int isEnabled); +# 12351 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int *isEnabled); +# 12510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecUpdate(cudaGraphExec_t hGraphExec, cudaGraph_t hGraph, cudaGraphNode_t *hErrorNode_out, enum cudaGraphExecUpdateResult *updateResult_out); +# 12535 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphUpload(cudaGraphExec_t graphExec, cudaStream_t stream); +# 12566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphLaunch(cudaGraphExec_t graphExec, cudaStream_t stream); +# 12589 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecDestroy(cudaGraphExec_t graphExec); +# 12610 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphDestroy(cudaGraph_t graph); +# 12629 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphDebugDotPrint(cudaGraph_t graph, const char *path, unsigned int flags); +# 12665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaUserObjectCreate(cudaUserObject_t *object_out, void *ptr, cudaHostFn_t destroy, unsigned int initialRefcount, unsigned int flags); +# 12689 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaUserObjectRetain(cudaUserObject_t object, unsigned int count = 1); +# 12717 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaUserObjectRelease(cudaUserObject_t object, unsigned int count = 1); +# 12745 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphRetainUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count = 1, unsigned int flags = 0); +# 12770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphReleaseUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count = 1); +# 12836 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetDriverEntryPoint(const char *symbol, void **funcPtr, unsigned long long flags); + + + + +extern __attribute__((host)) cudaError_t cudaGetExportTable(const void **ppExportTable, const cudaUUID_t *pExportTableId); +# 13017 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetFuncBySymbol(cudaFunction_t* functionPtr, const void* symbolPtr); +# 13175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +} +# 62 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" 2 +# 124 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +template __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(0, 0, 0, 0, cudaChannelFormatKindNone); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf1(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf2(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf4(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(char) * 8; + + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); + + + +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +} +# 396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescNV12(void) +{ + int e = (int)sizeof(char) * 8; + + return cudaCreateChannelDesc(e, e, e, 0, cudaChannelFormatKindNV12); +} + +template __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(0, 0, 0, 0, cudaChannelFormatKindNone); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindSignedNormalized8X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindSignedNormalized8X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindSignedNormalized8X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindUnsignedNormalized8X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindUnsignedNormalized8X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedNormalized8X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 0, 0, 0, cudaChannelFormatKindSignedNormalized16X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 0, 0, cudaChannelFormatKindSignedNormalized16X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 16, cudaChannelFormatKindSignedNormalized16X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 0, 0, 0, cudaChannelFormatKindUnsignedNormalized16X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 0, 0, cudaChannelFormatKindUnsignedNormalized16X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 16, cudaChannelFormatKindUnsignedNormalized16X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 0, cudaChannelFormatKindNV12); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed1); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed1SRGB); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed2); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed2SRGB); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed3); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed3SRGB); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindUnsignedBlockCompressed4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindSignedBlockCompressed4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindUnsignedBlockCompressed5); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindSignedBlockCompressed5); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 0, cudaChannelFormatKindUnsignedBlockCompressed6H); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 0, cudaChannelFormatKindSignedBlockCompressed6H); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed7); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed7SRGB); +} +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" 1 +# 53 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 54 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 55 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" 2 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static __inline__ __attribute__((host)) struct cudaPitchedPtr make_cudaPitchedPtr(void *d, size_t p, size_t xsz, size_t ysz) +{ + struct cudaPitchedPtr s; + + s.ptr = d; + s.pitch = p; + s.xsize = xsz; + s.ysize = ysz; + + return s; +} +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static __inline__ __attribute__((host)) struct cudaPos make_cudaPos(size_t x, size_t y, size_t z) +{ + struct cudaPos p; + + p.x = x; + p.y = y; + p.z = z; + + return p; +} +# 132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static __inline__ __attribute__((host)) struct cudaExtent make_cudaExtent(size_t w, size_t h, size_t d) +{ + struct cudaExtent e; + + e.width = w; + e.height = h; + e.depth = d; + + return e; +} +# 98 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.h" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.h" +static __inline__ __attribute__((host)) __attribute__((device)) char1 make_char1(signed char x); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar1 make_uchar1(unsigned char x); + +static __inline__ __attribute__((host)) __attribute__((device)) char2 make_char2(signed char x, signed char y); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar2 make_uchar2(unsigned char x, unsigned char y); + +static __inline__ __attribute__((host)) __attribute__((device)) char3 make_char3(signed char x, signed char y, signed char z); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar3 make_uchar3(unsigned char x, unsigned char y, unsigned char z); + +static __inline__ __attribute__((host)) __attribute__((device)) char4 make_char4(signed char x, signed char y, signed char z, signed char w); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar4 make_uchar4(unsigned char x, unsigned char y, unsigned char z, unsigned char w); + +static __inline__ __attribute__((host)) __attribute__((device)) short1 make_short1(short x); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort1 make_ushort1(unsigned short x); + +static __inline__ __attribute__((host)) __attribute__((device)) short2 make_short2(short x, short y); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort2 make_ushort2(unsigned short x, unsigned short y); + +static __inline__ __attribute__((host)) __attribute__((device)) short3 make_short3(short x,short y, short z); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort3 make_ushort3(unsigned short x, unsigned short y, unsigned short z); + +static __inline__ __attribute__((host)) __attribute__((device)) short4 make_short4(short x, short y, short z, short w); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort4 make_ushort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w); + +static __inline__ __attribute__((host)) __attribute__((device)) int1 make_int1(int x); + +static __inline__ __attribute__((host)) __attribute__((device)) uint1 make_uint1(unsigned int x); + +static __inline__ __attribute__((host)) __attribute__((device)) int2 make_int2(int x, int y); + +static __inline__ __attribute__((host)) __attribute__((device)) uint2 make_uint2(unsigned int x, unsigned int y); + +static __inline__ __attribute__((host)) __attribute__((device)) int3 make_int3(int x, int y, int z); + +static __inline__ __attribute__((host)) __attribute__((device)) uint3 make_uint3(unsigned int x, unsigned int y, unsigned int z); + +static __inline__ __attribute__((host)) __attribute__((device)) int4 make_int4(int x, int y, int z, int w); + +static __inline__ __attribute__((host)) __attribute__((device)) uint4 make_uint4(unsigned int x, unsigned int y, unsigned int z, unsigned int w); + +static __inline__ __attribute__((host)) __attribute__((device)) long1 make_long1(long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong1 make_ulong1(unsigned long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) long2 make_long2(long int x, long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong2 make_ulong2(unsigned long int x, unsigned long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) long3 make_long3(long int x, long int y, long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong3 make_ulong3(unsigned long int x, unsigned long int y, unsigned long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) long4 make_long4(long int x, long int y, long int z, long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong4 make_ulong4(unsigned long int x, unsigned long int y, unsigned long int z, unsigned long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) float1 make_float1(float x); + +static __inline__ __attribute__((host)) __attribute__((device)) float2 make_float2(float x, float y); + +static __inline__ __attribute__((host)) __attribute__((device)) float3 make_float3(float x, float y, float z); + +static __inline__ __attribute__((host)) __attribute__((device)) float4 make_float4(float x, float y, float z, float w); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong1 make_longlong1(long long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong1 make_ulonglong1(unsigned long long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong2 make_longlong2(long long int x, long long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong2 make_ulonglong2(unsigned long long int x, unsigned long long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong3 make_longlong3(long long int x, long long int y, long long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong3 make_ulonglong3(unsigned long long int x, unsigned long long int y, unsigned long long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong4 make_longlong4(long long int x, long long int y, long long int z, long long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong4 make_ulonglong4(unsigned long long int x, unsigned long long int y, unsigned long long int z, unsigned long long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) double1 make_double1(double x); + +static __inline__ __attribute__((host)) __attribute__((device)) double2 make_double2(double x, double y); + +static __inline__ __attribute__((host)) __attribute__((device)) double3 make_double3(double x, double y, double z); + +static __inline__ __attribute__((host)) __attribute__((device)) double4 make_double4(double x, double y, double z, double w); + + + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.hpp" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.hpp" +static __inline__ __attribute__((host)) __attribute__((device)) char1 make_char1(signed char x) +{ + char1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar1 make_uchar1(unsigned char x) +{ + uchar1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) char2 make_char2(signed char x, signed char y) +{ + char2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar2 make_uchar2(unsigned char x, unsigned char y) +{ + uchar2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) char3 make_char3(signed char x, signed char y, signed char z) +{ + char3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar3 make_uchar3(unsigned char x, unsigned char y, unsigned char z) +{ + uchar3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) char4 make_char4(signed char x, signed char y, signed char z, signed char w) +{ + char4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar4 make_uchar4(unsigned char x, unsigned char y, unsigned char z, unsigned char w) +{ + uchar4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short1 make_short1(short x) +{ + short1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort1 make_ushort1(unsigned short x) +{ + ushort1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short2 make_short2(short x, short y) +{ + short2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort2 make_ushort2(unsigned short x, unsigned short y) +{ + ushort2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short3 make_short3(short x,short y, short z) +{ + short3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort3 make_ushort3(unsigned short x, unsigned short y, unsigned short z) +{ + ushort3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short4 make_short4(short x, short y, short z, short w) +{ + short4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort4 make_ushort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w) +{ + ushort4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int1 make_int1(int x) +{ + int1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint1 make_uint1(unsigned int x) +{ + uint1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int2 make_int2(int x, int y) +{ + int2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint2 make_uint2(unsigned int x, unsigned int y) +{ + uint2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int3 make_int3(int x, int y, int z) +{ + int3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint3 make_uint3(unsigned int x, unsigned int y, unsigned int z) +{ + uint3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int4 make_int4(int x, int y, int z, int w) +{ + int4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint4 make_uint4(unsigned int x, unsigned int y, unsigned int z, unsigned int w) +{ + uint4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long1 make_long1(long int x) +{ + long1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong1 make_ulong1(unsigned long int x) +{ + ulong1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long2 make_long2(long int x, long int y) +{ + long2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong2 make_ulong2(unsigned long int x, unsigned long int y) +{ + ulong2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long3 make_long3(long int x, long int y, long int z) +{ + long3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong3 make_ulong3(unsigned long int x, unsigned long int y, unsigned long int z) +{ + ulong3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long4 make_long4(long int x, long int y, long int z, long int w) +{ + long4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong4 make_ulong4(unsigned long int x, unsigned long int y, unsigned long int z, unsigned long int w) +{ + ulong4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float1 make_float1(float x) +{ + float1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float2 make_float2(float x, float y) +{ + float2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float3 make_float3(float x, float y, float z) +{ + float3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float4 make_float4(float x, float y, float z, float w) +{ + float4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong1 make_longlong1(long long int x) +{ + longlong1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong1 make_ulonglong1(unsigned long long int x) +{ + ulonglong1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong2 make_longlong2(long long int x, long long int y) +{ + longlong2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong2 make_ulonglong2(unsigned long long int x, unsigned long long int y) +{ + ulonglong2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong3 make_longlong3(long long int x, long long int y, long long int z) +{ + longlong3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong3 make_ulonglong3(unsigned long long int x, unsigned long long int y, unsigned long long int z) +{ + ulonglong3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong4 make_longlong4(long long int x, long long int y, long long int z, long long int w) +{ + longlong4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong4 make_ulonglong4(unsigned long long int x, unsigned long long int y, unsigned long long int z, unsigned long long int w) +{ + ulonglong4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double1 make_double1(double x) +{ + double1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double2 make_double2(double x, double y) +{ + double2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double3 make_double3(double x, double y, double z) +{ + double3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double4 make_double4(double x, double y, double z, double w) +{ + double4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} +# 173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.h" 2 +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 1 +# 71 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 72 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 85 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +# 1 "/usr/include/string.h" 1 3 4 +# 26 "/usr/include/string.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 27 "/usr/include/string.h" 2 3 4 + + +# 28 "/usr/include/string.h" 3 4 +extern "C" { + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 34 "/usr/include/string.h" 2 3 4 +# 43 "/usr/include/string.h" 3 4 +extern void *memcpy (void *__restrict __dest, const void *__restrict __src, + size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memmove (void *__dest, const void *__src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern void *memccpy (void *__restrict __dest, const void *__restrict __src, + int __c, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + +extern int memcmp (const void *__s1, const void *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern "C++" +{ +extern void *memchr (void *__s, int __c, size_t __n) + throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const void *memchr (const void *__s, int __c, size_t __n) + throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 89 "/usr/include/string.h" 3 4 +} +# 99 "/usr/include/string.h" 3 4 +extern "C++" void *rawmemchr (void *__s, int __c) + throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const void *rawmemchr (const void *__s, int __c) + throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern "C++" void *memrchr (void *__s, int __c, size_t __n) + throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) + throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 122 "/usr/include/string.h" 3 4 +extern char *strcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strcat (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncat (char *__restrict __dest, const char *__restrict __src, + size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int strncmp (const char *__s1, const char *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcoll (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern size_t strxfrm (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (2))); + + + +# 1 "/usr/include/bits/types/locale_t.h" 1 3 4 +# 22 "/usr/include/bits/types/locale_t.h" 3 4 +# 1 "/usr/include/bits/types/__locale_t.h" 1 3 4 +# 28 "/usr/include/bits/types/__locale_t.h" 3 4 +struct __locale_struct +{ + + struct __locale_data *__locales[13]; + + + const unsigned short int *__ctype_b; + const int *__ctype_tolower; + const int *__ctype_toupper; + + + const char *__names[13]; +}; + +typedef struct __locale_struct *__locale_t; +# 23 "/usr/include/bits/types/locale_t.h" 2 3 4 + +typedef __locale_t locale_t; +# 154 "/usr/include/string.h" 2 3 4 + + +extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + +extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, + locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); + + + + + +extern char *strdup (const char *__s) + throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *strndup (const char *__string, size_t __n) + throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +# 204 "/usr/include/string.h" 3 4 +extern "C++" +{ +extern char *strchr (char *__s, int __c) + throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *strchr (const char *__s, int __c) + throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 224 "/usr/include/string.h" 3 4 +} + + + + + + +extern "C++" +{ +extern char *strrchr (char *__s, int __c) + throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *strrchr (const char *__s, int __c) + throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 251 "/usr/include/string.h" 3 4 +} +# 261 "/usr/include/string.h" 3 4 +extern "C++" char *strchrnul (char *__s, int __c) + throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const char *strchrnul (const char *__s, int __c) + throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 273 "/usr/include/string.h" 3 4 +extern size_t strcspn (const char *__s, const char *__reject) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern size_t strspn (const char *__s, const char *__accept) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern "C++" +{ +extern char *strpbrk (char *__s, const char *__accept) + throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern const char *strpbrk (const char *__s, const char *__accept) + throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 301 "/usr/include/string.h" 3 4 +} + + + + + + +extern "C++" +{ +extern char *strstr (char *__haystack, const char *__needle) + throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern const char *strstr (const char *__haystack, const char *__needle) + throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 328 "/usr/include/string.h" 3 4 +} + + + + + + + +extern char *strtok (char *__restrict __s, const char *__restrict __delim) + throw () __attribute__ ((__nonnull__ (2))); + + + +extern char *__strtok_r (char *__restrict __s, + const char *__restrict __delim, + char **__restrict __save_ptr) + throw () __attribute__ ((__nonnull__ (2, 3))); + +extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, + char **__restrict __save_ptr) + throw () __attribute__ ((__nonnull__ (2, 3))); + + + + + +extern "C++" char *strcasestr (char *__haystack, const char *__needle) + throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern "C++" const char *strcasestr (const char *__haystack, + const char *__needle) + throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 369 "/usr/include/string.h" 3 4 +extern void *memmem (const void *__haystack, size_t __haystacklen, + const void *__needle, size_t __needlelen) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); + + + +extern void *__mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern void *mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern size_t strlen (const char *__s) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + +extern size_t strnlen (const char *__string, size_t __maxlen) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + +extern char *strerror (int __errnum) throw (); +# 421 "/usr/include/string.h" 3 4 +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) + throw () __attribute__ ((__nonnull__ (2))) ; + + + + + +extern char *strerror_l (int __errnum, locale_t __l) throw (); + + + +# 1 "/usr/include/strings.h" 1 3 4 +# 23 "/usr/include/strings.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 24 "/usr/include/strings.h" 2 3 4 + + + + + + +extern "C" { + + + +extern int bcmp (const void *__s1, const void *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void bcopy (const void *__src, void *__dest, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + +extern "C++" +{ +extern char *index (char *__s, int __c) + throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *index (const char *__s, int __c) + throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 66 "/usr/include/strings.h" 3 4 +} + + + + + + + +extern "C++" +{ +extern char *rindex (char *__s, int __c) + throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *rindex (const char *__s, int __c) + throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 94 "/usr/include/strings.h" 3 4 +} +# 104 "/usr/include/strings.h" 3 4 +extern int ffs (int __i) throw () __attribute__ ((__const__)); + + + + + +extern int ffsl (long int __l) throw () __attribute__ ((__const__)); +__extension__ extern int ffsll (long long int __ll) + throw () __attribute__ ((__const__)); + + + +extern int strcasecmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + + +extern int strncasecmp_l (const char *__s1, const char *__s2, + size_t __n, locale_t __loc) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); + + +} +# 433 "/usr/include/string.h" 2 3 4 + + + +extern void explicit_bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + +extern char *strsep (char **__restrict __stringp, + const char *__restrict __delim) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern char *strsignal (int __sig) throw (); + + +extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *__stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern char *stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int strverscmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); + + +extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +extern "C++" char *basename (char *__filename) + throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); +extern "C++" const char *basename (const char *__filename) + throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); +# 499 "/usr/include/string.h" 3 4 +} +# 86 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 1 "/usr/include/time.h" 1 3 4 +# 29 "/usr/include/time.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 30 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/time.h" 1 3 4 +# 26 "/usr/include/bits/time.h" 3 4 +# 1 "/usr/include/bits/types.h" 1 3 4 +# 27 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/bits/types.h" 2 3 4 + + +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + + +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; + +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; + + + + + + +typedef __int8_t __int_least8_t; +typedef __uint8_t __uint_least8_t; +typedef __int16_t __int_least16_t; +typedef __uint16_t __uint_least16_t; +typedef __int32_t __int_least32_t; +typedef __uint32_t __uint_least32_t; +typedef __int64_t __int_least64_t; +typedef __uint64_t __uint_least64_t; + + + +typedef long int __quad_t; +typedef unsigned long int __u_quad_t; + + + + + + + +typedef long int __intmax_t; +typedef unsigned long int __uintmax_t; +# 140 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/typesizes.h" 1 3 4 +# 141 "/usr/include/bits/types.h" 2 3 4 + + +typedef unsigned long int __dev_t; +typedef unsigned int __uid_t; +typedef unsigned int __gid_t; +typedef unsigned long int __ino_t; +typedef unsigned long int __ino64_t; +typedef unsigned int __mode_t; +typedef unsigned long int __nlink_t; +typedef long int __off_t; +typedef long int __off64_t; +typedef int __pid_t; +typedef struct { int __val[2]; } __fsid_t; +typedef long int __clock_t; +typedef unsigned long int __rlim_t; +typedef unsigned long int __rlim64_t; +typedef unsigned int __id_t; +typedef long int __time_t; +typedef unsigned int __useconds_t; +typedef long int __suseconds_t; + +typedef int __daddr_t; +typedef int __key_t; + + +typedef int __clockid_t; + + +typedef void * __timer_t; + + +typedef long int __blksize_t; + + + + +typedef long int __blkcnt_t; +typedef long int __blkcnt64_t; + + +typedef unsigned long int __fsblkcnt_t; +typedef unsigned long int __fsblkcnt64_t; + + +typedef unsigned long int __fsfilcnt_t; +typedef unsigned long int __fsfilcnt64_t; + + +typedef long int __fsword_t; + +typedef long int __ssize_t; + + +typedef long int __syscall_slong_t; + +typedef unsigned long int __syscall_ulong_t; + + + +typedef __off64_t __loff_t; +typedef char *__caddr_t; + + +typedef long int __intptr_t; + + +typedef unsigned int __socklen_t; + + + + +typedef int __sig_atomic_t; +# 27 "/usr/include/bits/time.h" 2 3 4 +# 73 "/usr/include/bits/time.h" 3 4 +# 1 "/usr/include/bits/timex.h" 1 3 4 +# 22 "/usr/include/bits/timex.h" 3 4 +# 1 "/usr/include/bits/types/struct_timeval.h" 1 3 4 + + + + + + + +struct timeval +{ + __time_t tv_sec; + __suseconds_t tv_usec; +}; +# 23 "/usr/include/bits/timex.h" 2 3 4 + + + +struct timex +{ + unsigned int modes; + __syscall_slong_t offset; + __syscall_slong_t freq; + __syscall_slong_t maxerror; + __syscall_slong_t esterror; + int status; + __syscall_slong_t constant; + __syscall_slong_t precision; + __syscall_slong_t tolerance; + struct timeval time; + __syscall_slong_t tick; + __syscall_slong_t ppsfreq; + __syscall_slong_t jitter; + int shift; + __syscall_slong_t stabil; + __syscall_slong_t jitcnt; + __syscall_slong_t calcnt; + __syscall_slong_t errcnt; + __syscall_slong_t stbcnt; + + int tai; + + + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; +}; +# 74 "/usr/include/bits/time.h" 2 3 4 + +extern "C" { + + +extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); + +} +# 34 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/types/clock_t.h" 1 3 4 + + + + + + +typedef __clock_t clock_t; +# 38 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/time_t.h" 1 3 4 + + + + + + +typedef __time_t time_t; +# 39 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/struct_tm.h" 1 3 4 + + + + + + +struct tm +{ + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + + + long int tm_gmtoff; + const char *tm_zone; + + + + +}; +# 40 "/usr/include/time.h" 2 3 4 + + +# 1 "/usr/include/bits/types/struct_timespec.h" 1 3 4 +# 9 "/usr/include/bits/types/struct_timespec.h" 3 4 +struct timespec +{ + __time_t tv_sec; + __syscall_slong_t tv_nsec; +}; +# 43 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/types/clockid_t.h" 1 3 4 + + + + + + +typedef __clockid_t clockid_t; +# 47 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/timer_t.h" 1 3 4 + + + + + + +typedef __timer_t timer_t; +# 48 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/struct_itimerspec.h" 1 3 4 + + + + + + + +struct itimerspec + { + struct timespec it_interval; + struct timespec it_value; + }; +# 49 "/usr/include/time.h" 2 3 4 +struct sigevent; + + + + +typedef __pid_t pid_t; +# 68 "/usr/include/time.h" 3 4 +extern "C" { + + + +extern clock_t clock (void) throw (); + + +extern time_t time (time_t *__timer) throw (); + + +extern double difftime (time_t __time1, time_t __time0) + throw () __attribute__ ((__const__)); + + +extern time_t mktime (struct tm *__tp) throw (); + + + + + +extern size_t strftime (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp) throw (); + + + + +extern char *strptime (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp) + throw (); + + + + + + +extern size_t strftime_l (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp, + locale_t __loc) throw (); + + + +extern char *strptime_l (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp, + locale_t __loc) throw (); + + + + + +extern struct tm *gmtime (const time_t *__timer) throw (); + + + +extern struct tm *localtime (const time_t *__timer) throw (); + + + + +extern struct tm *gmtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) throw (); + + + +extern struct tm *localtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) throw (); + + + + +extern char *asctime (const struct tm *__tp) throw (); + + +extern char *ctime (const time_t *__timer) throw (); + + + + + + +extern char *asctime_r (const struct tm *__restrict __tp, + char *__restrict __buf) throw (); + + +extern char *ctime_r (const time_t *__restrict __timer, + char *__restrict __buf) throw (); + + + + +extern char *__tzname[2]; +extern int __daylight; +extern long int __timezone; + + + + +extern char *tzname[2]; + + + +extern void tzset (void) throw (); + + + +extern int daylight; +extern long int timezone; + + + + + +extern int stime (const time_t *__when) throw (); +# 196 "/usr/include/time.h" 3 4 +extern time_t timegm (struct tm *__tp) throw (); + + +extern time_t timelocal (struct tm *__tp) throw (); + + +extern int dysize (int __year) throw () __attribute__ ((__const__)); +# 211 "/usr/include/time.h" 3 4 +extern int nanosleep (const struct timespec *__requested_time, + struct timespec *__remaining); + + + +extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); + + +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); + + +extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) + throw (); + + + + + + +extern int clock_nanosleep (clockid_t __clock_id, int __flags, + const struct timespec *__req, + struct timespec *__rem); + + +extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); + + + + +extern int timer_create (clockid_t __clock_id, + struct sigevent *__restrict __evp, + timer_t *__restrict __timerid) throw (); + + +extern int timer_delete (timer_t __timerid) throw (); + + +extern int timer_settime (timer_t __timerid, int __flags, + const struct itimerspec *__restrict __value, + struct itimerspec *__restrict __ovalue) throw (); + + +extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) + throw (); + + +extern int timer_getoverrun (timer_t __timerid) throw (); + + + + + +extern int timespec_get (struct timespec *__ts, int __base) + throw () __attribute__ ((__nonnull__ (1))); +# 280 "/usr/include/time.h" 3 4 +extern int getdate_err; +# 289 "/usr/include/time.h" 3 4 +extern struct tm *getdate (const char *__string); +# 303 "/usr/include/time.h" 3 4 +extern int getdate_r (const char *__restrict __string, + struct tm *__restrict __resbufp); + + +} +# 87 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 + + +# 88 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern "C" +{ + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) clock_t clock(void) + + + + +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 +throw () +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) void* memset(void*, int, size_t) +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 + throw () +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) void* memcpy(void*, const void*, size_t) +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 + throw () +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; + +} +# 111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 1 3 +# 37 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 3 + +# 38 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 3 + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 1 3 +# 252 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 + +# 252 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std +{ + typedef long unsigned int size_t; + typedef long int ptrdiff_t; + + + typedef decltype(nullptr) nullptr_t; + +} +# 274 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# 417 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# 524 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/os_defines.h" 1 3 +# 525 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 2 3 + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/cpu_defines.h" 1 3 +# 528 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 2 3 +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 1 3 +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 3 + +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 3 + +#pragma GCC visibility push(default) + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception.h" 1 3 +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception.h" 3 + +# 35 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception.h" 3 + +#pragma GCC visibility push(default) + + + +extern "C++" { + +namespace std +{ +# 60 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception.h" 3 + class exception + { + public: + exception() noexcept { } + virtual ~exception() noexcept; + + exception(const exception&) = default; + exception& operator=(const exception&) = default; + exception(exception&&) = default; + exception& operator=(exception&&) = default; + + + + + virtual const char* + what() const noexcept; + }; + +} + +} + +#pragma GCC visibility pop +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 2 3 + +extern "C++" { + +namespace std +{ + + + class bad_exception : public exception + { + public: + bad_exception() noexcept { } + + + + virtual ~bad_exception() noexcept; + + + virtual const char* + what() const noexcept; + }; + + + typedef void (*terminate_handler) (); + + + typedef void (*unexpected_handler) (); + + + terminate_handler set_terminate(terminate_handler) noexcept; + + + + terminate_handler get_terminate() noexcept; + + + + + void terminate() noexcept __attribute__ ((__noreturn__)); + + + unexpected_handler set_unexpected(unexpected_handler) noexcept; + + + + unexpected_handler get_unexpected() noexcept; + + + + + void unexpected() __attribute__ ((__noreturn__)); +# 101 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 3 + + bool uncaught_exception() noexcept __attribute__ ((__pure__)); + + + + + int uncaught_exceptions() noexcept __attribute__ ((__pure__)); + + + +} + +namespace __gnu_cxx +{ + +# 133 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 3 + void __verbose_terminate_handler(); + + +} + +} + +#pragma GCC visibility pop + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 1 3 +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 3 +#pragma GCC visibility push(default) + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_defines.h" 1 3 +# 38 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cxxabi_init_exception.h" 1 3 +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cxxabi_init_exception.h" 3 + +# 35 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cxxabi_init_exception.h" 3 + +#pragma GCC visibility push(default) + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cxxabi_init_exception.h" 2 3 +# 50 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cxxabi_init_exception.h" 3 +namespace std +{ + class type_info; +} + +namespace __cxxabiv1 +{ + struct __cxa_refcounted_exception; + + extern "C" + { + + void* + __cxa_allocate_exception(size_t) noexcept; + + void + __cxa_free_exception(void*) noexcept; + + + __cxa_refcounted_exception* + __cxa_init_primary_exception(void *object, std::type_info *tinfo, + void ( *dest) (void *)) noexcept; + + } +} + + + +#pragma GCC visibility pop +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo" 1 3 +# 32 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo" 3 + +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo" 3 + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/hash_bytes.h" 1 3 +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/hash_bytes.h" 3 + +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/hash_bytes.h" 3 + + + +namespace std +{ + + + + + + + + size_t + _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); + + + + + + size_t + _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); + + +} +# 37 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo" 2 3 + + +#pragma GCC visibility push(default) + +extern "C++" { + +namespace __cxxabiv1 +{ + class __class_type_info; +} +# 80 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo" 3 +namespace std +{ + + + + + + + class type_info + { + public: + + + + + virtual ~type_info(); + + + + const char* name() const noexcept + { return __name[0] == '*' ? __name + 1 : __name; } +# 115 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo" 3 + bool before(const type_info& __arg) const noexcept + { return (__name[0] == '*' && __arg.__name[0] == '*') + ? __name < __arg.__name + : __builtin_strcmp (__name, __arg.__name) < 0; } + + bool operator==(const type_info& __arg) const noexcept + { + return ((__name == __arg.__name) + || (__name[0] != '*' && + __builtin_strcmp (__name, __arg.__name) == 0)); + } +# 136 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo" 3 + bool operator!=(const type_info& __arg) const noexcept + { return !operator==(__arg); } + + + size_t hash_code() const noexcept + { + + return _Hash_bytes(name(), __builtin_strlen(name()), + static_cast(0xc70f6907UL)); + + + + } + + + + virtual bool __is_pointer_p() const; + + + virtual bool __is_function_p() const; + + + + + + + + virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, + unsigned __outer) const; + + + virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, + void **__obj_ptr) const; + + protected: + const char *__name; + + explicit type_info(const char *__n): __name(__n) { } + + private: + + type_info& operator=(const type_info&); + type_info(const type_info&); + }; + + + + + + + + class bad_cast : public exception + { + public: + bad_cast() noexcept { } + + + + virtual ~bad_cast() noexcept; + + + virtual const char* what() const noexcept; + }; + + + + + + class bad_typeid : public exception + { + public: + bad_typeid () noexcept { } + + + + virtual ~bad_typeid() noexcept; + + + virtual const char* what() const noexcept; + }; +} + +} + +#pragma GCC visibility pop +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 1 3 +# 41 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 2 3 + +extern "C++" { + +namespace std +{ + class type_info; + + + + + + namespace __exception_ptr + { + class exception_ptr; + } + + using __exception_ptr::exception_ptr; + + + + + + exception_ptr current_exception() noexcept; + + template + exception_ptr make_exception_ptr(_Ex) noexcept; + + + void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); + + namespace __exception_ptr + { + using std::rethrow_exception; + + + + + + class exception_ptr + { + void* _M_exception_object; + + explicit exception_ptr(void* __e) noexcept; + + void _M_addref() noexcept; + void _M_release() noexcept; + + void *_M_get() const noexcept __attribute__ ((__pure__)); + + friend exception_ptr std::current_exception() noexcept; + friend void std::rethrow_exception(exception_ptr); + template + friend exception_ptr std::make_exception_ptr(_Ex) noexcept; + + public: + exception_ptr() noexcept; + + exception_ptr(const exception_ptr&) noexcept; + + + exception_ptr(nullptr_t) noexcept + : _M_exception_object(0) + { } + + exception_ptr(exception_ptr&& __o) noexcept + : _M_exception_object(__o._M_exception_object) + { __o._M_exception_object = 0; } +# 117 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 3 + exception_ptr& + operator=(const exception_ptr&) noexcept; + + + exception_ptr& + operator=(exception_ptr&& __o) noexcept + { + exception_ptr(static_cast(__o)).swap(*this); + return *this; + } + + + ~exception_ptr() noexcept; + + void + swap(exception_ptr&) noexcept; +# 144 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 3 + explicit operator bool() const + { return _M_exception_object; } + + + friend bool + operator==(const exception_ptr&, const exception_ptr&) + noexcept __attribute__ ((__pure__)); + + const class std::type_info* + __cxa_exception_type() const noexcept + __attribute__ ((__pure__)); + }; + + bool + operator==(const exception_ptr&, const exception_ptr&) + noexcept __attribute__ ((__pure__)); + + bool + operator!=(const exception_ptr&, const exception_ptr&) + noexcept __attribute__ ((__pure__)); + + inline void + swap(exception_ptr& __lhs, exception_ptr& __rhs) + { __lhs.swap(__rhs); } + + template + inline void + __dest_thunk(void* __x) + { static_cast<_Ex*>(__x)->~_Ex(); } + + } + + + template + exception_ptr + make_exception_ptr(_Ex __ex) noexcept + { + + void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); + (void) __cxxabiv1::__cxa_init_primary_exception( + __e, const_cast(&typeid(__ex)), + __exception_ptr::__dest_thunk<_Ex>); + try + { + ::new (__e) _Ex(__ex); + return exception_ptr(__e); + } + catch(...) + { + __cxxabiv1::__cxa_free_exception(__e); + return current_exception(); + } +# 208 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h" 3 + } + + +} + +} + +#pragma GCC visibility pop +# 144 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/nested_exception.h" 1 3 +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/nested_exception.h" 3 +#pragma GCC visibility push(default) + + + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 1 3 +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/concept_check.h" 1 3 +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/concept_check.h" 3 + +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/concept_check.h" 3 +# 35 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + template + inline constexpr _Tp* + __addressof(_Tp& __r) noexcept + { return __builtin_addressof(__r); } + + + + +} + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 1 3 +# 32 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + + + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 56 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + struct integral_constant + { + static constexpr _Tp value = __v; + typedef _Tp value_type; + typedef integral_constant<_Tp, __v> type; + constexpr operator value_type() const noexcept { return value; } + + + + + constexpr value_type operator()() const noexcept { return value; } + + }; + + template + constexpr _Tp integral_constant<_Tp, __v>::value; + + + typedef integral_constant true_type; + + + typedef integral_constant false_type; + + template + using __bool_constant = integral_constant; +# 91 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + struct conditional; + + template + struct __or_; + + template<> + struct __or_<> + : public false_type + { }; + + template + struct __or_<_B1> + : public _B1 + { }; + + template + struct __or_<_B1, _B2> + : public conditional<_B1::value, _B1, _B2>::type + { }; + + template + struct __or_<_B1, _B2, _B3, _Bn...> + : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type + { }; + + template + struct __and_; + + template<> + struct __and_<> + : public true_type + { }; + + template + struct __and_<_B1> + : public _B1 + { }; + + template + struct __and_<_B1, _B2> + : public conditional<_B1::value, _B2, _B1>::type + { }; + + template + struct __and_<_B1, _B2, _B3, _Bn...> + : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type + { }; + + template + struct __not_ + : public __bool_constant + { }; +# 185 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + struct __success_type + { typedef _Tp type; }; + + struct __failure_type + { }; + + + + template + struct remove_cv; + + template + struct __is_void_helper + : public false_type { }; + + template<> + struct __is_void_helper + : public true_type { }; + + + template + struct is_void + : public __is_void_helper::type>::type + { }; + + template + struct __is_integral_helper + : public false_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + + template<> + struct __is_integral_helper + : public true_type { }; +# 243 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + + + + template<> + struct __is_integral_helper<__int128> + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; +# 323 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + struct is_integral + : public __is_integral_helper::type>::type + { }; + + template + struct __is_floating_point_helper + : public false_type { }; + + template<> + struct __is_floating_point_helper + : public true_type { }; + + template<> + struct __is_floating_point_helper + : public true_type { }; + + template<> + struct __is_floating_point_helper + : public true_type { }; + + + template<> + struct __is_floating_point_helper<__ieee128> + : public true_type { }; + + + + template + struct is_floating_point + : public __is_floating_point_helper::type>::type + { }; + + + template + struct is_array + : public false_type { }; + + template + struct is_array<_Tp[_Size]> + : public true_type { }; + + template + struct is_array<_Tp[]> + : public true_type { }; + + template + struct __is_pointer_helper + : public false_type { }; + + template + struct __is_pointer_helper<_Tp*> + : public true_type { }; + + + template + struct is_pointer + : public __is_pointer_helper::type>::type + { }; + + + template + struct is_lvalue_reference + : public false_type { }; + + template + struct is_lvalue_reference<_Tp&> + : public true_type { }; + + + template + struct is_rvalue_reference + : public false_type { }; + + template + struct is_rvalue_reference<_Tp&&> + : public true_type { }; + + template + struct is_function; + + template + struct __is_member_object_pointer_helper + : public false_type { }; + + template + struct __is_member_object_pointer_helper<_Tp _Cp::*> + : public __not_>::type { }; + + + template + struct is_member_object_pointer + : public __is_member_object_pointer_helper< + typename remove_cv<_Tp>::type>::type + { }; + + template + struct __is_member_function_pointer_helper + : public false_type { }; + + template + struct __is_member_function_pointer_helper<_Tp _Cp::*> + : public is_function<_Tp>::type { }; + + + template + struct is_member_function_pointer + : public __is_member_function_pointer_helper< + typename remove_cv<_Tp>::type>::type + { }; + + + template + struct is_enum + : public integral_constant + { }; + + + template + struct is_union + : public integral_constant + { }; + + + template + struct is_class + : public integral_constant + { }; + + + template + struct is_function + : public false_type { }; + + template + struct is_function<_Res(_ArgTypes...) > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) && > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) && > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const && > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const && > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) volatile > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) volatile & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) volatile && > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) volatile > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) volatile & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) volatile && > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const volatile > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const volatile & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const volatile && > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const volatile > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const volatile & > + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const volatile && > + : public true_type { }; + + + + template + struct __is_null_pointer_helper + : public false_type { }; + + template<> + struct __is_null_pointer_helper + : public true_type { }; + + + template + struct is_null_pointer + : public __is_null_pointer_helper::type>::type + { }; + + + template + struct __is_nullptr_t + : public is_null_pointer<_Tp> + { }; + + + + + template + struct is_reference + : public __or_, + is_rvalue_reference<_Tp>>::type + { }; + + + template + struct is_arithmetic + : public __or_, is_floating_point<_Tp>>::type + { }; + + + template + struct is_fundamental + : public __or_, is_void<_Tp>, + is_null_pointer<_Tp>>::type + { }; + + + template + struct is_object + : public __not_<__or_, is_reference<_Tp>, + is_void<_Tp>>>::type + { }; + + template + struct is_member_pointer; + + + template + struct is_scalar + : public __or_, is_enum<_Tp>, is_pointer<_Tp>, + is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type + { }; + + + template + struct is_compound + : public __not_>::type { }; + + template + struct __is_member_pointer_helper + : public false_type { }; + + template + struct __is_member_pointer_helper<_Tp _Cp::*> + : public true_type { }; + + + template + struct is_member_pointer + : public __is_member_pointer_helper::type>::type + { }; + + + + template + struct __is_referenceable + : public __or_, is_reference<_Tp>>::type + { }; + + template + struct __is_referenceable<_Res(_Args...) > + : public true_type + { }; + + template + struct __is_referenceable<_Res(_Args......) > + : public true_type + { }; + + + + + template + struct is_const + : public false_type { }; + + template + struct is_const<_Tp const> + : public true_type { }; + + + template + struct is_volatile + : public false_type { }; + + template + struct is_volatile<_Tp volatile> + : public true_type { }; + + + template + struct is_trivial + : public integral_constant + { }; + + + template + struct is_trivially_copyable + : public integral_constant + { }; + + + template + struct is_standard_layout + : public integral_constant + { }; + + + + template + struct is_pod + : public integral_constant + { }; + + + template + struct is_literal_type + : public integral_constant + { }; + + + template + struct is_empty + : public integral_constant + { }; + + + template + struct is_polymorphic + : public integral_constant + { }; + + + + + template + struct is_final + : public integral_constant + { }; + + + + template + struct is_abstract + : public integral_constant + { }; + + template::value> + struct __is_signed_helper + : public false_type { }; + + template + struct __is_signed_helper<_Tp, true> + : public integral_constant + { }; + + + template + struct is_signed + : public __is_signed_helper<_Tp>::type + { }; + + + template + struct is_unsigned + : public __and_, __not_>> + { }; +# 758 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + _Up + __declval(int); + + template + _Tp + __declval(long); + + template + auto declval() noexcept -> decltype(__declval<_Tp>(0)); + + template + struct extent; + + template + struct remove_all_extents; + + template + struct __is_array_known_bounds + : public integral_constant::value > 0)> + { }; + + template + struct __is_array_unknown_bounds + : public __and_, __not_>> + { }; + + + + + + + struct __do_is_destructible_impl + { + template().~_Tp())> + static true_type __test(int); + + template + static false_type __test(...); + }; + + template + struct __is_destructible_impl + : public __do_is_destructible_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template, + __is_array_unknown_bounds<_Tp>, + is_function<_Tp>>::value, + bool = __or_, is_scalar<_Tp>>::value> + struct __is_destructible_safe; + + template + struct __is_destructible_safe<_Tp, false, false> + : public __is_destructible_impl::type>::type + { }; + + template + struct __is_destructible_safe<_Tp, true, false> + : public false_type { }; + + template + struct __is_destructible_safe<_Tp, false, true> + : public true_type { }; + + + template + struct is_destructible + : public __is_destructible_safe<_Tp>::type + { }; + + + + + + struct __do_is_nt_destructible_impl + { + template + static __bool_constant().~_Tp())> + __test(int); + + template + static false_type __test(...); + }; + + template + struct __is_nt_destructible_impl + : public __do_is_nt_destructible_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template, + __is_array_unknown_bounds<_Tp>, + is_function<_Tp>>::value, + bool = __or_, is_scalar<_Tp>>::value> + struct __is_nt_destructible_safe; + + template + struct __is_nt_destructible_safe<_Tp, false, false> + : public __is_nt_destructible_impl::type>::type + { }; + + template + struct __is_nt_destructible_safe<_Tp, true, false> + : public false_type { }; + + template + struct __is_nt_destructible_safe<_Tp, false, true> + : public true_type { }; + + + template + struct is_nothrow_destructible + : public __is_nt_destructible_safe<_Tp>::type + { }; + + + template + struct is_constructible + : public __bool_constant<__is_constructible(_Tp, _Args...)> + { }; + + + template + struct is_default_constructible + : public is_constructible<_Tp>::type + { }; + + template::value> + struct __is_copy_constructible_impl; + + template + struct __is_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_copy_constructible_impl<_Tp, true> + : public is_constructible<_Tp, const _Tp&> + { }; + + + template + struct is_copy_constructible + : public __is_copy_constructible_impl<_Tp> + { }; + + template::value> + struct __is_move_constructible_impl; + + template + struct __is_move_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_move_constructible_impl<_Tp, true> + : public is_constructible<_Tp, _Tp&&> + { }; + + + template + struct is_move_constructible + : public __is_move_constructible_impl<_Tp> + { }; + + template + struct __is_nt_default_constructible_atom + : public integral_constant + { }; + + template::value> + struct __is_nt_default_constructible_impl; + + template + struct __is_nt_default_constructible_impl<_Tp, true> + : public __and_<__is_array_known_bounds<_Tp>, + __is_nt_default_constructible_atom::type>> + { }; + + template + struct __is_nt_default_constructible_impl<_Tp, false> + : public __is_nt_default_constructible_atom<_Tp> + { }; + + + template + struct is_nothrow_default_constructible + : public __and_, + __is_nt_default_constructible_impl<_Tp>> + { }; + + template + struct __is_nt_constructible_impl + : public integral_constant()...))> + { }; + + template + struct __is_nt_constructible_impl<_Tp, _Arg> + : public integral_constant(declval<_Arg>()))> + { }; + + template + struct __is_nt_constructible_impl<_Tp> + : public is_nothrow_default_constructible<_Tp> + { }; + + + template + struct is_nothrow_constructible + : public __and_, + __is_nt_constructible_impl<_Tp, _Args...>> + { }; + + template::value> + struct __is_nothrow_copy_constructible_impl; + + template + struct __is_nothrow_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nothrow_copy_constructible_impl<_Tp, true> + : public is_nothrow_constructible<_Tp, const _Tp&> + { }; + + + template + struct is_nothrow_copy_constructible + : public __is_nothrow_copy_constructible_impl<_Tp> + { }; + + template::value> + struct __is_nothrow_move_constructible_impl; + + template + struct __is_nothrow_move_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nothrow_move_constructible_impl<_Tp, true> + : public is_nothrow_constructible<_Tp, _Tp&&> + { }; + + + template + struct is_nothrow_move_constructible + : public __is_nothrow_move_constructible_impl<_Tp> + { }; + + + template + struct is_assignable + : public __bool_constant<__is_assignable(_Tp, _Up)> + { }; + + template::value> + struct __is_copy_assignable_impl; + + template + struct __is_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_copy_assignable_impl<_Tp, true> + : public is_assignable<_Tp&, const _Tp&> + { }; + + + template + struct is_copy_assignable + : public __is_copy_assignable_impl<_Tp> + { }; + + template::value> + struct __is_move_assignable_impl; + + template + struct __is_move_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_move_assignable_impl<_Tp, true> + : public is_assignable<_Tp&, _Tp&&> + { }; + + + template + struct is_move_assignable + : public __is_move_assignable_impl<_Tp> + { }; + + template + struct __is_nt_assignable_impl + : public integral_constant() = declval<_Up>())> + { }; + + + template + struct is_nothrow_assignable + : public __and_, + __is_nt_assignable_impl<_Tp, _Up>> + { }; + + template::value> + struct __is_nt_copy_assignable_impl; + + template + struct __is_nt_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nt_copy_assignable_impl<_Tp, true> + : public is_nothrow_assignable<_Tp&, const _Tp&> + { }; + + + template + struct is_nothrow_copy_assignable + : public __is_nt_copy_assignable_impl<_Tp> + { }; + + template::value> + struct __is_nt_move_assignable_impl; + + template + struct __is_nt_move_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nt_move_assignable_impl<_Tp, true> + : public is_nothrow_assignable<_Tp&, _Tp&&> + { }; + + + template + struct is_nothrow_move_assignable + : public __is_nt_move_assignable_impl<_Tp> + { }; + + + template + struct is_trivially_constructible + : public __bool_constant<__is_trivially_constructible(_Tp, _Args...)> + { }; + + + template + struct is_trivially_default_constructible + : public is_trivially_constructible<_Tp>::type + { }; + + struct __do_is_implicitly_default_constructible_impl + { + template + static void __helper(const _Tp&); + + template + static true_type __test(const _Tp&, + decltype(__helper({}))* = 0); + + static false_type __test(...); + }; + + template + struct __is_implicitly_default_constructible_impl + : public __do_is_implicitly_default_constructible_impl + { + typedef decltype(__test(declval<_Tp>())) type; + }; + + template + struct __is_implicitly_default_constructible_safe + : public __is_implicitly_default_constructible_impl<_Tp>::type + { }; + + template + struct __is_implicitly_default_constructible + : public __and_, + __is_implicitly_default_constructible_safe<_Tp>> + { }; + + + + template::value> + struct __is_trivially_copy_constructible_impl; + + template + struct __is_trivially_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_copy_constructible_impl<_Tp, true> + : public __and_, + integral_constant> + { }; + + template + struct is_trivially_copy_constructible + : public __is_trivially_copy_constructible_impl<_Tp> + { }; + + + + template::value> + struct __is_trivially_move_constructible_impl; + + template + struct __is_trivially_move_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_move_constructible_impl<_Tp, true> + : public __and_, + integral_constant> + { }; + + template + struct is_trivially_move_constructible + : public __is_trivially_move_constructible_impl<_Tp> + { }; + + + template + struct is_trivially_assignable + : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> + { }; + + + + template::value> + struct __is_trivially_copy_assignable_impl; + + template + struct __is_trivially_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_copy_assignable_impl<_Tp, true> + : public __bool_constant<__is_trivially_assignable(_Tp&, const _Tp&)> + { }; + + template + struct is_trivially_copy_assignable + : public __is_trivially_copy_assignable_impl<_Tp> + { }; + + + + template::value> + struct __is_trivially_move_assignable_impl; + + template + struct __is_trivially_move_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_move_assignable_impl<_Tp, true> + : public __bool_constant<__is_trivially_assignable(_Tp&, _Tp&&)> + { }; + + template + struct is_trivially_move_assignable + : public __is_trivially_move_assignable_impl<_Tp> + { }; + + + template + struct is_trivially_destructible + : public __and_, + __bool_constant<__has_trivial_destructor(_Tp)>> + { }; + + + + template + struct has_virtual_destructor + : public integral_constant + { }; + + + + + + template + struct alignment_of + : public integral_constant { }; + + + template + struct rank + : public integral_constant { }; + + template + struct rank<_Tp[_Size]> + : public integral_constant::value> { }; + + template + struct rank<_Tp[]> + : public integral_constant::value> { }; + + + template + struct extent + : public integral_constant { }; + + template + struct extent<_Tp[_Size], _Uint> + : public integral_constant::value> + { }; + + template + struct extent<_Tp[], _Uint> + : public integral_constant::value> + { }; + + + + + + template + struct is_same + : public false_type { }; + + template + struct is_same<_Tp, _Tp> + : public true_type { }; + + + template + struct is_base_of + : public integral_constant + { }; + + template, is_function<_To>, + is_array<_To>>::value> + struct __is_convertible_helper + { + typedef typename is_void<_To>::type type; + }; + + template + class __is_convertible_helper<_From, _To, false> + { + template + static void __test_aux(_To1) noexcept; + + template(std::declval<_From1>()))> + static true_type + __test(int); + + template + static false_type + __test(...); + + public: + typedef decltype(__test<_From, _To>(0)) type; + }; + + + + template + struct is_convertible + : public __is_convertible_helper<_From, _To>::type + { }; +# 1380 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + struct remove_const + { typedef _Tp type; }; + + template + struct remove_const<_Tp const> + { typedef _Tp type; }; + + + template + struct remove_volatile + { typedef _Tp type; }; + + template + struct remove_volatile<_Tp volatile> + { typedef _Tp type; }; + + + template + struct remove_cv + { + typedef typename + remove_const::type>::type type; + }; + + + template + struct add_const + { typedef _Tp const type; }; + + + template + struct add_volatile + { typedef _Tp volatile type; }; + + + template + struct add_cv + { + typedef typename + add_const::type>::type type; + }; + + + + + + + template + using remove_const_t = typename remove_const<_Tp>::type; + + + template + using remove_volatile_t = typename remove_volatile<_Tp>::type; + + + template + using remove_cv_t = typename remove_cv<_Tp>::type; + + + template + using add_const_t = typename add_const<_Tp>::type; + + + template + using add_volatile_t = typename add_volatile<_Tp>::type; + + + template + using add_cv_t = typename add_cv<_Tp>::type; + + + + + + template + struct remove_reference + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&> + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&&> + { typedef _Tp type; }; + + template::value> + struct __add_lvalue_reference_helper + { typedef _Tp type; }; + + template + struct __add_lvalue_reference_helper<_Tp, true> + { typedef _Tp& type; }; + + + template + struct add_lvalue_reference + : public __add_lvalue_reference_helper<_Tp> + { }; + + template::value> + struct __add_rvalue_reference_helper + { typedef _Tp type; }; + + template + struct __add_rvalue_reference_helper<_Tp, true> + { typedef _Tp&& type; }; + + + template + struct add_rvalue_reference + : public __add_rvalue_reference_helper<_Tp> + { }; + + + + template + using remove_reference_t = typename remove_reference<_Tp>::type; + + + template + using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; + + + template + using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; + + + + + + template + struct __cv_selector; + + template + struct __cv_selector<_Unqualified, false, false> + { typedef _Unqualified __type; }; + + template + struct __cv_selector<_Unqualified, false, true> + { typedef volatile _Unqualified __type; }; + + template + struct __cv_selector<_Unqualified, true, false> + { typedef const _Unqualified __type; }; + + template + struct __cv_selector<_Unqualified, true, true> + { typedef const volatile _Unqualified __type; }; + + template::value, + bool _IsVol = is_volatile<_Qualified>::value> + class __match_cv_qualifiers + { + typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; + + public: + typedef typename __match::__type __type; + }; + + + template + struct __make_unsigned + { typedef _Tp __type; }; + + template<> + struct __make_unsigned + { typedef unsigned char __type; }; + + template<> + struct __make_unsigned + { typedef unsigned char __type; }; + + template<> + struct __make_unsigned + { typedef unsigned short __type; }; + + template<> + struct __make_unsigned + { typedef unsigned int __type; }; + + template<> + struct __make_unsigned + { typedef unsigned long __type; }; + + template<> + struct __make_unsigned + { typedef unsigned long long __type; }; + + + template<> + struct __make_unsigned<__int128> + { typedef unsigned __int128 __type; }; +# 1593 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template::value, + bool _IsEnum = is_enum<_Tp>::value> + class __make_unsigned_selector; + + template + class __make_unsigned_selector<_Tp, true, false> + { + using __unsigned_type + = typename __make_unsigned::type>::__type; + + public: + using __type + = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; + }; + + class __make_unsigned_selector_base + { + protected: + template struct _List { }; + + template + struct _List<_Tp, _Up...> : _List<_Up...> + { static constexpr size_t __size = sizeof(_Tp); }; + + template + struct __select; + + template + struct __select<_Sz, _List<_Uint, _UInts...>, true> + { using __type = _Uint; }; + + template + struct __select<_Sz, _List<_Uint, _UInts...>, false> + : __select<_Sz, _List<_UInts...>> + { }; + }; + + + template + class __make_unsigned_selector<_Tp, false, true> + : __make_unsigned_selector_base + { + + using _UInts = _List; + + using __unsigned_type = typename __select::__type; + + public: + using __type + = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; + }; + + + + + + + template<> + struct __make_unsigned + { + using __type + = typename __make_unsigned_selector::__type; + }; +# 1669 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template<> + struct __make_unsigned + { + using __type + = typename __make_unsigned_selector::__type; + }; + + template<> + struct __make_unsigned + { + using __type + = typename __make_unsigned_selector::__type; + }; + + + + + + template + struct make_unsigned + { typedef typename __make_unsigned_selector<_Tp>::__type type; }; + + + template<> + struct make_unsigned; + + + + template + struct __make_signed + { typedef _Tp __type; }; + + template<> + struct __make_signed + { typedef signed char __type; }; + + template<> + struct __make_signed + { typedef signed char __type; }; + + template<> + struct __make_signed + { typedef signed short __type; }; + + template<> + struct __make_signed + { typedef signed int __type; }; + + template<> + struct __make_signed + { typedef signed long __type; }; + + template<> + struct __make_signed + { typedef signed long long __type; }; + + + template<> + struct __make_signed + { typedef __int128 __type; }; +# 1747 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template::value, + bool _IsEnum = is_enum<_Tp>::value> + class __make_signed_selector; + + template + class __make_signed_selector<_Tp, true, false> + { + using __signed_type + = typename __make_signed::type>::__type; + + public: + using __type + = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; + }; + + + template + class __make_signed_selector<_Tp, false, true> + { + typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; + + public: + typedef typename __make_signed_selector<__unsigned_type>::__type __type; + }; + + + + + + + template<> + struct __make_signed + { + using __type + = typename __make_signed_selector::__type; + }; +# 1795 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template<> + struct __make_signed + { + using __type + = typename __make_signed_selector::__type; + }; + + template<> + struct __make_signed + { + using __type + = typename __make_signed_selector::__type; + }; + + + + + + template + struct make_signed + { typedef typename __make_signed_selector<_Tp>::__type type; }; + + + template<> + struct make_signed; + + + + template + using make_signed_t = typename make_signed<_Tp>::type; + + + template + using make_unsigned_t = typename make_unsigned<_Tp>::type; + + + + + + template + struct remove_extent + { typedef _Tp type; }; + + template + struct remove_extent<_Tp[_Size]> + { typedef _Tp type; }; + + template + struct remove_extent<_Tp[]> + { typedef _Tp type; }; + + + template + struct remove_all_extents + { typedef _Tp type; }; + + template + struct remove_all_extents<_Tp[_Size]> + { typedef typename remove_all_extents<_Tp>::type type; }; + + template + struct remove_all_extents<_Tp[]> + { typedef typename remove_all_extents<_Tp>::type type; }; + + + + template + using remove_extent_t = typename remove_extent<_Tp>::type; + + + template + using remove_all_extents_t = typename remove_all_extents<_Tp>::type; + + + + + template + struct __remove_pointer_helper + { typedef _Tp type; }; + + template + struct __remove_pointer_helper<_Tp, _Up*> + { typedef _Up type; }; + + + template + struct remove_pointer + : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> + { }; + + + template, + is_void<_Tp>>::value> + struct __add_pointer_helper + { typedef _Tp type; }; + + template + struct __add_pointer_helper<_Tp, true> + { typedef typename remove_reference<_Tp>::type* type; }; + + template + struct add_pointer + : public __add_pointer_helper<_Tp> + { }; + + + + template + using remove_pointer_t = typename remove_pointer<_Tp>::type; + + + template + using add_pointer_t = typename add_pointer<_Tp>::type; + + + template + struct __aligned_storage_msa + { + union __type + { + unsigned char __data[_Len]; + struct __attribute__((__aligned__)) { } __align; + }; + }; +# 1930 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template::__type)> + struct aligned_storage + { + union type + { + unsigned char __data[_Len]; + struct __attribute__((__aligned__((_Align)))) { } __align; + }; + }; + + template + struct __strictest_alignment + { + static const size_t _S_alignment = 0; + static const size_t _S_size = 0; + }; + + template + struct __strictest_alignment<_Tp, _Types...> + { + static const size_t _S_alignment = + alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment + ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; + static const size_t _S_size = + sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size + ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; + }; +# 1969 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + struct aligned_union + { + private: + static_assert(sizeof...(_Types) != 0, "At least one type is required"); + + using __strictest = __strictest_alignment<_Types...>; + static const size_t _S_len = _Len > __strictest::_S_size + ? _Len : __strictest::_S_size; + public: + + static const size_t alignment_value = __strictest::_S_alignment; + + typedef typename aligned_storage<_S_len, alignment_value>::type type; + }; + + template + const size_t aligned_union<_Len, _Types...>::alignment_value; + + + + template::value, + bool _IsFunction = is_function<_Up>::value> + struct __decay_selector; + + + template + struct __decay_selector<_Up, false, false> + { typedef typename remove_cv<_Up>::type __type; }; + + template + struct __decay_selector<_Up, true, false> + { typedef typename remove_extent<_Up>::type* __type; }; + + template + struct __decay_selector<_Up, false, true> + { typedef typename add_pointer<_Up>::type __type; }; + + + template + class decay + { + typedef typename remove_reference<_Tp>::type __remove_type; + + public: + typedef typename __decay_selector<__remove_type>::__type type; + }; + + template + class reference_wrapper; + + + template + struct __strip_reference_wrapper + { + typedef _Tp __type; + }; + + template + struct __strip_reference_wrapper > + { + typedef _Tp& __type; + }; + + template + struct __decay_and_strip + { + typedef typename __strip_reference_wrapper< + typename decay<_Tp>::type>::__type __type; + }; + + + + + template + struct enable_if + { }; + + + template + struct enable_if + { typedef _Tp type; }; + + template + using _Require = typename enable_if<__and_<_Cond...>::value>::type; + + + + template + struct conditional + { typedef _Iftrue type; }; + + + template + struct conditional + { typedef _Iffalse type; }; + + + template + struct common_type; + + + + struct __do_common_type_impl + { + template + static __success_type() + : std::declval<_Up>())>::type> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __common_type_impl + : private __do_common_type_impl + { + typedef decltype(_S_test<_Tp, _Up>(0)) type; + }; + + struct __do_member_type_wrapper + { + template + static __success_type _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __member_type_wrapper + : private __do_member_type_wrapper + { + typedef decltype(_S_test<_Tp>(0)) type; + }; + + template + struct __expanded_common_type_wrapper + { + typedef common_type type; + }; + + template + struct __expanded_common_type_wrapper<__failure_type, _Args...> + { typedef __failure_type type; }; + + template<> + struct common_type<> + { }; + + template + struct common_type<_Tp> + : common_type<_Tp, _Tp> + { }; + + template + struct common_type<_Tp, _Up> + : public __common_type_impl<_Tp, _Up>::type + { }; + + template + struct common_type<_Tp, _Up, _Vp...> + : public __expanded_common_type_wrapper>::type, _Vp...>::type + { }; + + template::value> + struct __underlying_type_impl + { + using type = __underlying_type(_Tp); + }; + + template + struct __underlying_type_impl<_Tp, false> + { }; + + + template + struct underlying_type + : public __underlying_type_impl<_Tp> + { }; + + template + struct __declval_protector + { + static const bool __stop = false; + }; + + template + auto declval() noexcept -> decltype(__declval<_Tp>(0)) + { + static_assert(__declval_protector<_Tp>::__stop, + "declval() must not be used!"); + return __declval<_Tp>(0); + } + + + template + using __remove_cvref_t + = typename remove_cv::type>::type; + + + template + class result_of; + + + + + + struct __invoke_memfun_ref { }; + struct __invoke_memfun_deref { }; + struct __invoke_memobj_ref { }; + struct __invoke_memobj_deref { }; + struct __invoke_other { }; + + + template + struct __result_of_success : __success_type<_Tp> + { using __invoke_type = _Tag; }; + + + struct __result_of_memfun_ref_impl + { + template + static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) + ), __invoke_memfun_ref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __result_of_memfun_ref + : private __result_of_memfun_ref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; + }; + + + struct __result_of_memfun_deref_impl + { + template + static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) + ), __invoke_memfun_deref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __result_of_memfun_deref + : private __result_of_memfun_deref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; + }; + + + struct __result_of_memobj_ref_impl + { + template + static __result_of_success().*std::declval<_Fp>() + ), __invoke_memobj_ref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __result_of_memobj_ref + : private __result_of_memobj_ref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; + }; + + + struct __result_of_memobj_deref_impl + { + template + static __result_of_success()).*std::declval<_Fp>() + ), __invoke_memobj_deref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __result_of_memobj_deref + : private __result_of_memobj_deref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; + }; + + template + struct __result_of_memobj; + + template + struct __result_of_memobj<_Res _Class::*, _Arg> + { + typedef __remove_cvref_t<_Arg> _Argval; + typedef _Res _Class::* _MemPtr; + typedef typename conditional<__or_, + is_base_of<_Class, _Argval>>::value, + __result_of_memobj_ref<_MemPtr, _Arg>, + __result_of_memobj_deref<_MemPtr, _Arg> + >::type::type type; + }; + + template + struct __result_of_memfun; + + template + struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> + { + typedef typename remove_reference<_Arg>::type _Argval; + typedef _Res _Class::* _MemPtr; + typedef typename conditional::value, + __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, + __result_of_memfun_deref<_MemPtr, _Arg, _Args...> + >::type::type type; + }; + + + + + + + template> + struct __inv_unwrap + { + using type = _Tp; + }; + + template + struct __inv_unwrap<_Tp, reference_wrapper<_Up>> + { + using type = _Up&; + }; + + template + struct __result_of_impl + { + typedef __failure_type type; + }; + + template + struct __result_of_impl + : public __result_of_memobj::type, + typename __inv_unwrap<_Arg>::type> + { }; + + template + struct __result_of_impl + : public __result_of_memfun::type, + typename __inv_unwrap<_Arg>::type, _Args...> + { }; + + + struct __result_of_other_impl + { + template + static __result_of_success()(std::declval<_Args>()...) + ), __invoke_other> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __result_of_impl + : private __result_of_other_impl + { + typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; + }; + + + template + struct __invoke_result + : public __result_of_impl< + is_member_object_pointer< + typename remove_reference<_Functor>::type + >::value, + is_member_function_pointer< + typename remove_reference<_Functor>::type + >::value, + _Functor, _ArgTypes... + >::type + { }; + + template + struct result_of<_Functor(_ArgTypes...)> + : public __invoke_result<_Functor, _ArgTypes...> + { }; + + + + template::__type)> + using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; + + template + using aligned_union_t = typename aligned_union<_Len, _Types...>::type; + + + template + using decay_t = typename decay<_Tp>::type; + + + template + using enable_if_t = typename enable_if<_Cond, _Tp>::type; + + + template + using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; + + + template + using common_type_t = typename common_type<_Tp...>::type; + + + template + using underlying_type_t = typename underlying_type<_Tp>::type; + + + template + using result_of_t = typename result_of<_Tp>::type; + + + + template + using __enable_if_t = typename enable_if<_Cond, _Tp>::type; + + + template using __void_t = void; + + + + + template using void_t = void; + + + + template class _Op, typename... _Args> + struct __detector + { + using value_t = false_type; + using type = _Default; + }; + + + template class _Op, + typename... _Args> + struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> + { + using value_t = true_type; + using type = _Op<_Args...>; + }; + + + template class _Op, + typename... _Args> + using __detected_or = __detector<_Default, void, _Op, _Args...>; + + + template class _Op, + typename... _Args> + using __detected_or_t + = typename __detected_or<_Default, _Op, _Args...>::type; +# 2461 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + template + struct __is_swappable; + + template + struct __is_nothrow_swappable; + + template + class tuple; + + template + struct __is_tuple_like_impl : false_type + { }; + + template + struct __is_tuple_like_impl> : true_type + { }; + + + template + struct __is_tuple_like + : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type + { }; + + template + inline + typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, + is_move_constructible<_Tp>, + is_move_assignable<_Tp>>::value>::type + swap(_Tp&, _Tp&) + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>::value); + + template + inline + typename enable_if<__is_swappable<_Tp>::value>::type + swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) + noexcept(__is_nothrow_swappable<_Tp>::value); + + namespace __swappable_details { + using std::swap; + + struct __do_is_swappable_impl + { + template(), std::declval<_Tp&>()))> + static true_type __test(int); + + template + static false_type __test(...); + }; + + struct __do_is_nothrow_swappable_impl + { + template + static __bool_constant< + noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) + > __test(int); + + template + static false_type __test(...); + }; + + } + + template + struct __is_swappable_impl + : public __swappable_details::__do_is_swappable_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template + struct __is_nothrow_swappable_impl + : public __swappable_details::__do_is_nothrow_swappable_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template + struct __is_swappable + : public __is_swappable_impl<_Tp>::type + { }; + + template + struct __is_nothrow_swappable + : public __is_nothrow_swappable_impl<_Tp>::type + { }; + + + + + + + template + struct is_swappable + : public __is_swappable_impl<_Tp>::type + { }; + + + template + struct is_nothrow_swappable + : public __is_nothrow_swappable_impl<_Tp>::type + { }; + + + + template + constexpr bool is_swappable_v = + is_swappable<_Tp>::value; + + + template + constexpr bool is_nothrow_swappable_v = + is_nothrow_swappable<_Tp>::value; + + + namespace __swappable_with_details { + using std::swap; + + struct __do_is_swappable_with_impl + { + template(), std::declval<_Up>())), + typename + = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> + static true_type __test(int); + + template + static false_type __test(...); + }; + + struct __do_is_nothrow_swappable_with_impl + { + template + static __bool_constant< + noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) + && + noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) + > __test(int); + + template + static false_type __test(...); + }; + + } + + template + struct __is_swappable_with_impl + : public __swappable_with_details::__do_is_swappable_with_impl + { + typedef decltype(__test<_Tp, _Up>(0)) type; + }; + + + template + struct __is_swappable_with_impl<_Tp&, _Tp&> + : public __swappable_details::__do_is_swappable_impl + { + typedef decltype(__test<_Tp&>(0)) type; + }; + + template + struct __is_nothrow_swappable_with_impl + : public __swappable_with_details::__do_is_nothrow_swappable_with_impl + { + typedef decltype(__test<_Tp, _Up>(0)) type; + }; + + + template + struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> + : public __swappable_details::__do_is_nothrow_swappable_impl + { + typedef decltype(__test<_Tp&>(0)) type; + }; + + + template + struct is_swappable_with + : public __is_swappable_with_impl<_Tp, _Up>::type + { }; + + + template + struct is_nothrow_swappable_with + : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type + { }; + + + + template + constexpr bool is_swappable_with_v = + is_swappable_with<_Tp, _Up>::value; + + + template + constexpr bool is_nothrow_swappable_with_v = + is_nothrow_swappable_with<_Tp, _Up>::value; + + + + + + + + template::value, typename = void> + struct __is_invocable_impl : false_type { }; + + + template + struct __is_invocable_impl<_Result, _Ret, + true, + __void_t> + : true_type + { }; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wctor-dtor-privacy" + + template + struct __is_invocable_impl<_Result, _Ret, + false, + __void_t> + { + private: + + + static typename _Result::type _S_get(); + + template + static void _S_conv(_Tp); + + + template(_S_get()))> + static true_type + _S_test(int); + + template + static false_type + _S_test(...); + + public: + using type = decltype(_S_test<_Ret>(1)); + }; +#pragma GCC diagnostic pop + + template + struct __is_invocable + : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type + { }; + + template + constexpr bool __call_is_nt(__invoke_memfun_ref) + { + using _Up = typename __inv_unwrap<_Tp>::type; + return noexcept((std::declval<_Up>().*std::declval<_Fn>())( + std::declval<_Args>()...)); + } + + template + constexpr bool __call_is_nt(__invoke_memfun_deref) + { + return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( + std::declval<_Args>()...)); + } + + template + constexpr bool __call_is_nt(__invoke_memobj_ref) + { + using _Up = typename __inv_unwrap<_Tp>::type; + return noexcept(std::declval<_Up>().*std::declval<_Fn>()); + } + + template + constexpr bool __call_is_nt(__invoke_memobj_deref) + { + return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); + } + + template + constexpr bool __call_is_nt(__invoke_other) + { + return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); + } + + template + struct __call_is_nothrow + : __bool_constant< + std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) + > + { }; + + template + using __call_is_nothrow_ + = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; + + + template + struct __is_nothrow_invocable + : __and_<__is_invocable<_Fn, _Args...>, + __call_is_nothrow_<_Fn, _Args...>>::type + { }; + + struct __nonesuch { + __nonesuch() = delete; + ~__nonesuch() = delete; + __nonesuch(__nonesuch const&) = delete; + void operator=(__nonesuch const&) = delete; + }; +# 3097 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits" 3 + +} +# 56 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 72 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 3 + template + constexpr _Tp&& + forward(typename std::remove_reference<_Tp>::type& __t) noexcept + { return static_cast<_Tp&&>(__t); } + + + + + + + + template + constexpr _Tp&& + forward(typename std::remove_reference<_Tp>::type&& __t) noexcept + { + static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" + " substituting _Tp is an lvalue reference type"); + return static_cast<_Tp&&>(__t); + } + + + + + + + template + constexpr typename std::remove_reference<_Tp>::type&& + move(_Tp&& __t) noexcept + { return static_cast::type&&>(__t); } + + + template + struct __move_if_noexcept_cond + : public __and_<__not_>, + is_copy_constructible<_Tp>>::type { }; +# 116 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 3 + template + constexpr typename + conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type + move_if_noexcept(_Tp& __x) noexcept + { return std::move(__x); } +# 136 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 3 + template + inline _Tp* + addressof(_Tp& __r) noexcept + { return std::__addressof(__r); } + + + + template + const _Tp* addressof(const _Tp&&) = delete; + + + template + inline _Tp + __exchange(_Tp& __obj, _Up&& __new_val) + { + _Tp __old_val = std::move(__obj); + __obj = std::forward<_Up>(__new_val); + return __old_val; + } +# 176 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h" 3 + template + inline + + typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, + is_move_constructible<_Tp>, + is_move_assignable<_Tp>>::value>::type + swap(_Tp& __a, _Tp& __b) + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>::value) + + + + + { + + + + _Tp __tmp = std::move(__a); + __a = std::move(__b); + __b = std::move(__tmp); + } + + + + + template + inline + + typename enable_if<__is_swappable<_Tp>::value>::type + swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) + noexcept(__is_nothrow_swappable<_Tp>::value) + + + + + { + for (size_t __n = 0; __n < _Nm; ++__n) + swap(__a[__n], __b[__n]); + } + + + +} +# 41 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/nested_exception.h" 2 3 + +extern "C++" { + +namespace std +{ + + + + + + + class nested_exception + { + exception_ptr _M_ptr; + + public: + nested_exception() noexcept : _M_ptr(current_exception()) { } + + nested_exception(const nested_exception&) noexcept = default; + + nested_exception& operator=(const nested_exception&) noexcept = default; + + virtual ~nested_exception() noexcept; + + [[noreturn]] + void + rethrow_nested() const + { + if (_M_ptr) + rethrow_exception(_M_ptr); + std::terminate(); + } + + exception_ptr + nested_ptr() const noexcept + { return _M_ptr; } + }; + + template + struct _Nested_exception : public _Except, public nested_exception + { + explicit _Nested_exception(const _Except& __ex) + : _Except(__ex) + { } + + explicit _Nested_exception(_Except&& __ex) + : _Except(static_cast<_Except&&>(__ex)) + { } + }; + + + + + template + [[noreturn]] + inline void + __throw_with_nested_impl(_Tp&& __t, true_type) + { + using _Up = typename remove_reference<_Tp>::type; + throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; + } + + template + [[noreturn]] + inline void + __throw_with_nested_impl(_Tp&& __t, false_type) + { throw std::forward<_Tp>(__t); } + + + + template + [[noreturn]] + inline void + throw_with_nested(_Tp&& __t) + { + using _Up = typename decay<_Tp>::type; + using _CopyConstructible + = __and_, is_move_constructible<_Up>>; + static_assert(_CopyConstructible::value, + "throw_with_nested argument must be CopyConstructible"); + using __nest = __and_, __bool_constant, + __not_>>; + std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); + } + + + template + using __rethrow_if_nested_cond = typename enable_if< + __and_, + __or_<__not_>, + is_convertible<_Tp*, nested_exception*>>>::value + >::type; + + + template + inline __rethrow_if_nested_cond<_Ex> + __rethrow_if_nested_impl(const _Ex* __ptr) + { + if (auto __ne_ptr = dynamic_cast(__ptr)) + __ne_ptr->rethrow_nested(); + } + + + inline void + __rethrow_if_nested_impl(const void*) + { } + + + template + inline void + rethrow_if_nested(const _Ex& __ex) + { std::__rethrow_if_nested_impl(std::__addressof(__ex)); } + + +} + +} + + + +#pragma GCC visibility pop +# 145 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception" 2 3 +# 41 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 2 3 + +#pragma GCC visibility push(default) + +extern "C++" { + +namespace std +{ + + + + + + + class bad_alloc : public exception + { + public: + bad_alloc() throw() { } + + + bad_alloc(const bad_alloc&) = default; + bad_alloc& operator=(const bad_alloc&) = default; + + + + + virtual ~bad_alloc() throw(); + + + virtual const char* what() const throw(); + }; + + + class bad_array_new_length : public bad_alloc + { + public: + bad_array_new_length() throw() { } + + + + virtual ~bad_array_new_length() throw(); + + + virtual const char* what() const throw(); + }; + + + + + + + struct nothrow_t + { + + explicit nothrow_t() = default; + + }; + + extern const nothrow_t nothrow; + + + + typedef void (*new_handler)(); + + + + new_handler set_new_handler(new_handler) throw(); + + + + new_handler get_new_handler() noexcept; + +} +# 125 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 3 + void* operator new(std::size_t) + __attribute__((__externally_visible__)); + void* operator new[](std::size_t) + __attribute__((__externally_visible__)); +void operator delete(void*) noexcept + __attribute__((__externally_visible__)); +void operator delete[](void*) noexcept + __attribute__((__externally_visible__)); + +void operator delete(void*, std::size_t) noexcept + __attribute__((__externally_visible__)); +void operator delete[](void*, std::size_t) noexcept + __attribute__((__externally_visible__)); + + void* operator new(std::size_t, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__, __malloc__)); + void* operator new[](std::size_t, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__, __malloc__)); +void operator delete(void*, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__)); +void operator delete[](void*, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__)); +# 173 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 3 + inline void* operator new(std::size_t, void* __p) noexcept +{ return __p; } + inline void* operator new[](std::size_t, void* __p) noexcept +{ return __p; } + + +inline void operator delete (void*, void*) noexcept { } +inline void operator delete[](void*, void*) noexcept { } + +} +# 226 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new" 3 +#pragma GCC visibility pop +# 112 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + +# 125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void* operator new(std:: size_t, void*) throw(); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void* operator new[](std:: size_t, void*) throw(); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete(void*, void*) throw(); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete[](void*, void*) throw(); + +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete(void*, std:: size_t) throw(); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete[](void*, std:: size_t) throw(); + + + + +# 1 "/usr/include/stdio.h" 1 3 4 +# 27 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 28 "/usr/include/stdio.h" 2 3 4 + + +# 29 "/usr/include/stdio.h" 3 4 +extern "C" { + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 34 "/usr/include/stdio.h" 2 3 4 + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stdarg.h" 1 3 4 +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stdarg.h" 3 4 +typedef __builtin_va_list __gnuc_va_list; +# 37 "/usr/include/stdio.h" 2 3 4 + + +# 1 "/usr/include/bits/types/__fpos_t.h" 1 3 4 + + + + +# 1 "/usr/include/bits/types/__mbstate_t.h" 1 3 4 +# 13 "/usr/include/bits/types/__mbstate_t.h" 3 4 +typedef struct +{ + int __count; + union + { + unsigned int __wch; + char __wchb[4]; + } __value; +} __mbstate_t; +# 6 "/usr/include/bits/types/__fpos_t.h" 2 3 4 + + + + +typedef struct _G_fpos_t +{ + __off_t __pos; + __mbstate_t __state; +} __fpos_t; +# 40 "/usr/include/stdio.h" 2 3 4 +# 1 "/usr/include/bits/types/__fpos64_t.h" 1 3 4 +# 10 "/usr/include/bits/types/__fpos64_t.h" 3 4 +typedef struct _G_fpos64_t +{ + __off64_t __pos; + __mbstate_t __state; +} __fpos64_t; +# 41 "/usr/include/stdio.h" 2 3 4 +# 1 "/usr/include/bits/types/__FILE.h" 1 3 4 + + + +struct _IO_FILE; +typedef struct _IO_FILE __FILE; +# 42 "/usr/include/stdio.h" 2 3 4 +# 1 "/usr/include/bits/types/FILE.h" 1 3 4 + + + +struct _IO_FILE; + + +typedef struct _IO_FILE FILE; +# 43 "/usr/include/stdio.h" 2 3 4 +# 1 "/usr/include/bits/types/struct_FILE.h" 1 3 4 +# 35 "/usr/include/bits/types/struct_FILE.h" 3 4 +struct _IO_FILE; +struct _IO_marker; +struct _IO_codecvt; +struct _IO_wide_data; + + + + +typedef void _IO_lock_t; + + + + + +struct _IO_FILE +{ + int _flags; + + + char *_IO_read_ptr; + char *_IO_read_end; + char *_IO_read_base; + char *_IO_write_base; + char *_IO_write_ptr; + char *_IO_write_end; + char *_IO_buf_base; + char *_IO_buf_end; + + + char *_IO_save_base; + char *_IO_backup_base; + char *_IO_save_end; + + struct _IO_marker *_markers; + + struct _IO_FILE *_chain; + + int _fileno; + int _flags2; + __off_t _old_offset; + + + unsigned short _cur_column; + signed char _vtable_offset; + char _shortbuf[1]; + + _IO_lock_t *_lock; + + + + + + + + __off64_t _offset; + + struct _IO_codecvt *_codecvt; + struct _IO_wide_data *_wide_data; + struct _IO_FILE *_freeres_list; + void *_freeres_buf; + size_t __pad5; + int _mode; + + char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; +}; +# 44 "/usr/include/stdio.h" 2 3 4 + + +# 1 "/usr/include/bits/types/cookie_io_functions_t.h" 1 3 4 +# 27 "/usr/include/bits/types/cookie_io_functions_t.h" 3 4 +typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, + size_t __nbytes); + + + + + + + +typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, + size_t __nbytes); + + + + + + + +typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); + + +typedef int cookie_close_function_t (void *__cookie); + + + + + + +typedef struct _IO_cookie_io_functions_t +{ + cookie_read_function_t *read; + cookie_write_function_t *write; + cookie_seek_function_t *seek; + cookie_close_function_t *close; +} cookie_io_functions_t; +# 47 "/usr/include/stdio.h" 2 3 4 + + + + + +typedef __gnuc_va_list va_list; +# 63 "/usr/include/stdio.h" 3 4 +typedef __off_t off_t; + + + + + + +typedef __off64_t off64_t; + + + + + + +typedef __ssize_t ssize_t; + + + + + + +typedef __fpos_t fpos_t; + + + + +typedef __fpos64_t fpos64_t; +# 133 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/bits/stdio_lim.h" 1 3 4 +# 134 "/usr/include/stdio.h" 2 3 4 + + + +extern FILE *stdin; +extern FILE *stdout; +extern FILE *stderr; + + + + + + +extern int remove (const char *__filename) throw (); + +extern int rename (const char *__old, const char *__new) throw (); + + + +extern int renameat (int __oldfd, const char *__old, int __newfd, + const char *__new) throw (); +# 164 "/usr/include/stdio.h" 3 4 +extern int renameat2 (int __oldfd, const char *__old, int __newfd, + const char *__new, unsigned int __flags) throw (); + + + + + + + +extern FILE *tmpfile (void) ; +# 183 "/usr/include/stdio.h" 3 4 +extern FILE *tmpfile64 (void) ; + + + +extern char *tmpnam (char *__s) throw () ; + + + + +extern char *tmpnam_r (char *__s) throw () ; +# 204 "/usr/include/stdio.h" 3 4 +extern char *tempnam (const char *__dir, const char *__pfx) + throw () __attribute__ ((__malloc__)) ; + + + + + + + +extern int fclose (FILE *__stream); + + + + +extern int fflush (FILE *__stream); +# 227 "/usr/include/stdio.h" 3 4 +extern int fflush_unlocked (FILE *__stream); +# 237 "/usr/include/stdio.h" 3 4 +extern int fcloseall (void); +# 246 "/usr/include/stdio.h" 3 4 +extern FILE *fopen (const char *__restrict __filename, + const char *__restrict __modes) ; + + + + +extern FILE *freopen (const char *__restrict __filename, + const char *__restrict __modes, + FILE *__restrict __stream) ; +# 270 "/usr/include/stdio.h" 3 4 +extern FILE *fopen64 (const char *__restrict __filename, + const char *__restrict __modes) ; +extern FILE *freopen64 (const char *__restrict __filename, + const char *__restrict __modes, + FILE *__restrict __stream) ; + + + + +extern FILE *fdopen (int __fd, const char *__modes) throw () ; + + + + + +extern FILE *fopencookie (void *__restrict __magic_cookie, + const char *__restrict __modes, + cookie_io_functions_t __io_funcs) throw () ; + + + + +extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) + throw () ; + + + + +extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () ; + + + + + +extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); + + + +extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, + int __modes, size_t __n) throw (); + + + + +extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, + size_t __size) throw (); + + +extern void setlinebuf (FILE *__stream) throw (); + + + + + + + +extern int fprintf (FILE *__restrict __stream, + const char *__restrict __format, ...); + + + + +extern int printf (const char *__restrict __format, ...); + +extern int sprintf (char *__restrict __s, + const char *__restrict __format, ...) throw (); + + + + + +extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg); + + + + +extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); + +extern int vsprintf (char *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) throw (); + + + +extern int snprintf (char *__restrict __s, size_t __maxlen, + const char *__restrict __format, ...) + throw () __attribute__ ((__format__ (__printf__, 3, 4))); + +extern int vsnprintf (char *__restrict __s, size_t __maxlen, + const char *__restrict __format, __gnuc_va_list __arg) + throw () __attribute__ ((__format__ (__printf__, 3, 0))); + + + + + +extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, + __gnuc_va_list __arg) + throw () __attribute__ ((__format__ (__printf__, 2, 0))) ; +extern int __asprintf (char **__restrict __ptr, + const char *__restrict __fmt, ...) + throw () __attribute__ ((__format__ (__printf__, 2, 3))) ; +extern int asprintf (char **__restrict __ptr, + const char *__restrict __fmt, ...) + throw () __attribute__ ((__format__ (__printf__, 2, 3))) ; + + + + +extern int vdprintf (int __fd, const char *__restrict __fmt, + __gnuc_va_list __arg) + __attribute__ ((__format__ (__printf__, 2, 0))); +extern int dprintf (int __fd, const char *__restrict __fmt, ...) + __attribute__ ((__format__ (__printf__, 2, 3))); + + + + + + + +extern int fscanf (FILE *__restrict __stream, + const char *__restrict __format, ...) ; + + + + +extern int scanf (const char *__restrict __format, ...) ; + +extern int sscanf (const char *__restrict __s, + const char *__restrict __format, ...) throw (); +# 434 "/usr/include/stdio.h" 3 4 +extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 2, 0))) ; + + + + + +extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 1, 0))) ; + + +extern int vsscanf (const char *__restrict __s, + const char *__restrict __format, __gnuc_va_list __arg) + throw () __attribute__ ((__format__ (__scanf__, 2, 0))); +# 491 "/usr/include/stdio.h" 3 4 +extern int fgetc (FILE *__stream); +extern int getc (FILE *__stream); + + + + + +extern int getchar (void); + + + + + + +extern int getc_unlocked (FILE *__stream); +extern int getchar_unlocked (void); +# 516 "/usr/include/stdio.h" 3 4 +extern int fgetc_unlocked (FILE *__stream); +# 527 "/usr/include/stdio.h" 3 4 +extern int fputc (int __c, FILE *__stream); +extern int putc (int __c, FILE *__stream); + + + + + +extern int putchar (int __c); +# 543 "/usr/include/stdio.h" 3 4 +extern int fputc_unlocked (int __c, FILE *__stream); + + + + + + + +extern int putc_unlocked (int __c, FILE *__stream); +extern int putchar_unlocked (int __c); + + + + + + +extern int getw (FILE *__stream); + + +extern int putw (int __w, FILE *__stream); + + + + + + + +extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) + ; +# 593 "/usr/include/stdio.h" 3 4 +extern char *fgets_unlocked (char *__restrict __s, int __n, + FILE *__restrict __stream) ; +# 609 "/usr/include/stdio.h" 3 4 +extern __ssize_t __getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) ; +extern __ssize_t getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) ; + + + + + + + +extern __ssize_t getline (char **__restrict __lineptr, + size_t *__restrict __n, + FILE *__restrict __stream) ; + + + + + + + +extern int fputs (const char *__restrict __s, FILE *__restrict __stream); + + + + + +extern int puts (const char *__s); + + + + + + +extern int ungetc (int __c, FILE *__stream); + + + + + + +extern size_t fread (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) ; + + + + +extern size_t fwrite (const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __s); +# 668 "/usr/include/stdio.h" 3 4 +extern int fputs_unlocked (const char *__restrict __s, + FILE *__restrict __stream); +# 679 "/usr/include/stdio.h" 3 4 +extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) ; +extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream); + + + + + + + +extern int fseek (FILE *__stream, long int __off, int __whence); + + + + +extern long int ftell (FILE *__stream) ; + + + + +extern void rewind (FILE *__stream); +# 713 "/usr/include/stdio.h" 3 4 +extern int fseeko (FILE *__stream, __off_t __off, int __whence); + + + + +extern __off_t ftello (FILE *__stream) ; +# 737 "/usr/include/stdio.h" 3 4 +extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); + + + + +extern int fsetpos (FILE *__stream, const fpos_t *__pos); +# 756 "/usr/include/stdio.h" 3 4 +extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); +extern __off64_t ftello64 (FILE *__stream) ; +extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); +extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); + + + +extern void clearerr (FILE *__stream) throw (); + +extern int feof (FILE *__stream) throw () ; + +extern int ferror (FILE *__stream) throw () ; + + + +extern void clearerr_unlocked (FILE *__stream) throw (); +extern int feof_unlocked (FILE *__stream) throw () ; +extern int ferror_unlocked (FILE *__stream) throw () ; + + + + + + + +extern void perror (const char *__s); + + + + + +# 1 "/usr/include/bits/sys_errlist.h" 1 3 4 +# 26 "/usr/include/bits/sys_errlist.h" 3 4 +extern int sys_nerr; +extern const char *const sys_errlist[]; + + +extern int _sys_nerr; +extern const char *const _sys_errlist[]; +# 788 "/usr/include/stdio.h" 2 3 4 + + + + +extern int fileno (FILE *__stream) throw () ; + + + + +extern int fileno_unlocked (FILE *__stream) throw () ; +# 806 "/usr/include/stdio.h" 3 4 +extern FILE *popen (const char *__command, const char *__modes) ; + + + + + +extern int pclose (FILE *__stream); + + + + + +extern char *ctermid (char *__s) throw (); + + + + + +extern char *cuserid (char *__s); + + + + +struct obstack; + + +extern int obstack_printf (struct obstack *__restrict __obstack, + const char *__restrict __format, ...) + throw () __attribute__ ((__format__ (__printf__, 2, 3))); +extern int obstack_vprintf (struct obstack *__restrict __obstack, + const char *__restrict __format, + __gnuc_va_list __args) + throw () __attribute__ ((__format__ (__printf__, 2, 0))); + + + + + + + +extern void flockfile (FILE *__stream) throw (); + + + +extern int ftrylockfile (FILE *__stream) throw () ; + + +extern void funlockfile (FILE *__stream) throw (); +# 864 "/usr/include/stdio.h" 3 4 +extern int __uflow (FILE *); +extern int __overflow (FILE *, int); +# 879 "/usr/include/stdio.h" 3 4 +} +# 137 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 1 3 +# 36 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +# 75 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +# 1 "/usr/include/stdlib.h" 1 3 4 +# 25 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 26 "/usr/include/stdlib.h" 2 3 4 + + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 32 "/usr/include/stdlib.h" 2 3 4 + +extern "C" { + + + + + +# 1 "/usr/include/bits/waitflags.h" 1 3 4 +# 40 "/usr/include/stdlib.h" 2 3 4 +# 1 "/usr/include/bits/waitstatus.h" 1 3 4 +# 41 "/usr/include/stdlib.h" 2 3 4 +# 55 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/bits/floatn.h" 1 3 4 +# 23 "/usr/include/bits/floatn.h" 3 4 +# 1 "/usr/include/bits/long-double.h" 1 3 4 +# 24 "/usr/include/bits/floatn.h" 2 3 4 +# 79 "/usr/include/bits/floatn.h" 3 4 +typedef __ieee128 _Float128; + + +typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__))); +# 120 "/usr/include/bits/floatn.h" 3 4 +# 1 "/usr/include/bits/floatn-common.h" 1 3 4 +# 24 "/usr/include/bits/floatn-common.h" 3 4 +# 1 "/usr/include/bits/long-double.h" 1 3 4 +# 25 "/usr/include/bits/floatn-common.h" 2 3 4 +# 214 "/usr/include/bits/floatn-common.h" 3 4 +typedef float _Float32; +# 251 "/usr/include/bits/floatn-common.h" 3 4 +typedef double _Float64; +# 268 "/usr/include/bits/floatn-common.h" 3 4 +typedef double _Float32x; +# 298 "/usr/include/bits/floatn-common.h" 3 4 +typedef _Float128 _Float64x; +# 121 "/usr/include/bits/floatn.h" 2 3 4 +# 56 "/usr/include/stdlib.h" 2 3 4 + + +typedef struct + { + int quot; + int rem; + } div_t; + + + +typedef struct + { + long int quot; + long int rem; + } ldiv_t; + + + + + +__extension__ typedef struct + { + long long int quot; + long long int rem; + } lldiv_t; +# 97 "/usr/include/stdlib.h" 3 4 +extern size_t __ctype_get_mb_cur_max (void) throw () ; + + + +extern double atof (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern int atoi (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int atol (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + +__extension__ extern long long int atoll (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern double strtod (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern float strtof (const char *__restrict __nptr, + char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))); + +extern long double strtold (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); +# 140 "/usr/include/stdlib.h" 3 4 +extern _Float32 strtof32 (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float64 strtof64 (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float128 strtof128 (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float32x strtof32x (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float64x strtof64x (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); +# 176 "/usr/include/stdlib.h" 3 4 +extern long int strtol (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +extern unsigned long int strtoul (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + +__extension__ +extern long long int strtoq (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +__extension__ +extern unsigned long long int strtouq (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + + +__extension__ +extern long long int strtoll (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +__extension__ +extern unsigned long long int strtoull (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + + +extern int strfromd (char *__dest, size_t __size, const char *__format, + double __f) + throw () __attribute__ ((__nonnull__ (3))); + +extern int strfromf (char *__dest, size_t __size, const char *__format, + float __f) + throw () __attribute__ ((__nonnull__ (3))); + +extern int strfroml (char *__dest, size_t __size, const char *__format, + long double __f) + throw () __attribute__ ((__nonnull__ (3))); +# 232 "/usr/include/stdlib.h" 3 4 +extern int strfromf32 (char *__dest, size_t __size, const char * __format, + _Float32 __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf64 (char *__dest, size_t __size, const char * __format, + _Float64 __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf128 (char *__dest, size_t __size, const char * __format, + _Float128 __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf32x (char *__dest, size_t __size, const char * __format, + _Float32x __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf64x (char *__dest, size_t __size, const char * __format, + _Float64x __f) + throw () __attribute__ ((__nonnull__ (3))); +# 274 "/usr/include/stdlib.h" 3 4 +extern long int strtol_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); + +extern unsigned long int strtoul_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern long long int strtoll_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern unsigned long long int strtoull_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +extern double strtod_l (const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + +extern float strtof_l (const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + +extern long double strtold_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); +# 316 "/usr/include/stdlib.h" 3 4 +extern _Float32 strtof32_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float64 strtof64_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float128 strtof128_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float32x strtof32x_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float64x strtof64x_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); +# 385 "/usr/include/stdlib.h" 3 4 +extern char *l64a (long int __n) throw () ; + + +extern long int a64l (const char *__s) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + +# 1 "/usr/include/sys/types.h" 1 3 4 +# 27 "/usr/include/sys/types.h" 3 4 +extern "C" { + + + + + +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; + + +typedef __loff_t loff_t; + + + + +typedef __ino_t ino_t; + + + + + + +typedef __ino64_t ino64_t; + + + + +typedef __dev_t dev_t; + + + + +typedef __gid_t gid_t; + + + + +typedef __mode_t mode_t; + + + + +typedef __nlink_t nlink_t; + + + + +typedef __uid_t uid_t; +# 103 "/usr/include/sys/types.h" 3 4 +typedef __id_t id_t; +# 114 "/usr/include/sys/types.h" 3 4 +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; + + + + + +typedef __key_t key_t; +# 134 "/usr/include/sys/types.h" 3 4 +typedef __useconds_t useconds_t; + + + +typedef __suseconds_t suseconds_t; + + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 145 "/usr/include/sys/types.h" 2 3 4 + + + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; + + + + +# 1 "/usr/include/bits/stdint-intn.h" 1 3 4 +# 24 "/usr/include/bits/stdint-intn.h" 3 4 +typedef __int8_t int8_t; +typedef __int16_t int16_t; +typedef __int32_t int32_t; +typedef __int64_t int64_t; +# 156 "/usr/include/sys/types.h" 2 3 4 + + +typedef __uint8_t u_int8_t; +typedef __uint16_t u_int16_t; +typedef __uint32_t u_int32_t; +typedef __uint64_t u_int64_t; + + +typedef int register_t __attribute__ ((__mode__ (__word__))); +# 176 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/endian.h" 1 3 4 +# 36 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/bits/endian.h" 1 3 4 +# 37 "/usr/include/endian.h" 2 3 4 +# 60 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/bits/byteswap.h" 1 3 4 +# 33 "/usr/include/bits/byteswap.h" 3 4 +static __inline __uint16_t +__bswap_16 (__uint16_t __bsx) +{ + + return __builtin_bswap16 (__bsx); + + + +} + + + + + + +static __inline __uint32_t +__bswap_32 (__uint32_t __bsx) +{ + + return __builtin_bswap32 (__bsx); + + + +} +# 69 "/usr/include/bits/byteswap.h" 3 4 +__extension__ static __inline __uint64_t +__bswap_64 (__uint64_t __bsx) +{ + + return __builtin_bswap64 (__bsx); + + + +} +# 61 "/usr/include/endian.h" 2 3 4 +# 1 "/usr/include/bits/uintn-identity.h" 1 3 4 +# 32 "/usr/include/bits/uintn-identity.h" 3 4 +static __inline __uint16_t +__uint16_identity (__uint16_t __x) +{ + return __x; +} + +static __inline __uint32_t +__uint32_identity (__uint32_t __x) +{ + return __x; +} + +static __inline __uint64_t +__uint64_identity (__uint64_t __x) +{ + return __x; +} +# 62 "/usr/include/endian.h" 2 3 4 +# 177 "/usr/include/sys/types.h" 2 3 4 + + +# 1 "/usr/include/sys/select.h" 1 3 4 +# 30 "/usr/include/sys/select.h" 3 4 +# 1 "/usr/include/bits/select.h" 1 3 4 +# 31 "/usr/include/sys/select.h" 2 3 4 + + +# 1 "/usr/include/bits/types/sigset_t.h" 1 3 4 + + + +# 1 "/usr/include/bits/types/__sigset_t.h" 1 3 4 + + + + +typedef struct +{ + unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; +} __sigset_t; +# 5 "/usr/include/bits/types/sigset_t.h" 2 3 4 + + +typedef __sigset_t sigset_t; +# 34 "/usr/include/sys/select.h" 2 3 4 +# 49 "/usr/include/sys/select.h" 3 4 +typedef long int __fd_mask; +# 59 "/usr/include/sys/select.h" 3 4 +typedef struct + { + + + + __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; + + + + + + } fd_set; + + + + + + +typedef __fd_mask fd_mask; +# 91 "/usr/include/sys/select.h" 3 4 +extern "C" { +# 101 "/usr/include/sys/select.h" 3 4 +extern int select (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout); +# 113 "/usr/include/sys/select.h" 3 4 +extern int pselect (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + const struct timespec *__restrict __timeout, + const __sigset_t *__restrict __sigmask); +# 126 "/usr/include/sys/select.h" 3 4 +} +# 180 "/usr/include/sys/types.h" 2 3 4 + + + + + +typedef __blksize_t blksize_t; + + + + + + +typedef __blkcnt_t blkcnt_t; + + + +typedef __fsblkcnt_t fsblkcnt_t; + + + +typedef __fsfilcnt_t fsfilcnt_t; +# 219 "/usr/include/sys/types.h" 3 4 +typedef __blkcnt64_t blkcnt64_t; +typedef __fsblkcnt64_t fsblkcnt64_t; +typedef __fsfilcnt64_t fsfilcnt64_t; + + + + + +# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 +# 23 "/usr/include/bits/pthreadtypes.h" 3 4 +# 1 "/usr/include/bits/thread-shared-types.h" 1 3 4 +# 77 "/usr/include/bits/thread-shared-types.h" 3 4 +# 1 "/usr/include/bits/pthreadtypes-arch.h" 1 3 4 +# 22 "/usr/include/bits/pthreadtypes-arch.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 23 "/usr/include/bits/pthreadtypes-arch.h" 2 3 4 +# 51 "/usr/include/bits/pthreadtypes-arch.h" 3 4 +struct __pthread_rwlock_arch_t +{ + unsigned int __readers; + unsigned int __writers; + unsigned int __wrphase_futex; + unsigned int __writers_futex; + unsigned int __pad3; + unsigned int __pad4; + + int __cur_writer; + int __shared; + unsigned char __rwelision; + unsigned char __pad1[7]; + unsigned long int __pad2; + + + unsigned int __flags; +# 79 "/usr/include/bits/pthreadtypes-arch.h" 3 4 +}; +# 78 "/usr/include/bits/thread-shared-types.h" 2 3 4 + + + + +typedef struct __pthread_internal_list +{ + struct __pthread_internal_list *__prev; + struct __pthread_internal_list *__next; +} __pthread_list_t; +# 118 "/usr/include/bits/thread-shared-types.h" 3 4 +struct __pthread_mutex_s +{ + int __lock ; + unsigned int __count; + int __owner; + + unsigned int __nusers; +# 148 "/usr/include/bits/thread-shared-types.h" 3 4 + int __kind; + + + + + + short __spins; short __elision; + __pthread_list_t __list; +# 165 "/usr/include/bits/thread-shared-types.h" 3 4 + +}; + + + + +struct __pthread_cond_s +{ + __extension__ union + { + __extension__ unsigned long long int __wseq; + struct + { + unsigned int __low; + unsigned int __high; + } __wseq32; + }; + __extension__ union + { + __extension__ unsigned long long int __g1_start; + struct + { + unsigned int __low; + unsigned int __high; + } __g1_start32; + }; + unsigned int __g_refs[2] ; + unsigned int __g_size[2]; + unsigned int __g1_orig_size; + unsigned int __wrefs; + unsigned int __g_signals[2]; +}; +# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4 + + + +typedef unsigned long int pthread_t; + + + + +typedef union +{ + char __size[4]; + int __align; +} pthread_mutexattr_t; + + + + +typedef union +{ + char __size[4]; + int __align; +} pthread_condattr_t; + + + +typedef unsigned int pthread_key_t; + + + +typedef int pthread_once_t; + + +union pthread_attr_t +{ + char __size[56]; + long int __align; +}; + +typedef union pthread_attr_t pthread_attr_t; + + + + +typedef union +{ + struct __pthread_mutex_s __data; + char __size[40]; + long int __align; +} pthread_mutex_t; + + +typedef union +{ + struct __pthread_cond_s __data; + char __size[48]; + __extension__ long long int __align; +} pthread_cond_t; + + + + + +typedef union +{ + struct __pthread_rwlock_arch_t __data; + char __size[56]; + long int __align; +} pthread_rwlock_t; + +typedef union +{ + char __size[8]; + long int __align; +} pthread_rwlockattr_t; + + + + + +typedef volatile int pthread_spinlock_t; + + + + +typedef union +{ + char __size[32]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_barrierattr_t; +# 228 "/usr/include/sys/types.h" 2 3 4 + + +} +# 395 "/usr/include/stdlib.h" 2 3 4 + + + + + + +extern long int random (void) throw (); + + +extern void srandom (unsigned int __seed) throw (); + + + + + +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); + + + +extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +struct random_data + { + int32_t *fptr; + int32_t *rptr; + int32_t *state; + int rand_type; + int rand_deg; + int rand_sep; + int32_t *end_ptr; + }; + +extern int random_r (struct random_data *__restrict __buf, + int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) + throw () __attribute__ ((__nonnull__ (2))); + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) + throw () __attribute__ ((__nonnull__ (2, 4))); + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int rand (void) throw (); + +extern void srand (unsigned int __seed) throw (); + + + +extern int rand_r (unsigned int *__seed) throw (); + + + + + + + +extern double drand48 (void) throw (); +extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); + + +extern long int lrand48 (void) throw (); +extern long int nrand48 (unsigned short int __xsubi[3]) + throw () __attribute__ ((__nonnull__ (1))); + + +extern long int mrand48 (void) throw (); +extern long int jrand48 (unsigned short int __xsubi[3]) + throw () __attribute__ ((__nonnull__ (1))); + + +extern void srand48 (long int __seedval) throw (); +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) + throw () __attribute__ ((__nonnull__ (1))); +extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); + + + + + +struct drand48_data + { + unsigned short int __x[3]; + unsigned short int __old_x[3]; + unsigned short int __c; + unsigned short int __init; + __extension__ unsigned long long int __a; + + }; + + +extern int drand48_r (struct drand48_data *__restrict __buffer, + double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + throw () __attribute__ ((__nonnull__ (2))); + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ; + +extern void *calloc (size_t __nmemb, size_t __size) + throw () __attribute__ ((__malloc__)) ; + + + + + + +extern void *realloc (void *__ptr, size_t __size) + throw () __attribute__ ((__warn_unused_result__)); + + + + + + + +extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) + throw () __attribute__ ((__warn_unused_result__)); + + + +extern void free (void *__ptr) throw (); + + +# 1 "/usr/include/alloca.h" 1 3 4 +# 24 "/usr/include/alloca.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 25 "/usr/include/alloca.h" 2 3 4 + +extern "C" { + + + + + +extern void *alloca (size_t __size) throw (); + + + + + +} +# 567 "/usr/include/stdlib.h" 2 3 4 + + + + + +extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ; + + + + +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + throw () __attribute__ ((__nonnull__ (1))) ; + + + + +extern void *aligned_alloc (size_t __alignment, size_t __size) + throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) ; + + + +extern void abort (void) throw () __attribute__ ((__noreturn__)); + + + +extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); + + + + +extern "C++" int at_quick_exit (void (*__func) (void)) + throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); +# 607 "/usr/include/stdlib.h" 3 4 +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) + throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern void exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + + +extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + + +extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + +extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) ; + + + + +extern char *secure_getenv (const char *__name) + throw () __attribute__ ((__nonnull__ (1))) ; + + + + + + +extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern int setenv (const char *__name, const char *__value, int __replace) + throw () __attribute__ ((__nonnull__ (2))); + + +extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))); + + + + + + +extern int clearenv (void) throw (); +# 672 "/usr/include/stdlib.h" 3 4 +extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); +# 685 "/usr/include/stdlib.h" 3 4 +extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 695 "/usr/include/stdlib.h" 3 4 +extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 707 "/usr/include/stdlib.h" 3 4 +extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ; +# 717 "/usr/include/stdlib.h" 3 4 +extern int mkstemps64 (char *__template, int __suffixlen) + __attribute__ ((__nonnull__ (1))) ; +# 728 "/usr/include/stdlib.h" 3 4 +extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ; +# 739 "/usr/include/stdlib.h" 3 4 +extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; +# 749 "/usr/include/stdlib.h" 3 4 +extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; +# 759 "/usr/include/stdlib.h" 3 4 +extern int mkostemps (char *__template, int __suffixlen, int __flags) + __attribute__ ((__nonnull__ (1))) ; +# 771 "/usr/include/stdlib.h" 3 4 +extern int mkostemps64 (char *__template, int __suffixlen, int __flags) + __attribute__ ((__nonnull__ (1))) ; +# 781 "/usr/include/stdlib.h" 3 4 +extern int system (const char *__command) ; + + + + + +extern char *canonicalize_file_name (const char *__name) + throw () __attribute__ ((__nonnull__ (1))) ; +# 797 "/usr/include/stdlib.h" 3 4 +extern char *realpath (const char *__restrict __name, + char *__restrict __resolved) throw () ; + + + + + + +typedef int (*__compar_fn_t) (const void *, const void *); + + +typedef __compar_fn_t comparison_fn_t; + + + +typedef int (*__compar_d_fn_t) (const void *, const void *, void *); + + + + +extern void *bsearch (const void *__key, const void *__base, + size_t __nmemb, size_t __size, __compar_fn_t __compar) + __attribute__ ((__nonnull__ (1, 2, 5))) ; + + + + + + + +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); + +extern void qsort_r (void *__base, size_t __nmemb, size_t __size, + __compar_d_fn_t __compar, void *__arg) + __attribute__ ((__nonnull__ (1, 4))); + + + + +extern int abs (int __x) throw () __attribute__ ((__const__)) ; +extern long int labs (long int __x) throw () __attribute__ ((__const__)) ; + + +__extension__ extern long long int llabs (long long int __x) + throw () __attribute__ ((__const__)) ; + + + + + + +extern div_t div (int __numer, int __denom) + throw () __attribute__ ((__const__)) ; +extern ldiv_t ldiv (long int __numer, long int __denom) + throw () __attribute__ ((__const__)) ; + + +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + throw () __attribute__ ((__const__)) ; +# 869 "/usr/include/stdlib.h" 3 4 +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *gcvt (double __value, int __ndigit, char *__buf) + throw () __attribute__ ((__nonnull__ (3))) ; + + + + +extern char *qecvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + throw () __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qfcvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + throw () __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qgcvt (long double __value, int __ndigit, char *__buf) + throw () __attribute__ ((__nonnull__ (3))) ; + + + + +extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); +extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); + +extern int qecvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + throw () __attribute__ ((__nonnull__ (3, 4, 5))); +extern int qfcvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + throw () __attribute__ ((__nonnull__ (3, 4, 5))); + + + + + +extern int mblen (const char *__s, size_t __n) throw (); + + +extern int mbtowc (wchar_t *__restrict __pwc, + const char *__restrict __s, size_t __n) throw (); + + +extern int wctomb (char *__s, wchar_t __wchar) throw (); + + + +extern size_t mbstowcs (wchar_t *__restrict __pwcs, + const char *__restrict __s, size_t __n) throw (); + +extern size_t wcstombs (char *__restrict __s, + const wchar_t *__restrict __pwcs, size_t __n) + throw (); + + + + + + + +extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) ; +# 954 "/usr/include/stdlib.h" 3 4 +extern int getsubopt (char **__restrict __optionp, + char *const *__restrict __tokens, + char **__restrict __valuep) + throw () __attribute__ ((__nonnull__ (1, 2, 3))) ; + + + + + + + +extern int posix_openpt (int __oflag) ; + + + + + + + +extern int grantpt (int __fd) throw (); + + + +extern int unlockpt (int __fd) throw (); + + + + +extern char *ptsname (int __fd) throw () ; + + + + + + +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) + throw () __attribute__ ((__nonnull__ (2))); + + +extern int getpt (void); + + + + + + +extern int getloadavg (double __loadavg[], int __nelem) + throw () __attribute__ ((__nonnull__ (1))); +# 1010 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/bits/stdlib-float.h" 1 3 4 +# 1011 "/usr/include/stdlib.h" 2 3 4 +# 1020 "/usr/include/stdlib.h" 3 4 +} +# 76 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 2 3 + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 1 3 +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 + +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 +# 46 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 +extern "C++" +{ +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + using ::abs; + + + inline long + abs(long __i) { return __builtin_labs(__i); } + + + + inline long long + abs(long long __x) { return __builtin_llabs (__x); } +# 70 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 + inline constexpr double + abs(double __x) + { return __builtin_fabs(__x); } + + inline constexpr float + abs(float __x) + { return __builtin_fabsf(__x); } + + inline constexpr long double + abs(long double __x) + { return __builtin_fabsl(__x); } + + + + inline constexpr __int128 + abs(__int128 __x) { return __x >= 0 ? __x : -__x; } +# 101 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 + inline constexpr + __ieee128 + abs(__ieee128 __x) + { return __x < 0 ? -__x : __x; } + + + +} +} +# 78 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 2 3 +# 121 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +extern "C++" +{ +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + using ::div_t; + using ::ldiv_t; + + using ::abort; + + + + using ::atexit; + + + using ::at_quick_exit; + + + using ::atof; + using ::atoi; + using ::atol; + using ::bsearch; + using ::calloc; + using ::div; + using ::exit; + using ::free; + using ::getenv; + using ::labs; + using ::ldiv; + using ::malloc; + + using ::mblen; + using ::mbstowcs; + using ::mbtowc; + + using ::qsort; + + + using ::quick_exit; + + + using ::rand; + using ::realloc; + using ::srand; + using ::strtod; + using ::strtol; + using ::strtoul; + using ::system; + + using ::wcstombs; + using ::wctomb; + + + + inline ldiv_t + div(long __i, long __j) { return ldiv(__i, __j); } + + + + +} +# 195 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + using ::lldiv_t; + + + + + + using ::_Exit; + + + + using ::llabs; + + inline lldiv_t + div(long long __n, long long __d) + { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } + + using ::lldiv; +# 227 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 + using ::atoll; + using ::strtoll; + using ::strtoull; + + using ::strtof; + using ::strtold; + + +} + +namespace std +{ + + using ::__gnu_cxx::lldiv_t; + + using ::__gnu_cxx::_Exit; + + using ::__gnu_cxx::llabs; + using ::__gnu_cxx::div; + using ::__gnu_cxx::lldiv; + + using ::__gnu_cxx::atoll; + using ::__gnu_cxx::strtof; + using ::__gnu_cxx::strtoll; + using ::__gnu_cxx::strtoull; + using ::__gnu_cxx::strtold; +} + + + +} +# 37 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 2 3 + +using std::abort; +using std::atexit; +using std::exit; + + + using std::at_quick_exit; + + + using std::quick_exit; + + + + +using std::div_t; +using std::ldiv_t; + +using std::abs; +using std::atof; +using std::atoi; +using std::atol; +using std::bsearch; +using std::calloc; +using std::div; +using std::free; +using std::getenv; +using std::labs; +using std::ldiv; +using std::malloc; + +using std::mblen; +using std::mbstowcs; +using std::mbtowc; + +using std::qsort; +using std::rand; +using std::realloc; +using std::srand; +using std::strtod; +using std::strtol; +using std::strtoul; +using std::system; + +using std::wcstombs; +using std::wctomb; +# 138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 + + + + + + +# 143 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern "C" +{ +extern + + + + + + + +__attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) int printf(const char*, ...); + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void* malloc(size_t) +# 157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 + throw () +# 157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void free(void*) +# 158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 + throw () +# 158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; +# 168 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +} + + + + + +# 1 "/usr/include/assert.h" 1 3 4 +# 64 "/usr/include/assert.h" 3 4 + +# 64 "/usr/include/assert.h" 3 4 +extern "C" { + + +extern void __assert_fail (const char *__assertion, const char *__file, + unsigned int __line, const char *__function) + throw () __attribute__ ((__noreturn__)); + + +extern void __assert_perror_fail (int __errnum, const char *__file, + unsigned int __line, const char *__function) + throw () __attribute__ ((__noreturn__)); + + + + +extern void __assert (const char *__assertion, const char *__file, int __line) + throw () __attribute__ ((__noreturn__)); + + +} +# 175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 + + + +# 177 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern "C" +{ +# 205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void __assert_fail( + const char *, const char *, unsigned int, const char *) + +# 207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 + throw () +# 207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; + + + + +} +# 267 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void* operator new(std:: size_t) ; +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void* operator new[](std:: size_t) ; +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete(void*) throw(); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete[](void*) throw(); + +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete(void*, std:: size_t) throw(); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void operator delete[](void*, std:: size_t) throw(); +# 303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 1 +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 + + + + + + + +extern "C" +{ +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) int abs(int a) +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) long int labs(long int a) +# 221 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 221 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) long long int llabs(long long int a) +# 229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fabs(double x) +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fabsf(float x) +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 332 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int min(const int a, const int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned int umin(const unsigned int a, const unsigned int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llmin(const long long int a, const long long int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned long long int ullmin(const unsigned long long int a, const unsigned long long int b); +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fminf(float x, float y) +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fmin(double x, double y) +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int max(const int a, const int b); + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned int umax(const unsigned int a, const unsigned int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llmax(const long long int a, const long long int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned long long int ullmax(const unsigned long long int a, const unsigned long long int b); +# 450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fmaxf(float x, float y) +# 450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fmax(double, double) +# 470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sin(double x) +# 514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cos(double x) +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincos(double x, double *sptr, double *cptr) +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 582 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincosf(float x, float *sptr, float *cptr) +# 582 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 582 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double tan(double x) +# 627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sqrt(double x) +# 696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 768 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double rsqrt(double x); +# 838 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float rsqrtf(float x); +# 894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log2(double x) +# 894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double exp2(double x) +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1024 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float exp2f(float x) +# 1024 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1024 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1091 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double exp10(double x) +# 1091 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1091 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float exp10f(float x) +# 1154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double expm1(double x) +# 1247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float expm1f(float x) +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float log2f(float x) +# 1395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log10(double x) +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log(double x) +# 1519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1615 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log1p(double x) +# 1615 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1615 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float log1pf(float x) +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1778 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double floor(double x) +# 1778 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1778 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double exp(double x) +# 1857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cosh(double x) +# 1898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sinh(double x) +# 1948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1998 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double tanh(double x) +# 1998 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1998 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2053 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double acosh(double x) +# 2053 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2053 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float acoshf(float x) +# 2111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double asinh(double x) +# 2164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float asinhf(float x) +# 2217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double atanh(double x) +# 2271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float atanhf(float x) +# 2325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double ldexp(double x, int exp) +# 2374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float ldexpf(float x, int exp) +# 2420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double logb(double x) +# 2472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float logbf(float x) +# 2527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int ilogb(double x) +# 2567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int ilogbf(float x) +# 2607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double scalbn(double x, int n) +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float scalbnf(float x, int n) +# 2759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2835 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double scalbln(double x, long int n) +# 2835 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2835 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float scalblnf(float x, long int n) +# 2911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2988 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double frexp(double x, int *nptr) +# 2988 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2988 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float frexpf(float x, int *nptr) +# 3062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double round(double x) +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float roundf(float x) +# 3169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lround(double x) +# 3187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lroundf(float x) +# 3205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llround(double x) +# 3223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llroundf(float x) +# 3241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double rint(double x) +# 3315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float rintf(float x) +# 3369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lrint(double x) +# 3386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lrintf(float x) +# 3403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llrint(double x) +# 3420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llrintf(float x) +# 3437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double nearbyint(double x) +# 3490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float nearbyintf(float x) +# 3543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double ceil(double x) +# 3605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double trunc(double x) +# 3655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float truncf(float x) +# 3708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fdim(double x, double y) +# 3734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fdimf(float x, float y) +# 3760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4060 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double atan2(double y, double x) +# 4060 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4060 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double atan(double x) +# 4131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double acos(double x) +# 4154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double asin(double x) +# 4205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double hypot(double x, double y) +# 4273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rhypot(double x, double y) +# 4328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float hypotf(float x, float y) +# 4396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rhypotf(float x, float y) +# 4451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double norm3d(double a, double b, double c) +# 4495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rnorm3d(double a, double b, double c) +# 4546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4595 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double norm4d(double a, double b, double c, double d) +# 4595 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4595 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4651 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rnorm4d(double a, double b, double c, double d) +# 4651 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4651 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C++" __attribute__((device)) __attribute__((device_builtin)) double norm(int dim, double const * p) +# 4708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4772 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rnorm(int dim, double const * p) +# 4772 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4772 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4837 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rnormf(int dim, float const * p) +# 4837 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4837 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C++" __attribute__((device)) __attribute__((device_builtin)) float normf(int dim, float const * p) +# 4894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float norm3df(float a, float b, float c) +# 4939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rnorm3df(float a, float b, float c) +# 4990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float norm4df(float a, float b, float c, float d) +# 5039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5095 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rnorm4df(float a, float b, float c, float d) +# 5095 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5095 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cbrt(double x) +# 5182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float cbrtf(float x) +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5323 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double rcbrt(double x); +# 5373 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float rcbrtf(float x); +# 5433 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sinpi(double x); +# 5493 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sinpif(float x); +# 5545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cospi(double x); +# 5597 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float cospif(float x); +# 5627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincospi(double x, double *sptr, double *cptr); +# 5657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincospif(float x, float *sptr, float *cptr); +# 5990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double pow(double x, double y) +# 5990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6046 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double modf(double x, double *iptr) +# 6046 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6046 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fmod(double x, double y) +# 6105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double remainder(double x, double y) +# 6201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float remainderf(float x, float y) +# 6300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double remquo(double x, double y, int *quo) +# 6372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float remquof(float x, float y, int *quo) +# 6444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double j0(double x) +# 6485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float j0f(float x) +# 6527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6596 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double j1(double x) +# 6596 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6596 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float j1f(float x) +# 6665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double jn(int n, double x) +# 6708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6751 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float jnf(int n, float x) +# 6751 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6751 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double y0(double x) +# 6812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float y0f(float x) +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6934 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double y1(double x) +# 6934 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6934 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float y1f(float x) +# 6995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double yn(int n, double x) +# 7058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float ynf(int n, float x) +# 7121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double cyl_bessel_i0(double x) +# 7148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float cyl_bessel_i0f(float x) +# 7174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double cyl_bessel_i1(double x) +# 7201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float cyl_bessel_i1f(float x) +# 7227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erf(double x) +# 7310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erff(float x) +# 7392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7464 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfinv(double x); +# 7529 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfinvf(float x); +# 7568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfc(double x) +# 7568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7606 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfcf(float x) +# 7606 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7606 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double lgamma(double x) +# 7723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfcinv(double x); +# 7840 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfcinvf(float x); +# 7908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double normcdfinv(double x); +# 7976 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float normcdfinvf(float x); +# 8019 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double normcdf(double x); +# 8062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float normcdff(float x); +# 8126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfcx(double x); +# 8190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfcxf(float x); +# 8309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float lgammaf(float x) +# 8309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double tgamma(double x) +# 8407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8505 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float tgammaf(float x) +# 8505 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8505 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double copysign(double x, double y) +# 8518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float copysignf(float x, float y) +# 8531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double nextafter(double x, double y) +# 8550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float nextafterf(float x, float y) +# 8569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8585 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double nan(const char *tagp) +# 8585 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8585 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float nanf(const char *tagp) +# 8601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isinff(float) +# 8608 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8608 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isnanf(float) +# 8609 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8609 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __finite(double) +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __finitef(float) +# 8620 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8620 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __signbit(double) +# 8621 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8621 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isnan(double) +# 8622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isinf(double) +# 8623 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8623 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __signbitf(float) +# 8626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fma(double x, double y, double z) +# 8785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8943 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fmaf(float x, float y, float z) +# 8943 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8943 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8954 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __signbitl(long double) +# 8954 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8954 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __finitel(long double) +# 8960 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8960 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isinfl(long double) +# 8961 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8961 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isnanl(long double) +# 8962 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8962 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9012 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float acosf(float x) +# 9012 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9012 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9071 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float asinf(float x) +# 9071 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9071 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float atanf(float x) +# 9151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float atan2f(float y, float x) +# 9448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float cosf(float x) +# 9482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sinf(float x) +# 9524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float tanf(float x) +# 9566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float coshf(float x) +# 9607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sinhf(float x) +# 9657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9707 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float tanhf(float x) +# 9707 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9707 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float logf(float x) +# 9759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float expf(float x) +# 9839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9891 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float log10f(float x) +# 9891 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9891 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9946 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float modff(float x, float *iptr) +# 9946 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9946 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float powf(float x, float y) +# 10276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sqrtf(float x) +# 10345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float ceilf(float x) +# 10404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float floorf(float x) +# 10465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fmodf(float x, float y) +# 10523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10538 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +} + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h" 1 3 +# 36 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h" 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 1 3 +# 35 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + +# 36 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +# 67 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + +# 67 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +extern "C++" { + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + struct __true_type { }; + struct __false_type { }; + + template + struct __truth_type + { typedef __false_type __type; }; + + template<> + struct __truth_type + { typedef __true_type __type; }; + + + + template + struct __traitor + { + enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; + typedef typename __truth_type<__value>::__type __type; + }; + + + template + struct __are_same + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __are_same<_Tp, _Tp> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template + struct __is_void + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_void + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_integer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + + + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# 184 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# 270 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +template<> struct __is_integer<__int128> { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; +# 287 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + template + struct __is_floating + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_pointer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __is_pointer<_Tp*> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_arithmetic + : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > + { }; + + + + + template + struct __is_scalar + : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > + { }; + + + + + template + struct __is_char + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template + struct __is_byte + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# 417 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + template + struct __is_move_iterator + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + + template + inline _Iterator + __miter_base(_Iterator __it) + { return __it; } + + +} +} +# 43 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h" 1 3 +# 32 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h" 3 + +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h" 3 + + + + +extern "C++" { + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + template + struct __enable_if + { }; + + template + struct __enable_if + { typedef _Tp __type; }; + + + + template + struct __conditional_type + { typedef _Iftrue __type; }; + + template + struct __conditional_type + { typedef _Iffalse __type; }; + + + + template + struct __add_unsigned + { + private: + typedef __enable_if::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __add_unsigned + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned + { typedef unsigned short __type; }; + + template<> + struct __add_unsigned + { typedef unsigned int __type; }; + + template<> + struct __add_unsigned + { typedef unsigned long __type; }; + + template<> + struct __add_unsigned + { typedef unsigned long long __type; }; + + + template<> + struct __add_unsigned; + + template<> + struct __add_unsigned; + + + + template + struct __remove_unsigned + { + private: + typedef __enable_if::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __remove_unsigned + { typedef signed char __type; }; + + template<> + struct __remove_unsigned + { typedef signed char __type; }; + + template<> + struct __remove_unsigned + { typedef short __type; }; + + template<> + struct __remove_unsigned + { typedef int __type; }; + + template<> + struct __remove_unsigned + { typedef long __type; }; + + template<> + struct __remove_unsigned + { typedef long long __type; }; + + + template<> + struct __remove_unsigned; + + template<> + struct __remove_unsigned; + + + + template + inline bool + __is_null_pointer(_Type* __ptr) + { return __ptr == 0; } + + template + inline bool + __is_null_pointer(_Type) + { return false; } + + + inline bool + __is_null_pointer(std::nullptr_t) + { return true; } + + + + template::__value> + struct __promote + { typedef double __type; }; + + + + + template + struct __promote<_Tp, false> + { }; + + template<> + struct __promote + { typedef long double __type; }; + + template<> + struct __promote + { typedef double __type; }; + + template<> + struct __promote + { typedef float __type; }; + + template::__type, + typename _Up2 = typename __promote<_Up>::__type> + struct __promote_2 + { + typedef __typeof__(_Tp2() + _Up2()) __type; + }; + + template::__type, + typename _Up2 = typename __promote<_Up>::__type, + typename _Vp2 = typename __promote<_Vp>::__type> + struct __promote_3 + { + typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; + }; + + template::__type, + typename _Up2 = typename __promote<_Up>::__type, + typename _Vp2 = typename __promote<_Vp>::__type, + typename _Wp2 = typename __promote<_Wp>::__type> + struct __promote_4 + { + typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; + }; + + +} +} +# 44 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 + +# 1 "/usr/include/math.h" 1 3 4 +# 27 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 28 "/usr/include/math.h" 2 3 4 + + + + + + +extern "C" { + + + + + +# 1 "/usr/include/bits/math-vector.h" 1 3 4 +# 27 "/usr/include/bits/math-vector.h" 3 4 +# 1 "/usr/include/bits/libm-simd-decl-stubs.h" 1 3 4 +# 27 "/usr/include/bits/math-vector.h" 2 3 4 +# 41 "/usr/include/math.h" 2 3 4 +# 138 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/flt-eval-method.h" 1 3 4 +# 139 "/usr/include/math.h" 2 3 4 +# 149 "/usr/include/math.h" 3 4 +typedef float float_t; +typedef double double_t; +# 190 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/fp-logb.h" 1 3 4 +# 191 "/usr/include/math.h" 2 3 4 +# 233 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/fp-fast.h" 1 3 4 +# 234 "/usr/include/math.h" 2 3 4 + + + +enum + { + FP_INT_UPWARD = + + 0, + FP_INT_DOWNWARD = + + 1, + FP_INT_TOWARDZERO = + + 2, + FP_INT_TONEARESTFROMZERO = + + 3, + FP_INT_TONEAREST = + + 4, + }; +# 289 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassify (double __value) throw () + __attribute__ ((__const__)); + + +extern int __signbit (double __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinf (double __value) throw () __attribute__ ((__const__)); + + +extern int __finite (double __value) throw () __attribute__ ((__const__)); + + +extern int __isnan (double __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsig (double __x, double __y) throw (); + + +extern int __issignaling (double __value) throw () + __attribute__ ((__const__)); +# 290 "/usr/include/math.h" 2 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern double acos (double __x) throw (); extern double __acos (double __x) throw (); + +extern double asin (double __x) throw (); extern double __asin (double __x) throw (); + +extern double atan (double __x) throw (); extern double __atan (double __x) throw (); + +extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); + + + extern double cos (double __x) throw (); extern double __cos (double __x) throw (); + + extern double sin (double __x) throw (); extern double __sin (double __x) throw (); + +extern double tan (double __x) throw (); extern double __tan (double __x) throw (); + + + + +extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); + +extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); + +extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); + + + + extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw () + ; + + + + +extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); + +extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); + +extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); + + + + + + extern double exp (double __x) throw (); extern double __exp (double __x) throw (); + + +extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); + + +extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); + + + extern double log (double __x) throw (); extern double __log (double __x) throw (); + + +extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); + + +extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); + + + + +extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); + + +extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); + + +extern double logb (double __x) throw (); extern double __logb (double __x) throw (); + + + + +extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); + + +extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); + + + + + + + extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); + + +extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); + + + +extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); + + + + +extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); + + + + + + +extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); + + +extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); + + +extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); + + +extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); +# 182 "/usr/include/bits/mathcalls.h" 3 4 +extern int finite (double __value) throw () __attribute__ ((__const__)); + + +extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); + + + +extern double significand (double __x) throw (); extern double __significand (double __x) throw (); + + + + + + +extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); + + + + +extern double nan (const char *__tagb) throw (); extern double __nan (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern double j0 (double) throw (); extern double __j0 (double) throw (); +extern double j1 (double) throw (); extern double __j1 (double) throw (); +extern double jn (int, double) throw (); extern double __jn (int, double) throw (); +extern double y0 (double) throw (); extern double __y0 (double) throw (); +extern double y1 (double) throw (); extern double __y1 (double) throw (); +extern double yn (int, double) throw (); extern double __yn (int, double) throw (); + + + + + +extern double erf (double) throw (); extern double __erf (double) throw (); +extern double erfc (double) throw (); extern double __erfc (double) throw (); +extern double lgamma (double) throw (); extern double __lgamma (double) throw (); + + + + +extern double tgamma (double) throw (); extern double __tgamma (double) throw (); + + + + + +extern double gamma (double) throw (); extern double __gamma (double) throw (); + + + + + + + +extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); + + + + + + +extern double rint (double __x) throw (); extern double __rint (double __x) throw (); + + +extern double nextafter (double __x, double __y) throw (); extern double __nextafter (double __x, double __y) throw (); + +extern double nexttoward (double __x, long double __y) throw (); extern double __nexttoward (double __x, long double __y) throw (); + + + + +extern double nextdown (double __x) throw (); extern double __nextdown (double __x) throw (); + +extern double nextup (double __x) throw (); extern double __nextup (double __x) throw (); + + + +extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); + + + +extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); + + + +extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); + + + + +extern long int llogb (double __x) throw (); extern long int __llogb (double __x) throw (); + + + + +extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); + + + +extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); + + + +extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); + + + +extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); + + + + +extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); + + + + + + +extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); +__extension__ +extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); + + + +extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); +__extension__ +extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); + + + +extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); + + +extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); + + + + +extern double roundeven (double __x) throw () __attribute__ ((__const__)); extern double __roundeven (double __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfp (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) throw () + ; + + +extern double fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern double fminmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern int totalorder (double __x, double __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermag (double __x, double __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalize (double *__cx, const double *__x) throw (); + + +extern double getpayload (const double *__x) throw (); extern double __getpayload (const double *__x) throw (); + + +extern int setpayload (double *__x, double __payload) throw (); + + +extern int setpayloadsig (double *__x, double __payload) throw (); + + + + + + + +extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); +# 291 "/usr/include/math.h" 2 3 4 +# 306 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassifyf (float __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitf (float __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinff (float __value) throw () __attribute__ ((__const__)); + + +extern int __finitef (float __value) throw () __attribute__ ((__const__)); + + +extern int __isnanf (float __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsigf (float __x, float __y) throw (); + + +extern int __issignalingf (float __value) throw () + __attribute__ ((__const__)); +# 307 "/usr/include/math.h" 2 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); + +extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); + +extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); + +extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); + + + extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); + + extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); + +extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); + + + + +extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); + +extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); + +extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); + + + + extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw () + ; + + + + +extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); + +extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); + +extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); + + + + + + extern float expf (float __x) throw (); extern float __expf (float __x) throw (); + + +extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); + + +extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); + + + extern float logf (float __x) throw (); extern float __logf (float __x) throw (); + + +extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); + + +extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); + + + + +extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); + + +extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); + + +extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); + + + + +extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); + + +extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); + + + + + + + extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); + + +extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); + + + +extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); + + + + +extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); + + + + + + +extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); + + +extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); + + +extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); + + +extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); +# 177 "/usr/include/bits/mathcalls.h" 3 4 +extern int isinff (float __value) throw () __attribute__ ((__const__)); + + + + +extern int finitef (float __value) throw () __attribute__ ((__const__)); + + +extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); + + + +extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); + + + + + + +extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); + + + + +extern float nanf (const char *__tagb) throw (); extern float __nanf (const char *__tagb) throw (); +# 211 "/usr/include/bits/mathcalls.h" 3 4 +extern int isnanf (float __value) throw () __attribute__ ((__const__)); + + + + + +extern float j0f (float) throw (); extern float __j0f (float) throw (); +extern float j1f (float) throw (); extern float __j1f (float) throw (); +extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); +extern float y0f (float) throw (); extern float __y0f (float) throw (); +extern float y1f (float) throw (); extern float __y1f (float) throw (); +extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); + + + + + +extern float erff (float) throw (); extern float __erff (float) throw (); +extern float erfcf (float) throw (); extern float __erfcf (float) throw (); +extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); + + + + +extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); + + + + + +extern float gammaf (float) throw (); extern float __gammaf (float) throw (); + + + + + + + +extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); + + + + + + +extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); + + +extern float nextafterf (float __x, float __y) throw (); extern float __nextafterf (float __x, float __y) throw (); + +extern float nexttowardf (float __x, long double __y) throw (); extern float __nexttowardf (float __x, long double __y) throw (); + + + + +extern float nextdownf (float __x) throw (); extern float __nextdownf (float __x) throw (); + +extern float nextupf (float __x) throw (); extern float __nextupf (float __x) throw (); + + + +extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); + + + +extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); + + + +extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); + + + + +extern long int llogbf (float __x) throw (); extern long int __llogbf (float __x) throw (); + + + + +extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); + + + +extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); + + + +extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); + + + +extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); + + + + +extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); + + + + + + +extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); +__extension__ +extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); + + + +extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); +__extension__ +extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); + + + +extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); + + +extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); + + + + +extern float roundevenf (float __x) throw () __attribute__ ((__const__)); extern float __roundevenf (float __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) throw () + ; + + +extern float fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern float fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf (float __x, float __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf (float __x, float __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef (float *__cx, const float *__x) throw (); + + +extern float getpayloadf (const float *__x) throw (); extern float __getpayloadf (const float *__x) throw (); + + +extern int setpayloadf (float *__x, float __payload) throw (); + + +extern int setpayloadsigf (float *__x, float __payload) throw (); + + + + + + + +extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); +# 308 "/usr/include/math.h" 2 3 4 +# 349 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassifyl (long double __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitl (long double __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); + + +extern int __finitel (long double __value) throw () __attribute__ ((__const__)); + + +extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsigl (long double __x, long double __y) throw (); + + +extern int __issignalingl (long double __value) throw () + __attribute__ ((__const__)); +# 350 "/usr/include/math.h" 2 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); + +extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); + +extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); + +extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); + + + extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); + + extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); + +extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); + + + + +extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); + +extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); + +extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); + + + + extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw () + ; + + + + +extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); + +extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); + +extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); + + + + + + extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); + + +extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); + + +extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); + + + extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); + + +extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); + + +extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); + + + + +extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); + + +extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); + + +extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); + + + + +extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); + + +extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); + + + + + + + extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); + + +extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); + + + +extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); + + + + +extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); + + + + + + +extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); + + +extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); + + +extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); + + +extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); +# 177 "/usr/include/bits/mathcalls.h" 3 4 +extern int isinfl (long double __value) throw () __attribute__ ((__const__)); + + + + +extern int finitel (long double __value) throw () __attribute__ ((__const__)); + + +extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); + + + +extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); + + + + + + +extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + + + +extern long double nanl (const char *__tagb) throw (); extern long double __nanl (const char *__tagb) throw (); +# 211 "/usr/include/bits/mathcalls.h" 3 4 +extern int isnanl (long double __value) throw () __attribute__ ((__const__)); + + + + + +extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); +extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); +extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); +extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); +extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); +extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); + + + + + +extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); +extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); +extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); + + + + +extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); + + + + + +extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); + + + + + + + +extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); + + + + + + +extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); + + +extern long double nextafterl (long double __x, long double __y) throw (); extern long double __nextafterl (long double __x, long double __y) throw (); + +extern long double nexttowardl (long double __x, long double __y) throw (); extern long double __nexttowardl (long double __x, long double __y) throw (); + + + + +extern long double nextdownl (long double __x) throw (); extern long double __nextdownl (long double __x) throw (); + +extern long double nextupl (long double __x) throw (); extern long double __nextupl (long double __x) throw (); + + + +extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); + + + +extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); + + + +extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); + + + + +extern long int llogbl (long double __x) throw (); extern long int __llogbl (long double __x) throw (); + + + + +extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); + + + +extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); + + + +extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); + + + +extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); + + + + +extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw (); + + + + + + +extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); +__extension__ +extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); + + + +extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); +__extension__ +extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); + + + +extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); + + +extern long double fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern long double fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw (); + + + + +extern long double roundevenl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundevenl (long double __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) throw () + ; + + +extern long double fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern long double fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern int totalorderl (long double __x, long double __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagl (long double __x, long double __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizel (long double *__cx, const long double *__x) throw (); + + +extern long double getpayloadl (const long double *__x) throw (); extern long double __getpayloadl (const long double *__x) throw (); + + +extern int setpayloadl (long double *__x, long double __payload) throw (); + + +extern int setpayloadsigl (long double *__x, long double __payload) throw (); + + + + + + + +extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); +# 351 "/usr/include/math.h" 2 3 4 +# 389 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 acosf32 (_Float32 __x) throw (); extern _Float32 __acosf32 (_Float32 __x) throw (); + +extern _Float32 asinf32 (_Float32 __x) throw (); extern _Float32 __asinf32 (_Float32 __x) throw (); + +extern _Float32 atanf32 (_Float32 __x) throw (); extern _Float32 __atanf32 (_Float32 __x) throw (); + +extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) throw (); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) throw (); + + + extern _Float32 cosf32 (_Float32 __x) throw (); extern _Float32 __cosf32 (_Float32 __x) throw (); + + extern _Float32 sinf32 (_Float32 __x) throw (); extern _Float32 __sinf32 (_Float32 __x) throw (); + +extern _Float32 tanf32 (_Float32 __x) throw (); extern _Float32 __tanf32 (_Float32 __x) throw (); + + + + +extern _Float32 coshf32 (_Float32 __x) throw (); extern _Float32 __coshf32 (_Float32 __x) throw (); + +extern _Float32 sinhf32 (_Float32 __x) throw (); extern _Float32 __sinhf32 (_Float32 __x) throw (); + +extern _Float32 tanhf32 (_Float32 __x) throw (); extern _Float32 __tanhf32 (_Float32 __x) throw (); + + + + extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw (); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw () + ; + + + + +extern _Float32 acoshf32 (_Float32 __x) throw (); extern _Float32 __acoshf32 (_Float32 __x) throw (); + +extern _Float32 asinhf32 (_Float32 __x) throw (); extern _Float32 __asinhf32 (_Float32 __x) throw (); + +extern _Float32 atanhf32 (_Float32 __x) throw (); extern _Float32 __atanhf32 (_Float32 __x) throw (); + + + + + + extern _Float32 expf32 (_Float32 __x) throw (); extern _Float32 __expf32 (_Float32 __x) throw (); + + +extern _Float32 frexpf32 (_Float32 __x, int *__exponent) throw (); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) throw (); + + +extern _Float32 ldexpf32 (_Float32 __x, int __exponent) throw (); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) throw (); + + + extern _Float32 logf32 (_Float32 __x) throw (); extern _Float32 __logf32 (_Float32 __x) throw (); + + +extern _Float32 log10f32 (_Float32 __x) throw (); extern _Float32 __log10f32 (_Float32 __x) throw (); + + +extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) throw (); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float32 exp10f32 (_Float32 __x) throw (); extern _Float32 __exp10f32 (_Float32 __x) throw (); + + + + +extern _Float32 expm1f32 (_Float32 __x) throw (); extern _Float32 __expm1f32 (_Float32 __x) throw (); + + +extern _Float32 log1pf32 (_Float32 __x) throw (); extern _Float32 __log1pf32 (_Float32 __x) throw (); + + +extern _Float32 logbf32 (_Float32 __x) throw (); extern _Float32 __logbf32 (_Float32 __x) throw (); + + + + +extern _Float32 exp2f32 (_Float32 __x) throw (); extern _Float32 __exp2f32 (_Float32 __x) throw (); + + +extern _Float32 log2f32 (_Float32 __x) throw (); extern _Float32 __log2f32 (_Float32 __x) throw (); + + + + + + + extern _Float32 powf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) throw (); + + +extern _Float32 sqrtf32 (_Float32 __x) throw (); extern _Float32 __sqrtf32 (_Float32 __x) throw (); + + + +extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) throw (); + + + + +extern _Float32 cbrtf32 (_Float32 __x) throw (); extern _Float32 __cbrtf32 (_Float32 __x) throw (); + + + + + + +extern _Float32 ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + +extern _Float32 fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + +extern _Float32 floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + +extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + + + +extern _Float32 nanf32 (const char *__tagb) throw (); extern _Float32 __nanf32 (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 j0f32 (_Float32) throw (); extern _Float32 __j0f32 (_Float32) throw (); +extern _Float32 j1f32 (_Float32) throw (); extern _Float32 __j1f32 (_Float32) throw (); +extern _Float32 jnf32 (int, _Float32) throw (); extern _Float32 __jnf32 (int, _Float32) throw (); +extern _Float32 y0f32 (_Float32) throw (); extern _Float32 __y0f32 (_Float32) throw (); +extern _Float32 y1f32 (_Float32) throw (); extern _Float32 __y1f32 (_Float32) throw (); +extern _Float32 ynf32 (int, _Float32) throw (); extern _Float32 __ynf32 (int, _Float32) throw (); + + + + + +extern _Float32 erff32 (_Float32) throw (); extern _Float32 __erff32 (_Float32) throw (); +extern _Float32 erfcf32 (_Float32) throw (); extern _Float32 __erfcf32 (_Float32) throw (); +extern _Float32 lgammaf32 (_Float32) throw (); extern _Float32 __lgammaf32 (_Float32) throw (); + + + + +extern _Float32 tgammaf32 (_Float32) throw (); extern _Float32 __tgammaf32 (_Float32) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 lgammaf32_r (_Float32, int *__signgamp) throw (); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) throw (); + + + + + + +extern _Float32 rintf32 (_Float32 __x) throw (); extern _Float32 __rintf32 (_Float32 __x) throw (); + + +extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) throw (); + + + + + + +extern _Float32 nextdownf32 (_Float32 __x) throw (); extern _Float32 __nextdownf32 (_Float32 __x) throw (); + +extern _Float32 nextupf32 (_Float32 __x) throw (); extern _Float32 __nextupf32 (_Float32 __x) throw (); + + + +extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) throw (); + + + +extern _Float32 scalbnf32 (_Float32 __x, int __n) throw (); extern _Float32 __scalbnf32 (_Float32 __x, int __n) throw (); + + + +extern int ilogbf32 (_Float32 __x) throw (); extern int __ilogbf32 (_Float32 __x) throw (); + + + + +extern long int llogbf32 (_Float32 __x) throw (); extern long int __llogbf32 (_Float32 __x) throw (); + + + + +extern _Float32 scalblnf32 (_Float32 __x, long int __n) throw (); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) throw (); + + + +extern _Float32 nearbyintf32 (_Float32 __x) throw (); extern _Float32 __nearbyintf32 (_Float32 __x) throw (); + + + +extern _Float32 roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + + +extern _Float32 truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + + + +extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); + + + + + + +extern long int lrintf32 (_Float32 __x) throw (); extern long int __lrintf32 (_Float32 __x) throw (); +__extension__ +extern long long int llrintf32 (_Float32 __x) throw (); extern long long int __llrintf32 (_Float32 __x) throw (); + + + +extern long int lroundf32 (_Float32 __x) throw (); extern long int __lroundf32 (_Float32 __x) throw (); +__extension__ +extern long long int llroundf32 (_Float32 __x) throw (); extern long long int __llroundf32 (_Float32 __x) throw (); + + + +extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) throw (); + + +extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern _Float32 fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); + + + + +extern _Float32 roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + +extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf32 (_Float32 __x, _Float32 __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf32 (_Float32 __x, _Float32 __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) throw (); + + +extern _Float32 getpayloadf32 (const _Float32 *__x) throw (); extern _Float32 __getpayloadf32 (const _Float32 *__x) throw (); + + +extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) throw (); + + +extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) throw (); +# 390 "/usr/include/math.h" 2 3 4 +# 406 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 acosf64 (_Float64 __x) throw (); extern _Float64 __acosf64 (_Float64 __x) throw (); + +extern _Float64 asinf64 (_Float64 __x) throw (); extern _Float64 __asinf64 (_Float64 __x) throw (); + +extern _Float64 atanf64 (_Float64 __x) throw (); extern _Float64 __atanf64 (_Float64 __x) throw (); + +extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) throw (); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) throw (); + + + extern _Float64 cosf64 (_Float64 __x) throw (); extern _Float64 __cosf64 (_Float64 __x) throw (); + + extern _Float64 sinf64 (_Float64 __x) throw (); extern _Float64 __sinf64 (_Float64 __x) throw (); + +extern _Float64 tanf64 (_Float64 __x) throw (); extern _Float64 __tanf64 (_Float64 __x) throw (); + + + + +extern _Float64 coshf64 (_Float64 __x) throw (); extern _Float64 __coshf64 (_Float64 __x) throw (); + +extern _Float64 sinhf64 (_Float64 __x) throw (); extern _Float64 __sinhf64 (_Float64 __x) throw (); + +extern _Float64 tanhf64 (_Float64 __x) throw (); extern _Float64 __tanhf64 (_Float64 __x) throw (); + + + + extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw (); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw () + ; + + + + +extern _Float64 acoshf64 (_Float64 __x) throw (); extern _Float64 __acoshf64 (_Float64 __x) throw (); + +extern _Float64 asinhf64 (_Float64 __x) throw (); extern _Float64 __asinhf64 (_Float64 __x) throw (); + +extern _Float64 atanhf64 (_Float64 __x) throw (); extern _Float64 __atanhf64 (_Float64 __x) throw (); + + + + + + extern _Float64 expf64 (_Float64 __x) throw (); extern _Float64 __expf64 (_Float64 __x) throw (); + + +extern _Float64 frexpf64 (_Float64 __x, int *__exponent) throw (); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) throw (); + + +extern _Float64 ldexpf64 (_Float64 __x, int __exponent) throw (); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) throw (); + + + extern _Float64 logf64 (_Float64 __x) throw (); extern _Float64 __logf64 (_Float64 __x) throw (); + + +extern _Float64 log10f64 (_Float64 __x) throw (); extern _Float64 __log10f64 (_Float64 __x) throw (); + + +extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) throw (); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float64 exp10f64 (_Float64 __x) throw (); extern _Float64 __exp10f64 (_Float64 __x) throw (); + + + + +extern _Float64 expm1f64 (_Float64 __x) throw (); extern _Float64 __expm1f64 (_Float64 __x) throw (); + + +extern _Float64 log1pf64 (_Float64 __x) throw (); extern _Float64 __log1pf64 (_Float64 __x) throw (); + + +extern _Float64 logbf64 (_Float64 __x) throw (); extern _Float64 __logbf64 (_Float64 __x) throw (); + + + + +extern _Float64 exp2f64 (_Float64 __x) throw (); extern _Float64 __exp2f64 (_Float64 __x) throw (); + + +extern _Float64 log2f64 (_Float64 __x) throw (); extern _Float64 __log2f64 (_Float64 __x) throw (); + + + + + + + extern _Float64 powf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float64 sqrtf64 (_Float64 __x) throw (); extern _Float64 __sqrtf64 (_Float64 __x) throw (); + + + +extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) throw (); + + + + +extern _Float64 cbrtf64 (_Float64 __x) throw (); extern _Float64 __cbrtf64 (_Float64 __x) throw (); + + + + + + +extern _Float64 ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + +extern _Float64 fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + +extern _Float64 floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + +extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + + + +extern _Float64 nanf64 (const char *__tagb) throw (); extern _Float64 __nanf64 (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 j0f64 (_Float64) throw (); extern _Float64 __j0f64 (_Float64) throw (); +extern _Float64 j1f64 (_Float64) throw (); extern _Float64 __j1f64 (_Float64) throw (); +extern _Float64 jnf64 (int, _Float64) throw (); extern _Float64 __jnf64 (int, _Float64) throw (); +extern _Float64 y0f64 (_Float64) throw (); extern _Float64 __y0f64 (_Float64) throw (); +extern _Float64 y1f64 (_Float64) throw (); extern _Float64 __y1f64 (_Float64) throw (); +extern _Float64 ynf64 (int, _Float64) throw (); extern _Float64 __ynf64 (int, _Float64) throw (); + + + + + +extern _Float64 erff64 (_Float64) throw (); extern _Float64 __erff64 (_Float64) throw (); +extern _Float64 erfcf64 (_Float64) throw (); extern _Float64 __erfcf64 (_Float64) throw (); +extern _Float64 lgammaf64 (_Float64) throw (); extern _Float64 __lgammaf64 (_Float64) throw (); + + + + +extern _Float64 tgammaf64 (_Float64) throw (); extern _Float64 __tgammaf64 (_Float64) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 lgammaf64_r (_Float64, int *__signgamp) throw (); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) throw (); + + + + + + +extern _Float64 rintf64 (_Float64 __x) throw (); extern _Float64 __rintf64 (_Float64 __x) throw (); + + +extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) throw (); + + + + + + +extern _Float64 nextdownf64 (_Float64 __x) throw (); extern _Float64 __nextdownf64 (_Float64 __x) throw (); + +extern _Float64 nextupf64 (_Float64 __x) throw (); extern _Float64 __nextupf64 (_Float64 __x) throw (); + + + +extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) throw (); + + + +extern _Float64 scalbnf64 (_Float64 __x, int __n) throw (); extern _Float64 __scalbnf64 (_Float64 __x, int __n) throw (); + + + +extern int ilogbf64 (_Float64 __x) throw (); extern int __ilogbf64 (_Float64 __x) throw (); + + + + +extern long int llogbf64 (_Float64 __x) throw (); extern long int __llogbf64 (_Float64 __x) throw (); + + + + +extern _Float64 scalblnf64 (_Float64 __x, long int __n) throw (); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) throw (); + + + +extern _Float64 nearbyintf64 (_Float64 __x) throw (); extern _Float64 __nearbyintf64 (_Float64 __x) throw (); + + + +extern _Float64 roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + + +extern _Float64 truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + + + +extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); + + + + + + +extern long int lrintf64 (_Float64 __x) throw (); extern long int __lrintf64 (_Float64 __x) throw (); +__extension__ +extern long long int llrintf64 (_Float64 __x) throw (); extern long long int __llrintf64 (_Float64 __x) throw (); + + + +extern long int lroundf64 (_Float64 __x) throw (); extern long int __lroundf64 (_Float64 __x) throw (); +__extension__ +extern long long int llroundf64 (_Float64 __x) throw (); extern long long int __llroundf64 (_Float64 __x) throw (); + + + +extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern _Float64 fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); + + + + +extern _Float64 roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + +extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf64 (_Float64 __x, _Float64 __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf64 (_Float64 __x, _Float64 __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) throw (); + + +extern _Float64 getpayloadf64 (const _Float64 *__x) throw (); extern _Float64 __getpayloadf64 (const _Float64 *__x) throw (); + + +extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) throw (); + + +extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) throw (); +# 407 "/usr/include/math.h" 2 3 4 +# 420 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassifyf128 (_Float128 __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitf128 (_Float128 __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinff128 (_Float128 __value) throw () __attribute__ ((__const__)); + + +extern int __finitef128 (_Float128 __value) throw () __attribute__ ((__const__)); + + +extern int __isnanf128 (_Float128 __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsigf128 (_Float128 __x, _Float128 __y) throw (); + + +extern int __issignalingf128 (_Float128 __value) throw () + __attribute__ ((__const__)); +# 421 "/usr/include/math.h" 2 3 4 + + +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 acosf128 (_Float128 __x) throw (); extern _Float128 __acosf128 (_Float128 __x) throw (); + +extern _Float128 asinf128 (_Float128 __x) throw (); extern _Float128 __asinf128 (_Float128 __x) throw (); + +extern _Float128 atanf128 (_Float128 __x) throw (); extern _Float128 __atanf128 (_Float128 __x) throw (); + +extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) throw (); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) throw (); + + + extern _Float128 cosf128 (_Float128 __x) throw (); extern _Float128 __cosf128 (_Float128 __x) throw (); + + extern _Float128 sinf128 (_Float128 __x) throw (); extern _Float128 __sinf128 (_Float128 __x) throw (); + +extern _Float128 tanf128 (_Float128 __x) throw (); extern _Float128 __tanf128 (_Float128 __x) throw (); + + + + +extern _Float128 coshf128 (_Float128 __x) throw (); extern _Float128 __coshf128 (_Float128 __x) throw (); + +extern _Float128 sinhf128 (_Float128 __x) throw (); extern _Float128 __sinhf128 (_Float128 __x) throw (); + +extern _Float128 tanhf128 (_Float128 __x) throw (); extern _Float128 __tanhf128 (_Float128 __x) throw (); + + + + extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw (); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw () + ; + + + + +extern _Float128 acoshf128 (_Float128 __x) throw (); extern _Float128 __acoshf128 (_Float128 __x) throw (); + +extern _Float128 asinhf128 (_Float128 __x) throw (); extern _Float128 __asinhf128 (_Float128 __x) throw (); + +extern _Float128 atanhf128 (_Float128 __x) throw (); extern _Float128 __atanhf128 (_Float128 __x) throw (); + + + + + + extern _Float128 expf128 (_Float128 __x) throw (); extern _Float128 __expf128 (_Float128 __x) throw (); + + +extern _Float128 frexpf128 (_Float128 __x, int *__exponent) throw (); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) throw (); + + +extern _Float128 ldexpf128 (_Float128 __x, int __exponent) throw (); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) throw (); + + + extern _Float128 logf128 (_Float128 __x) throw (); extern _Float128 __logf128 (_Float128 __x) throw (); + + +extern _Float128 log10f128 (_Float128 __x) throw (); extern _Float128 __log10f128 (_Float128 __x) throw (); + + +extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) throw (); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float128 exp10f128 (_Float128 __x) throw (); extern _Float128 __exp10f128 (_Float128 __x) throw (); + + + + +extern _Float128 expm1f128 (_Float128 __x) throw (); extern _Float128 __expm1f128 (_Float128 __x) throw (); + + +extern _Float128 log1pf128 (_Float128 __x) throw (); extern _Float128 __log1pf128 (_Float128 __x) throw (); + + +extern _Float128 logbf128 (_Float128 __x) throw (); extern _Float128 __logbf128 (_Float128 __x) throw (); + + + + +extern _Float128 exp2f128 (_Float128 __x) throw (); extern _Float128 __exp2f128 (_Float128 __x) throw (); + + +extern _Float128 log2f128 (_Float128 __x) throw (); extern _Float128 __log2f128 (_Float128 __x) throw (); + + + + + + + extern _Float128 powf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float128 sqrtf128 (_Float128 __x) throw (); extern _Float128 __sqrtf128 (_Float128 __x) throw (); + + + +extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) throw (); + + + + +extern _Float128 cbrtf128 (_Float128 __x) throw (); extern _Float128 __cbrtf128 (_Float128 __x) throw (); + + + + + + +extern _Float128 ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + +extern _Float128 fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + +extern _Float128 floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + +extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + + + +extern _Float128 nanf128 (const char *__tagb) throw (); extern _Float128 __nanf128 (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 j0f128 (_Float128) throw (); extern _Float128 __j0f128 (_Float128) throw (); +extern _Float128 j1f128 (_Float128) throw (); extern _Float128 __j1f128 (_Float128) throw (); +extern _Float128 jnf128 (int, _Float128) throw (); extern _Float128 __jnf128 (int, _Float128) throw (); +extern _Float128 y0f128 (_Float128) throw (); extern _Float128 __y0f128 (_Float128) throw (); +extern _Float128 y1f128 (_Float128) throw (); extern _Float128 __y1f128 (_Float128) throw (); +extern _Float128 ynf128 (int, _Float128) throw (); extern _Float128 __ynf128 (int, _Float128) throw (); + + + + + +extern _Float128 erff128 (_Float128) throw (); extern _Float128 __erff128 (_Float128) throw (); +extern _Float128 erfcf128 (_Float128) throw (); extern _Float128 __erfcf128 (_Float128) throw (); +extern _Float128 lgammaf128 (_Float128) throw (); extern _Float128 __lgammaf128 (_Float128) throw (); + + + + +extern _Float128 tgammaf128 (_Float128) throw (); extern _Float128 __tgammaf128 (_Float128) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 lgammaf128_r (_Float128, int *__signgamp) throw (); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) throw (); + + + + + + +extern _Float128 rintf128 (_Float128 __x) throw (); extern _Float128 __rintf128 (_Float128 __x) throw (); + + +extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) throw (); + + + + + + +extern _Float128 nextdownf128 (_Float128 __x) throw (); extern _Float128 __nextdownf128 (_Float128 __x) throw (); + +extern _Float128 nextupf128 (_Float128 __x) throw (); extern _Float128 __nextupf128 (_Float128 __x) throw (); + + + +extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) throw (); + + + +extern _Float128 scalbnf128 (_Float128 __x, int __n) throw (); extern _Float128 __scalbnf128 (_Float128 __x, int __n) throw (); + + + +extern int ilogbf128 (_Float128 __x) throw (); extern int __ilogbf128 (_Float128 __x) throw (); + + + + +extern long int llogbf128 (_Float128 __x) throw (); extern long int __llogbf128 (_Float128 __x) throw (); + + + + +extern _Float128 scalblnf128 (_Float128 __x, long int __n) throw (); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) throw (); + + + +extern _Float128 nearbyintf128 (_Float128 __x) throw (); extern _Float128 __nearbyintf128 (_Float128 __x) throw (); + + + +extern _Float128 roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + + +extern _Float128 truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + + + +extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); + + + + + + +extern long int lrintf128 (_Float128 __x) throw (); extern long int __lrintf128 (_Float128 __x) throw (); +__extension__ +extern long long int llrintf128 (_Float128 __x) throw (); extern long long int __llrintf128 (_Float128 __x) throw (); + + + +extern long int lroundf128 (_Float128 __x) throw (); extern long int __lroundf128 (_Float128 __x) throw (); +__extension__ +extern long long int llroundf128 (_Float128 __x) throw (); extern long long int __llroundf128 (_Float128 __x) throw (); + + + +extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern _Float128 fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); + + + + +extern _Float128 roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + +extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf128 (_Float128 __x, _Float128 __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf128 (_Float128 __x, _Float128 __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) throw (); + + +extern _Float128 getpayloadf128 (const _Float128 *__x) throw (); extern _Float128 __getpayloadf128 (const _Float128 *__x) throw (); + + +extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) throw (); + + +extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) throw (); +# 424 "/usr/include/math.h" 2 3 4 +# 440 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x acosf32x (_Float32x __x) throw (); extern _Float32x __acosf32x (_Float32x __x) throw (); + +extern _Float32x asinf32x (_Float32x __x) throw (); extern _Float32x __asinf32x (_Float32x __x) throw (); + +extern _Float32x atanf32x (_Float32x __x) throw (); extern _Float32x __atanf32x (_Float32x __x) throw (); + +extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) throw (); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) throw (); + + + extern _Float32x cosf32x (_Float32x __x) throw (); extern _Float32x __cosf32x (_Float32x __x) throw (); + + extern _Float32x sinf32x (_Float32x __x) throw (); extern _Float32x __sinf32x (_Float32x __x) throw (); + +extern _Float32x tanf32x (_Float32x __x) throw (); extern _Float32x __tanf32x (_Float32x __x) throw (); + + + + +extern _Float32x coshf32x (_Float32x __x) throw (); extern _Float32x __coshf32x (_Float32x __x) throw (); + +extern _Float32x sinhf32x (_Float32x __x) throw (); extern _Float32x __sinhf32x (_Float32x __x) throw (); + +extern _Float32x tanhf32x (_Float32x __x) throw (); extern _Float32x __tanhf32x (_Float32x __x) throw (); + + + + extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw (); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw () + ; + + + + +extern _Float32x acoshf32x (_Float32x __x) throw (); extern _Float32x __acoshf32x (_Float32x __x) throw (); + +extern _Float32x asinhf32x (_Float32x __x) throw (); extern _Float32x __asinhf32x (_Float32x __x) throw (); + +extern _Float32x atanhf32x (_Float32x __x) throw (); extern _Float32x __atanhf32x (_Float32x __x) throw (); + + + + + + extern _Float32x expf32x (_Float32x __x) throw (); extern _Float32x __expf32x (_Float32x __x) throw (); + + +extern _Float32x frexpf32x (_Float32x __x, int *__exponent) throw (); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) throw (); + + +extern _Float32x ldexpf32x (_Float32x __x, int __exponent) throw (); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) throw (); + + + extern _Float32x logf32x (_Float32x __x) throw (); extern _Float32x __logf32x (_Float32x __x) throw (); + + +extern _Float32x log10f32x (_Float32x __x) throw (); extern _Float32x __log10f32x (_Float32x __x) throw (); + + +extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) throw (); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float32x exp10f32x (_Float32x __x) throw (); extern _Float32x __exp10f32x (_Float32x __x) throw (); + + + + +extern _Float32x expm1f32x (_Float32x __x) throw (); extern _Float32x __expm1f32x (_Float32x __x) throw (); + + +extern _Float32x log1pf32x (_Float32x __x) throw (); extern _Float32x __log1pf32x (_Float32x __x) throw (); + + +extern _Float32x logbf32x (_Float32x __x) throw (); extern _Float32x __logbf32x (_Float32x __x) throw (); + + + + +extern _Float32x exp2f32x (_Float32x __x) throw (); extern _Float32x __exp2f32x (_Float32x __x) throw (); + + +extern _Float32x log2f32x (_Float32x __x) throw (); extern _Float32x __log2f32x (_Float32x __x) throw (); + + + + + + + extern _Float32x powf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32x sqrtf32x (_Float32x __x) throw (); extern _Float32x __sqrtf32x (_Float32x __x) throw (); + + + +extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) throw (); + + + + +extern _Float32x cbrtf32x (_Float32x __x) throw (); extern _Float32x __cbrtf32x (_Float32x __x) throw (); + + + + + + +extern _Float32x ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + +extern _Float32x fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + +extern _Float32x floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + +extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + + + +extern _Float32x nanf32x (const char *__tagb) throw (); extern _Float32x __nanf32x (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x j0f32x (_Float32x) throw (); extern _Float32x __j0f32x (_Float32x) throw (); +extern _Float32x j1f32x (_Float32x) throw (); extern _Float32x __j1f32x (_Float32x) throw (); +extern _Float32x jnf32x (int, _Float32x) throw (); extern _Float32x __jnf32x (int, _Float32x) throw (); +extern _Float32x y0f32x (_Float32x) throw (); extern _Float32x __y0f32x (_Float32x) throw (); +extern _Float32x y1f32x (_Float32x) throw (); extern _Float32x __y1f32x (_Float32x) throw (); +extern _Float32x ynf32x (int, _Float32x) throw (); extern _Float32x __ynf32x (int, _Float32x) throw (); + + + + + +extern _Float32x erff32x (_Float32x) throw (); extern _Float32x __erff32x (_Float32x) throw (); +extern _Float32x erfcf32x (_Float32x) throw (); extern _Float32x __erfcf32x (_Float32x) throw (); +extern _Float32x lgammaf32x (_Float32x) throw (); extern _Float32x __lgammaf32x (_Float32x) throw (); + + + + +extern _Float32x tgammaf32x (_Float32x) throw (); extern _Float32x __tgammaf32x (_Float32x) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) throw (); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) throw (); + + + + + + +extern _Float32x rintf32x (_Float32x __x) throw (); extern _Float32x __rintf32x (_Float32x __x) throw (); + + +extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) throw (); + + + + + + +extern _Float32x nextdownf32x (_Float32x __x) throw (); extern _Float32x __nextdownf32x (_Float32x __x) throw (); + +extern _Float32x nextupf32x (_Float32x __x) throw (); extern _Float32x __nextupf32x (_Float32x __x) throw (); + + + +extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) throw (); + + + +extern _Float32x scalbnf32x (_Float32x __x, int __n) throw (); extern _Float32x __scalbnf32x (_Float32x __x, int __n) throw (); + + + +extern int ilogbf32x (_Float32x __x) throw (); extern int __ilogbf32x (_Float32x __x) throw (); + + + + +extern long int llogbf32x (_Float32x __x) throw (); extern long int __llogbf32x (_Float32x __x) throw (); + + + + +extern _Float32x scalblnf32x (_Float32x __x, long int __n) throw (); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) throw (); + + + +extern _Float32x nearbyintf32x (_Float32x __x) throw (); extern _Float32x __nearbyintf32x (_Float32x __x) throw (); + + + +extern _Float32x roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + + +extern _Float32x truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + + + +extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); + + + + + + +extern long int lrintf32x (_Float32x __x) throw (); extern long int __lrintf32x (_Float32x __x) throw (); +__extension__ +extern long long int llrintf32x (_Float32x __x) throw (); extern long long int __llrintf32x (_Float32x __x) throw (); + + + +extern long int lroundf32x (_Float32x __x) throw (); extern long int __lroundf32x (_Float32x __x) throw (); +__extension__ +extern long long int llroundf32x (_Float32x __x) throw (); extern long long int __llroundf32x (_Float32x __x) throw (); + + + +extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern _Float32x fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); + + + + +extern _Float32x roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + +extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf32x (_Float32x __x, _Float32x __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf32x (_Float32x __x, _Float32x __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) throw (); + + +extern _Float32x getpayloadf32x (const _Float32x *__x) throw (); extern _Float32x __getpayloadf32x (const _Float32x *__x) throw (); + + +extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) throw (); + + +extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) throw (); +# 441 "/usr/include/math.h" 2 3 4 +# 457 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x acosf64x (_Float64x __x) throw (); extern _Float64x __acosf64x (_Float64x __x) throw (); + +extern _Float64x asinf64x (_Float64x __x) throw (); extern _Float64x __asinf64x (_Float64x __x) throw (); + +extern _Float64x atanf64x (_Float64x __x) throw (); extern _Float64x __atanf64x (_Float64x __x) throw (); + +extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) throw (); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) throw (); + + + extern _Float64x cosf64x (_Float64x __x) throw (); extern _Float64x __cosf64x (_Float64x __x) throw (); + + extern _Float64x sinf64x (_Float64x __x) throw (); extern _Float64x __sinf64x (_Float64x __x) throw (); + +extern _Float64x tanf64x (_Float64x __x) throw (); extern _Float64x __tanf64x (_Float64x __x) throw (); + + + + +extern _Float64x coshf64x (_Float64x __x) throw (); extern _Float64x __coshf64x (_Float64x __x) throw (); + +extern _Float64x sinhf64x (_Float64x __x) throw (); extern _Float64x __sinhf64x (_Float64x __x) throw (); + +extern _Float64x tanhf64x (_Float64x __x) throw (); extern _Float64x __tanhf64x (_Float64x __x) throw (); + + + + extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw (); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw () + ; + + + + +extern _Float64x acoshf64x (_Float64x __x) throw (); extern _Float64x __acoshf64x (_Float64x __x) throw (); + +extern _Float64x asinhf64x (_Float64x __x) throw (); extern _Float64x __asinhf64x (_Float64x __x) throw (); + +extern _Float64x atanhf64x (_Float64x __x) throw (); extern _Float64x __atanhf64x (_Float64x __x) throw (); + + + + + + extern _Float64x expf64x (_Float64x __x) throw (); extern _Float64x __expf64x (_Float64x __x) throw (); + + +extern _Float64x frexpf64x (_Float64x __x, int *__exponent) throw (); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) throw (); + + +extern _Float64x ldexpf64x (_Float64x __x, int __exponent) throw (); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) throw (); + + + extern _Float64x logf64x (_Float64x __x) throw (); extern _Float64x __logf64x (_Float64x __x) throw (); + + +extern _Float64x log10f64x (_Float64x __x) throw (); extern _Float64x __log10f64x (_Float64x __x) throw (); + + +extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) throw (); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float64x exp10f64x (_Float64x __x) throw (); extern _Float64x __exp10f64x (_Float64x __x) throw (); + + + + +extern _Float64x expm1f64x (_Float64x __x) throw (); extern _Float64x __expm1f64x (_Float64x __x) throw (); + + +extern _Float64x log1pf64x (_Float64x __x) throw (); extern _Float64x __log1pf64x (_Float64x __x) throw (); + + +extern _Float64x logbf64x (_Float64x __x) throw (); extern _Float64x __logbf64x (_Float64x __x) throw (); + + + + +extern _Float64x exp2f64x (_Float64x __x) throw (); extern _Float64x __exp2f64x (_Float64x __x) throw (); + + +extern _Float64x log2f64x (_Float64x __x) throw (); extern _Float64x __log2f64x (_Float64x __x) throw (); + + + + + + + extern _Float64x powf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64x sqrtf64x (_Float64x __x) throw (); extern _Float64x __sqrtf64x (_Float64x __x) throw (); + + + +extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) throw (); + + + + +extern _Float64x cbrtf64x (_Float64x __x) throw (); extern _Float64x __cbrtf64x (_Float64x __x) throw (); + + + + + + +extern _Float64x ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + +extern _Float64x fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + +extern _Float64x floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + +extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + + + +extern _Float64x nanf64x (const char *__tagb) throw (); extern _Float64x __nanf64x (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x j0f64x (_Float64x) throw (); extern _Float64x __j0f64x (_Float64x) throw (); +extern _Float64x j1f64x (_Float64x) throw (); extern _Float64x __j1f64x (_Float64x) throw (); +extern _Float64x jnf64x (int, _Float64x) throw (); extern _Float64x __jnf64x (int, _Float64x) throw (); +extern _Float64x y0f64x (_Float64x) throw (); extern _Float64x __y0f64x (_Float64x) throw (); +extern _Float64x y1f64x (_Float64x) throw (); extern _Float64x __y1f64x (_Float64x) throw (); +extern _Float64x ynf64x (int, _Float64x) throw (); extern _Float64x __ynf64x (int, _Float64x) throw (); + + + + + +extern _Float64x erff64x (_Float64x) throw (); extern _Float64x __erff64x (_Float64x) throw (); +extern _Float64x erfcf64x (_Float64x) throw (); extern _Float64x __erfcf64x (_Float64x) throw (); +extern _Float64x lgammaf64x (_Float64x) throw (); extern _Float64x __lgammaf64x (_Float64x) throw (); + + + + +extern _Float64x tgammaf64x (_Float64x) throw (); extern _Float64x __tgammaf64x (_Float64x) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) throw (); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) throw (); + + + + + + +extern _Float64x rintf64x (_Float64x __x) throw (); extern _Float64x __rintf64x (_Float64x __x) throw (); + + +extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) throw (); + + + + + + +extern _Float64x nextdownf64x (_Float64x __x) throw (); extern _Float64x __nextdownf64x (_Float64x __x) throw (); + +extern _Float64x nextupf64x (_Float64x __x) throw (); extern _Float64x __nextupf64x (_Float64x __x) throw (); + + + +extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) throw (); + + + +extern _Float64x scalbnf64x (_Float64x __x, int __n) throw (); extern _Float64x __scalbnf64x (_Float64x __x, int __n) throw (); + + + +extern int ilogbf64x (_Float64x __x) throw (); extern int __ilogbf64x (_Float64x __x) throw (); + + + + +extern long int llogbf64x (_Float64x __x) throw (); extern long int __llogbf64x (_Float64x __x) throw (); + + + + +extern _Float64x scalblnf64x (_Float64x __x, long int __n) throw (); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) throw (); + + + +extern _Float64x nearbyintf64x (_Float64x __x) throw (); extern _Float64x __nearbyintf64x (_Float64x __x) throw (); + + + +extern _Float64x roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + + +extern _Float64x truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + + + +extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); + + + + + + +extern long int lrintf64x (_Float64x __x) throw (); extern long int __lrintf64x (_Float64x __x) throw (); +__extension__ +extern long long int llrintf64x (_Float64x __x) throw (); extern long long int __llrintf64x (_Float64x __x) throw (); + + + +extern long int lroundf64x (_Float64x __x) throw (); extern long int __lroundf64x (_Float64x __x) throw (); +__extension__ +extern long long int llroundf64x (_Float64x __x) throw (); extern long long int __llroundf64x (_Float64x __x) throw (); + + + +extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern _Float64x fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); + + + + +extern _Float64x roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + +extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf64x (_Float64x __x, _Float64x __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf64x (_Float64x __x, _Float64x __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) throw (); + + +extern _Float64x getpayloadf64x (const _Float64x *__x) throw (); extern _Float64x __getpayloadf64x (const _Float64x *__x) throw (); + + +extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) throw (); + + +extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) throw (); +# 458 "/usr/include/math.h" 2 3 4 +# 503 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern float fadd (double __x, double __y) throw (); + + +extern float fdiv (double __x, double __y) throw (); + + +extern float fmul (double __x, double __y) throw (); + + +extern float fsub (double __x, double __y) throw (); +# 504 "/usr/include/math.h" 2 3 4 +# 517 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern float faddl (long double __x, long double __y) throw (); + + +extern float fdivl (long double __x, long double __y) throw (); + + +extern float fmull (long double __x, long double __y) throw (); + + +extern float fsubl (long double __x, long double __y) throw (); +# 518 "/usr/include/math.h" 2 3 4 +# 537 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern double daddl (long double __x, long double __y) throw (); + + +extern double ddivl (long double __x, long double __y) throw (); + + +extern double dmull (long double __x, long double __y) throw (); + + +extern double dsubl (long double __x, long double __y) throw (); +# 538 "/usr/include/math.h" 2 3 4 +# 616 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) throw (); +# 617 "/usr/include/math.h" 2 3 4 +# 626 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) throw (); +# 627 "/usr/include/math.h" 2 3 4 +# 636 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) throw (); +# 637 "/usr/include/math.h" 2 3 4 +# 646 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) throw (); +# 647 "/usr/include/math.h" 2 3 4 +# 666 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) throw (); +# 667 "/usr/include/math.h" 2 3 4 +# 676 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) throw (); +# 677 "/usr/include/math.h" 2 3 4 +# 686 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) throw (); +# 687 "/usr/include/math.h" 2 3 4 +# 706 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) throw (); +# 707 "/usr/include/math.h" 2 3 4 +# 716 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) throw (); +# 717 "/usr/include/math.h" 2 3 4 +# 736 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) throw (); +# 737 "/usr/include/math.h" 2 3 4 +# 773 "/usr/include/math.h" 3 4 +extern int signgam; +# 853 "/usr/include/math.h" 3 4 +enum + { + FP_NAN = + + 0, + FP_INFINITE = + + 1, + FP_ZERO = + + 2, + FP_SUBNORMAL = + + 3, + FP_NORMAL = + + 4 + }; +# 973 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/iscanonical.h" 1 3 4 +# 26 "/usr/include/bits/iscanonical.h" 3 4 +extern int __iscanonicall (long double __x) + throw () __attribute__ ((__const__)); +# 49 "/usr/include/bits/iscanonical.h" 3 4 +extern "C++" { +inline int iscanonical (float __val) { return ((void) (__typeof (__val)) (__val), 1); } +inline int iscanonical (double __val) { return ((void) (__typeof (__val)) (__val), 1); } +inline int iscanonical (long double __val) { return __iscanonicall (__val); } + +inline int iscanonical (_Float128 __val) { return ((void) (__typeof (__val)) (__val), 1); } + +} +# 974 "/usr/include/math.h" 2 3 4 +# 985 "/usr/include/math.h" 3 4 +extern "C++" { +inline int issignaling (float __val) { return __issignalingf (__val); } +inline int issignaling (double __val) { return __issignaling (__val); } +inline int +issignaling (long double __val) +{ + + + + return __issignalingl (__val); + +} + + + +inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); } + +} +# 1016 "/usr/include/math.h" 3 4 +extern "C++" { +# 1047 "/usr/include/math.h" 3 4 +template inline bool +iszero (__T __val) +{ + return __val == 0; +} + +} +# 1498 "/usr/include/math.h" 3 4 +extern "C++" { +template struct __iseqsig_type; + +template<> struct __iseqsig_type +{ + static int __call (float __x, float __y) throw () + { + return __iseqsigf (__x, __y); + } +}; + +template<> struct __iseqsig_type +{ + static int __call (double __x, double __y) throw () + { + return __iseqsig (__x, __y); + } +}; + +template<> struct __iseqsig_type +{ + static int __call (long double __x, long double __y) throw () + { + + return __iseqsigl (__x, __y); + + + + } +}; + + + + +template<> struct __iseqsig_type<_Float128> +{ + static int __call (_Float128 __x, _Float128 __y) throw () + { + return __iseqsigf128 (__x, __y); + } +}; + + +template +inline int +iseqsig (_T1 __x, _T2 __y) throw () +{ + + typedef decltype (((__x) + (__y) + 0.0f)) _T3; + + + + return __iseqsig_type<_T3>::__call (__x, __y); +} + +} + + + + +} +# 46 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 +# 77 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +extern "C++" +{ +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + using ::acos; + + + inline constexpr float + acos(float __x) + { return __builtin_acosf(__x); } + + inline constexpr long double + acos(long double __x) + { return __builtin_acosl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acos(_Tp __x) + { return __builtin_acos(__x); } + + using ::asin; + + + inline constexpr float + asin(float __x) + { return __builtin_asinf(__x); } + + inline constexpr long double + asin(long double __x) + { return __builtin_asinl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asin(_Tp __x) + { return __builtin_asin(__x); } + + using ::atan; + + + inline constexpr float + atan(float __x) + { return __builtin_atanf(__x); } + + inline constexpr long double + atan(long double __x) + { return __builtin_atanl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atan(_Tp __x) + { return __builtin_atan(__x); } + + using ::atan2; + + + inline constexpr float + atan2(float __y, float __x) + { return __builtin_atan2f(__y, __x); } + + inline constexpr long double + atan2(long double __y, long double __x) + { return __builtin_atan2l(__y, __x); } + + + template + inline constexpr + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + atan2(_Tp __y, _Up __x) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return atan2(__type(__y), __type(__x)); + } + + using ::ceil; + + + inline constexpr float + ceil(float __x) + { return __builtin_ceilf(__x); } + + inline constexpr long double + ceil(long double __x) + { return __builtin_ceill(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ceil(_Tp __x) + { return __builtin_ceil(__x); } + + using ::cos; + + + inline constexpr float + cos(float __x) + { return __builtin_cosf(__x); } + + inline constexpr long double + cos(long double __x) + { return __builtin_cosl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cos(_Tp __x) + { return __builtin_cos(__x); } + + using ::cosh; + + + inline constexpr float + cosh(float __x) + { return __builtin_coshf(__x); } + + inline constexpr long double + cosh(long double __x) + { return __builtin_coshl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cosh(_Tp __x) + { return __builtin_cosh(__x); } + + using ::exp; + + + inline constexpr float + exp(float __x) + { return __builtin_expf(__x); } + + inline constexpr long double + exp(long double __x) + { return __builtin_expl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp(_Tp __x) + { return __builtin_exp(__x); } + + using ::fabs; + + + inline constexpr float + fabs(float __x) + { return __builtin_fabsf(__x); } + + inline constexpr long double + fabs(long double __x) + { return __builtin_fabsl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + fabs(_Tp __x) + { return __builtin_fabs(__x); } + + using ::floor; + + + inline constexpr float + floor(float __x) + { return __builtin_floorf(__x); } + + inline constexpr long double + floor(long double __x) + { return __builtin_floorl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + floor(_Tp __x) + { return __builtin_floor(__x); } + + using ::fmod; + + + inline constexpr float + fmod(float __x, float __y) + { return __builtin_fmodf(__x, __y); } + + inline constexpr long double + fmod(long double __x, long double __y) + { return __builtin_fmodl(__x, __y); } + + + template + inline constexpr + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmod(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmod(__type(__x), __type(__y)); + } + + using ::frexp; + + + inline float + frexp(float __x, int* __exp) + { return __builtin_frexpf(__x, __exp); } + + inline long double + frexp(long double __x, int* __exp) + { return __builtin_frexpl(__x, __exp); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + frexp(_Tp __x, int* __exp) + { return __builtin_frexp(__x, __exp); } + + using ::ldexp; + + + inline constexpr float + ldexp(float __x, int __exp) + { return __builtin_ldexpf(__x, __exp); } + + inline constexpr long double + ldexp(long double __x, int __exp) + { return __builtin_ldexpl(__x, __exp); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ldexp(_Tp __x, int __exp) + { return __builtin_ldexp(__x, __exp); } + + using ::log; + + + inline constexpr float + log(float __x) + { return __builtin_logf(__x); } + + inline constexpr long double + log(long double __x) + { return __builtin_logl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log(_Tp __x) + { return __builtin_log(__x); } + + using ::log10; + + + inline constexpr float + log10(float __x) + { return __builtin_log10f(__x); } + + inline constexpr long double + log10(long double __x) + { return __builtin_log10l(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log10(_Tp __x) + { return __builtin_log10(__x); } + + using ::modf; + + + inline float + modf(float __x, float* __iptr) + { return __builtin_modff(__x, __iptr); } + + inline long double + modf(long double __x, long double* __iptr) + { return __builtin_modfl(__x, __iptr); } + + + using ::pow; + + + inline constexpr float + pow(float __x, float __y) + { return __builtin_powf(__x, __y); } + + inline constexpr long double + pow(long double __x, long double __y) + { return __builtin_powl(__x, __y); } +# 412 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + template + inline constexpr + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + pow(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return pow(__type(__x), __type(__y)); + } + + using ::sin; + + + inline constexpr float + sin(float __x) + { return __builtin_sinf(__x); } + + inline constexpr long double + sin(long double __x) + { return __builtin_sinl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sin(_Tp __x) + { return __builtin_sin(__x); } + + using ::sinh; + + + inline constexpr float + sinh(float __x) + { return __builtin_sinhf(__x); } + + inline constexpr long double + sinh(long double __x) + { return __builtin_sinhl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sinh(_Tp __x) + { return __builtin_sinh(__x); } + + using ::sqrt; + + + inline constexpr float + sqrt(float __x) + { return __builtin_sqrtf(__x); } + + inline constexpr long double + sqrt(long double __x) + { return __builtin_sqrtl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sqrt(_Tp __x) + { return __builtin_sqrt(__x); } + + using ::tan; + + + inline constexpr float + tan(float __x) + { return __builtin_tanf(__x); } + + inline constexpr long double + tan(long double __x) + { return __builtin_tanl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tan(_Tp __x) + { return __builtin_tan(__x); } + + using ::tanh; + + + inline constexpr float + tanh(float __x) + { return __builtin_tanhf(__x); } + + inline constexpr long double + tanh(long double __x) + { return __builtin_tanhl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tanh(_Tp __x) + { return __builtin_tanh(__x); } +# 536 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + constexpr int + fpclassify(float __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + constexpr int + fpclassify(double __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + constexpr int + fpclassify(long double __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + fpclassify(_Tp __x) + { return __x != 0 ? 4 : 2; } + + + + constexpr bool + isfinite(float __x) + { return __builtin_isfinite(__x); } + + constexpr bool + isfinite(double __x) + { return __builtin_isfinite(__x); } + + constexpr bool + isfinite(long double __x) + { return __builtin_isfinite(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isfinite(_Tp __x) + { return true; } + + + + constexpr bool + isinf(float __x) + { return __builtin_isinf(__x); } + + + + + + constexpr bool + isinf(double __x) + { return __builtin_isinf(__x); } + + + constexpr bool + isinf(long double __x) + { return __builtin_isinf(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isinf(_Tp __x) + { return false; } + + + + constexpr bool + isnan(float __x) + { return __builtin_isnan(__x); } + + + + + + constexpr bool + isnan(double __x) + { return __builtin_isnan(__x); } + + + constexpr bool + isnan(long double __x) + { return __builtin_isnan(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnan(_Tp __x) + { return false; } + + + + constexpr bool + isnormal(float __x) + { return __builtin_isnormal(__x); } + + constexpr bool + isnormal(double __x) + { return __builtin_isnormal(__x); } + + constexpr bool + isnormal(long double __x) + { return __builtin_isnormal(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnormal(_Tp __x) + { return __x != 0 ? true : false; } + + + + + constexpr bool + signbit(float __x) + { return __builtin_signbit(__x); } + + constexpr bool + signbit(double __x) + { return __builtin_signbit(__x); } + + constexpr bool + signbit(long double __x) + { return __builtin_signbit(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + signbit(_Tp __x) + { return __x < 0 ? true : false; } + + + + constexpr bool + isgreater(float __x, float __y) + { return __builtin_isgreater(__x, __y); } + + constexpr bool + isgreater(double __x, double __y) + { return __builtin_isgreater(__x, __y); } + + constexpr bool + isgreater(long double __x, long double __y) + { return __builtin_isgreater(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isgreater(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isgreater(__type(__x), __type(__y)); + } + + + + constexpr bool + isgreaterequal(float __x, float __y) + { return __builtin_isgreaterequal(__x, __y); } + + constexpr bool + isgreaterequal(double __x, double __y) + { return __builtin_isgreaterequal(__x, __y); } + + constexpr bool + isgreaterequal(long double __x, long double __y) + { return __builtin_isgreaterequal(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isgreaterequal(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isgreaterequal(__type(__x), __type(__y)); + } + + + + constexpr bool + isless(float __x, float __y) + { return __builtin_isless(__x, __y); } + + constexpr bool + isless(double __x, double __y) + { return __builtin_isless(__x, __y); } + + constexpr bool + isless(long double __x, long double __y) + { return __builtin_isless(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isless(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isless(__type(__x), __type(__y)); + } + + + + constexpr bool + islessequal(float __x, float __y) + { return __builtin_islessequal(__x, __y); } + + constexpr bool + islessequal(double __x, double __y) + { return __builtin_islessequal(__x, __y); } + + constexpr bool + islessequal(long double __x, long double __y) + { return __builtin_islessequal(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + islessequal(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_islessequal(__type(__x), __type(__y)); + } + + + + constexpr bool + islessgreater(float __x, float __y) + { return __builtin_islessgreater(__x, __y); } + + constexpr bool + islessgreater(double __x, double __y) + { return __builtin_islessgreater(__x, __y); } + + constexpr bool + islessgreater(long double __x, long double __y) + { return __builtin_islessgreater(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + islessgreater(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_islessgreater(__type(__x), __type(__y)); + } + + + + constexpr bool + isunordered(float __x, float __y) + { return __builtin_isunordered(__x, __y); } + + constexpr bool + isunordered(double __x, double __y) + { return __builtin_isunordered(__x, __y); } + + constexpr bool + isunordered(long double __x, long double __y) + { return __builtin_isunordered(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isunordered(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isunordered(__type(__x), __type(__y)); + } +# 1065 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + using ::double_t; + using ::float_t; + + + using ::acosh; + using ::acoshf; + using ::acoshl; + + using ::asinh; + using ::asinhf; + using ::asinhl; + + using ::atanh; + using ::atanhf; + using ::atanhl; + + using ::cbrt; + using ::cbrtf; + using ::cbrtl; + + using ::copysign; + using ::copysignf; + using ::copysignl; + + using ::erf; + using ::erff; + using ::erfl; + + using ::erfc; + using ::erfcf; + using ::erfcl; + + using ::exp2; + using ::exp2f; + using ::exp2l; + + using ::expm1; + using ::expm1f; + using ::expm1l; + + using ::fdim; + using ::fdimf; + using ::fdiml; + + using ::fma; + using ::fmaf; + using ::fmal; + + using ::fmax; + using ::fmaxf; + using ::fmaxl; + + using ::fmin; + using ::fminf; + using ::fminl; + + using ::hypot; + using ::hypotf; + using ::hypotl; + + using ::ilogb; + using ::ilogbf; + using ::ilogbl; + + using ::lgamma; + using ::lgammaf; + using ::lgammal; + + + using ::llrint; + using ::llrintf; + using ::llrintl; + + using ::llround; + using ::llroundf; + using ::llroundl; + + + using ::log1p; + using ::log1pf; + using ::log1pl; + + using ::log2; + using ::log2f; + using ::log2l; + + using ::logb; + using ::logbf; + using ::logbl; + + using ::lrint; + using ::lrintf; + using ::lrintl; + + using ::lround; + using ::lroundf; + using ::lroundl; + + using ::nan; + using ::nanf; + using ::nanl; + + using ::nearbyint; + using ::nearbyintf; + using ::nearbyintl; + + using ::nextafter; + using ::nextafterf; + using ::nextafterl; + + using ::nexttoward; + using ::nexttowardf; + using ::nexttowardl; + + using ::remainder; + using ::remainderf; + using ::remainderl; + + using ::remquo; + using ::remquof; + using ::remquol; + + using ::rint; + using ::rintf; + using ::rintl; + + using ::round; + using ::roundf; + using ::roundl; + + using ::scalbln; + using ::scalblnf; + using ::scalblnl; + + using ::scalbn; + using ::scalbnf; + using ::scalbnl; + + using ::tgamma; + using ::tgammaf; + using ::tgammal; + + using ::trunc; + using ::truncf; + using ::truncl; + + + + constexpr float + acosh(float __x) + { return __builtin_acoshf(__x); } + + constexpr long double + acosh(long double __x) + { return __builtin_acoshl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acosh(_Tp __x) + { return __builtin_acosh(__x); } + + + + constexpr float + asinh(float __x) + { return __builtin_asinhf(__x); } + + constexpr long double + asinh(long double __x) + { return __builtin_asinhl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asinh(_Tp __x) + { return __builtin_asinh(__x); } + + + + constexpr float + atanh(float __x) + { return __builtin_atanhf(__x); } + + constexpr long double + atanh(long double __x) + { return __builtin_atanhl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atanh(_Tp __x) + { return __builtin_atanh(__x); } + + + + constexpr float + cbrt(float __x) + { return __builtin_cbrtf(__x); } + + constexpr long double + cbrt(long double __x) + { return __builtin_cbrtl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cbrt(_Tp __x) + { return __builtin_cbrt(__x); } + + + + constexpr float + copysign(float __x, float __y) + { return __builtin_copysignf(__x, __y); } + + constexpr long double + copysign(long double __x, long double __y) + { return __builtin_copysignl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + copysign(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return copysign(__type(__x), __type(__y)); + } + + + + constexpr float + erf(float __x) + { return __builtin_erff(__x); } + + constexpr long double + erf(long double __x) + { return __builtin_erfl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erf(_Tp __x) + { return __builtin_erf(__x); } + + + + constexpr float + erfc(float __x) + { return __builtin_erfcf(__x); } + + constexpr long double + erfc(long double __x) + { return __builtin_erfcl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erfc(_Tp __x) + { return __builtin_erfc(__x); } + + + + constexpr float + exp2(float __x) + { return __builtin_exp2f(__x); } + + constexpr long double + exp2(long double __x) + { return __builtin_exp2l(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp2(_Tp __x) + { return __builtin_exp2(__x); } + + + + constexpr float + expm1(float __x) + { return __builtin_expm1f(__x); } + + constexpr long double + expm1(long double __x) + { return __builtin_expm1l(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + expm1(_Tp __x) + { return __builtin_expm1(__x); } + + + + constexpr float + fdim(float __x, float __y) + { return __builtin_fdimf(__x, __y); } + + constexpr long double + fdim(long double __x, long double __y) + { return __builtin_fdiml(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fdim(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fdim(__type(__x), __type(__y)); + } + + + + constexpr float + fma(float __x, float __y, float __z) + { return __builtin_fmaf(__x, __y, __z); } + + constexpr long double + fma(long double __x, long double __y, long double __z) + { return __builtin_fmal(__x, __y, __z); } + + + + template + constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type + fma(_Tp __x, _Up __y, _Vp __z) + { + typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; + return fma(__type(__x), __type(__y), __type(__z)); + } + + + + constexpr float + fmax(float __x, float __y) + { return __builtin_fmaxf(__x, __y); } + + constexpr long double + fmax(long double __x, long double __y) + { return __builtin_fmaxl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmax(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmax(__type(__x), __type(__y)); + } + + + + constexpr float + fmin(float __x, float __y) + { return __builtin_fminf(__x, __y); } + + constexpr long double + fmin(long double __x, long double __y) + { return __builtin_fminl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmin(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmin(__type(__x), __type(__y)); + } + + + + constexpr float + hypot(float __x, float __y) + { return __builtin_hypotf(__x, __y); } + + constexpr long double + hypot(long double __x, long double __y) + { return __builtin_hypotl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + hypot(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return hypot(__type(__x), __type(__y)); + } + + + + constexpr int + ilogb(float __x) + { return __builtin_ilogbf(__x); } + + constexpr int + ilogb(long double __x) + { return __builtin_ilogbl(__x); } + + + + template + constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + ilogb(_Tp __x) + { return __builtin_ilogb(__x); } + + + + constexpr float + lgamma(float __x) + { return __builtin_lgammaf(__x); } + + constexpr long double + lgamma(long double __x) + { return __builtin_lgammal(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + lgamma(_Tp __x) + { return __builtin_lgamma(__x); } + + + + constexpr long long + llrint(float __x) + { return __builtin_llrintf(__x); } + + constexpr long long + llrint(long double __x) + { return __builtin_llrintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llrint(_Tp __x) + { return __builtin_llrint(__x); } + + + + constexpr long long + llround(float __x) + { return __builtin_llroundf(__x); } + + constexpr long long + llround(long double __x) + { return __builtin_llroundl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llround(_Tp __x) + { return __builtin_llround(__x); } + + + + constexpr float + log1p(float __x) + { return __builtin_log1pf(__x); } + + constexpr long double + log1p(long double __x) + { return __builtin_log1pl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log1p(_Tp __x) + { return __builtin_log1p(__x); } + + + + + constexpr float + log2(float __x) + { return __builtin_log2f(__x); } + + constexpr long double + log2(long double __x) + { return __builtin_log2l(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log2(_Tp __x) + { return __builtin_log2(__x); } + + + + constexpr float + logb(float __x) + { return __builtin_logbf(__x); } + + constexpr long double + logb(long double __x) + { return __builtin_logbl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + logb(_Tp __x) + { return __builtin_logb(__x); } + + + + constexpr long + lrint(float __x) + { return __builtin_lrintf(__x); } + + constexpr long + lrint(long double __x) + { return __builtin_lrintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lrint(_Tp __x) + { return __builtin_lrint(__x); } + + + + constexpr long + lround(float __x) + { return __builtin_lroundf(__x); } + + constexpr long + lround(long double __x) + { return __builtin_lroundl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lround(_Tp __x) + { return __builtin_lround(__x); } + + + + constexpr float + nearbyint(float __x) + { return __builtin_nearbyintf(__x); } + + constexpr long double + nearbyint(long double __x) + { return __builtin_nearbyintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nearbyint(_Tp __x) + { return __builtin_nearbyint(__x); } + + + + constexpr float + nextafter(float __x, float __y) + { return __builtin_nextafterf(__x, __y); } + + constexpr long double + nextafter(long double __x, long double __y) + { return __builtin_nextafterl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + nextafter(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return nextafter(__type(__x), __type(__y)); + } + + + + constexpr float + nexttoward(float __x, long double __y) + { return __builtin_nexttowardf(__x, __y); } + + constexpr long double + nexttoward(long double __x, long double __y) + { return __builtin_nexttowardl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nexttoward(_Tp __x, long double __y) + { return __builtin_nexttoward(__x, __y); } + + + + constexpr float + remainder(float __x, float __y) + { return __builtin_remainderf(__x, __y); } + + constexpr long double + remainder(long double __x, long double __y) + { return __builtin_remainderl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remainder(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remainder(__type(__x), __type(__y)); + } + + + + inline float + remquo(float __x, float __y, int* __pquo) + { return __builtin_remquof(__x, __y, __pquo); } + + inline long double + remquo(long double __x, long double __y, int* __pquo) + { return __builtin_remquol(__x, __y, __pquo); } + + + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remquo(_Tp __x, _Up __y, int* __pquo) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remquo(__type(__x), __type(__y), __pquo); + } + + + + constexpr float + rint(float __x) + { return __builtin_rintf(__x); } + + constexpr long double + rint(long double __x) + { return __builtin_rintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + rint(_Tp __x) + { return __builtin_rint(__x); } + + + + constexpr float + round(float __x) + { return __builtin_roundf(__x); } + + constexpr long double + round(long double __x) + { return __builtin_roundl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + round(_Tp __x) + { return __builtin_round(__x); } + + + + constexpr float + scalbln(float __x, long __ex) + { return __builtin_scalblnf(__x, __ex); } + + constexpr long double + scalbln(long double __x, long __ex) + { return __builtin_scalblnl(__x, __ex); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbln(_Tp __x, long __ex) + { return __builtin_scalbln(__x, __ex); } + + + + constexpr float + scalbn(float __x, int __ex) + { return __builtin_scalbnf(__x, __ex); } + + constexpr long double + scalbn(long double __x, int __ex) + { return __builtin_scalbnl(__x, __ex); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbn(_Tp __x, int __ex) + { return __builtin_scalbn(__x, __ex); } + + + + constexpr float + tgamma(float __x) + { return __builtin_tgammaf(__x); } + + constexpr long double + tgamma(long double __x) + { return __builtin_tgammal(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tgamma(_Tp __x) + { return __builtin_tgamma(__x); } + + + + constexpr float + trunc(float __x) + { return __builtin_truncf(__x); } + + constexpr long double + trunc(long double __x) + { return __builtin_truncl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + trunc(_Tp __x) + { return __builtin_trunc(__x); } +# 1923 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + +} + + + + + +} +# 37 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h" 2 3 + +using std::abs; +using std::acos; +using std::asin; +using std::atan; +using std::atan2; +using std::cos; +using std::sin; +using std::tan; +using std::cosh; +using std::sinh; +using std::tanh; +using std::exp; +using std::frexp; +using std::ldexp; +using std::log; +using std::log10; +using std::modf; +using std::pow; +using std::sqrt; +using std::ceil; +using std::fabs; +using std::floor; +using std::fmod; + + +using std::fpclassify; +using std::isfinite; +using std::isinf; +using std::isnan; +using std::isnormal; +using std::signbit; +using std::isgreater; +using std::isgreaterequal; +using std::isless; +using std::islessequal; +using std::islessgreater; +using std::isunordered; + + + +using std::acosh; +using std::asinh; +using std::atanh; +using std::cbrt; +using std::copysign; +using std::erf; +using std::erfc; +using std::exp2; +using std::expm1; +using std::fdim; +using std::fma; +using std::fmax; +using std::fmin; +using std::hypot; +using std::ilogb; +using std::lgamma; +using std::llrint; +using std::llround; +using std::log1p; +using std::log2; +using std::logb; +using std::lrint; +using std::lround; +using std::nearbyint; +using std::nextafter; +using std::nexttoward; +using std::remainder; +using std::remquo; +using std::rint; +using std::round; +using std::scalbln; +using std::scalbn; +using std::tgamma; +using std::trunc; +# 10542 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 1 3 +# 10543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +# 10546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +# 10547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 10616 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + +# 10616 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool signbit(float x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool signbit(double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool signbit(long double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isfinite(float x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isfinite(double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isfinite(long double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isnan(float x); + + + + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isnan(double x); + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isnan(long double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isinf(float x); + + + + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isinf(double x); + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isinf(long double x); +} +# 10792 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std +{ + template extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) T __pow_helper(T, int); + template extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) T __cmath_power(T, unsigned int); +} + +using std::abs; +using std::fabs; +using std::ceil; +using std::floor; +using std::sqrt; + +using std::pow; + +using std::log; +using std::log10; +using std::fmod; +using std::modf; +using std::exp; +using std::frexp; +using std::ldexp; +using std::asin; +using std::sin; +using std::sinh; +using std::acos; +using std::cos; +using std::cosh; +using std::atan; +using std::atan2; +using std::tan; +using std::tanh; +# 11193 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +# 11202 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long long int abs(long long int); +# 11212 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long int abs(long int); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float abs(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double abs(double); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float fabs(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float ceil(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float floor(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sqrt(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float pow(float, float); + + + + +template +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) +typename __gnu_cxx::__promote_2<_Tp, _Up>::__type pow(_Tp, _Up); + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float log(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float log10(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float fmod(float, float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float modf(float, float*); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float exp(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float frexp(float, int*); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float ldexp(float, int); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float asin(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sin(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sinh(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float acos(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float cos(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float cosh(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float atan(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float atan2(float, float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float tan(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float tanh(float); +# 11329 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +} +# 11435 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float logb(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr int ilogb(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float scalbn(float a, int b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float scalbln(float a, long int b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float exp2(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float expm1(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float log2(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float log1p(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float acosh(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float asinh(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float atanh(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float hypot(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float cbrt(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float erf(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float erfc(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float lgamma(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float tgamma(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float copysign(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float nextafter(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float remainder(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float remquo(float a, float b, int *quo); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float round(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long int lround(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long long int llround(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float trunc(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float rint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long int lrint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long long int llrint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float nearbyint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fdim(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fma(float a, float b, float c); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fmax(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fmin(float a, float b); +} +# 11574 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float exp10(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float rsqrt(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float rcbrt(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sinpi(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float cospi(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void sincospi(const float a, float *const sptr, float *const cptr); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void sincos(const float a, float *const sptr, float *const cptr); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float j0(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float j1(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float jn(const int n, const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float y0(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float y1(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float yn(const int n, const float a); + +static inline __attribute__((device)) __attribute__((cudart_builtin)) float cyl_bessel_i0(const float a); + +static inline __attribute__((device)) __attribute__((cudart_builtin)) float cyl_bessel_i1(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float erfinv(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float erfcinv(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float normcdfinv(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float normcdf(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float erfcx(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double copysign(const double a, const float b); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double copysign(const float a, const double b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int min(const unsigned int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int min(const int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int min(const unsigned int a, const int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long int min(const long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int min(const unsigned long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int min(const long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int min(const unsigned long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long long int min(const long long int a, const long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int min(const unsigned long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int min(const long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int min(const unsigned long long int a, const long long int b); +# 11715 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float min(const float a, const float b); +# 11726 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double min(const double a, const double b); +# 11736 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double min(const float a, const double b); +# 11746 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double min(const double a, const float b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int max(const unsigned int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int max(const int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int max(const unsigned int a, const int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long int max(const long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int max(const unsigned long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int max(const long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int max(const unsigned long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long long int max(const long long int a, const long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int max(const unsigned long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int max(const long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int max(const unsigned long long int a, const long long int b); +# 11845 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float max(const float a, const float b); +# 11856 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double max(const double a, const double b); +# 11866 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double max(const float a, const double b); +# 11876 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double max(const double a, const float b); +# 11887 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C"{ +inline __attribute__((device)) void *__nv_aligned_device_malloc(size_t size, size_t align) +{ + __attribute__((device)) void *__nv_aligned_device_malloc_impl(size_t, size_t); + return __nv_aligned_device_malloc_impl(size, align); +} +} +# 12173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" 1 +# 77 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 78 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" 2 +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +static inline __attribute__((host)) __attribute__((device)) float exp10(const float a) +{ + return exp10f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float rsqrt(const float a) +{ + return rsqrtf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float rcbrt(const float a) +{ + return rcbrtf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float sinpi(const float a) +{ + return sinpif(a); +} + +static inline __attribute__((host)) __attribute__((device)) float cospi(const float a) +{ + return cospif(a); +} + +static inline __attribute__((host)) __attribute__((device)) void sincospi(const float a, float *const sptr, float *const cptr) +{ + sincospif(a, sptr, cptr); +} + +static inline __attribute__((host)) __attribute__((device)) void sincos(const float a, float *const sptr, float *const cptr) +{ + sincosf(a, sptr, cptr); +} + +static inline __attribute__((host)) __attribute__((device)) float j0(const float a) +{ + return j0f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float j1(const float a) +{ + return j1f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float jn(const int n, const float a) +{ + return jnf(n, a); +} + +static inline __attribute__((host)) __attribute__((device)) float y0(const float a) +{ + return y0f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float y1(const float a) +{ + return y1f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float yn(const int n, const float a) +{ + return ynf(n, a); +} + +static inline __attribute__((device)) float cyl_bessel_i0(const float a) +{ + return cyl_bessel_i0f(a); +} + +static inline __attribute__((device)) float cyl_bessel_i1(const float a) +{ + return cyl_bessel_i1f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float erfinv(const float a) +{ + return erfinvf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float erfcinv(const float a) +{ + return erfcinvf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float normcdfinv(const float a) +{ + return normcdfinvf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float normcdf(const float a) +{ + return normcdff(a); +} + +static inline __attribute__((host)) __attribute__((device)) float erfcx(const float a) +{ + return erfcxf(a); +} + +static inline __attribute__((host)) __attribute__((device)) double copysign(const double a, const float b) +{ + return copysign(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) double copysign(const float a, const double b) +{ + return copysign(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int min(const unsigned int a, const unsigned int b) +{ + return umin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int min(const int a, const unsigned int b) +{ + return umin(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int min(const unsigned int a, const int b) +{ + return umin(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) long int min(const long int a, const long int b) +{ + long int retval; + + + + + + if (sizeof(long int) == sizeof(int)) { + + + + retval = static_cast(min(static_cast(a), static_cast(b))); + } else { + retval = static_cast(llmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int min(const unsigned long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umin(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int min(const long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umin(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int min(const unsigned long int a, const long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umin(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) long long int min(const long long int a, const long long int b) +{ + return llmin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int min(const unsigned long long int a, const unsigned long long int b) +{ + return ullmin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int min(const long long int a, const unsigned long long int b) +{ + return ullmin(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int min(const unsigned long long int a, const long long int b) +{ + return ullmin(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) float min(const float a, const float b) +{ + return fminf(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double min(const double a, const double b) +{ + return fmin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double min(const float a, const double b) +{ + return fmin(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) double min(const double a, const float b) +{ + return fmin(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int max(const unsigned int a, const unsigned int b) +{ + return umax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int max(const int a, const unsigned int b) +{ + return umax(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int max(const unsigned int a, const int b) +{ + return umax(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) long int max(const long int a, const long int b) +{ + long int retval; + + + + + if (sizeof(long int) == sizeof(int)) { + + + + retval = static_cast(max(static_cast(a), static_cast(b))); + } else { + retval = static_cast(llmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int max(const unsigned long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umax(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int max(const long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umax(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int max(const unsigned long int a, const long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umax(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) long long int max(const long long int a, const long long int b) +{ + return llmax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int max(const unsigned long long int a, const unsigned long long int b) +{ + return ullmax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int max(const long long int a, const unsigned long long int b) +{ + return ullmax(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int max(const unsigned long long int a, const long long int b) +{ + return ullmax(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) float max(const float a, const float b) +{ + return fmaxf(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double max(const double a, const double b) +{ + return fmax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double max(const float a, const double b) +{ + return fmax(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) double max(const double a, const float b) +{ + return fmax(a, static_cast(b)); +} +# 12174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 304 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_surface_types.h" 1 +# 74 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_surface_types.h" +template +struct __attribute__((device_builtin_surface_type)) surface : public surfaceReference +{ + + __attribute__((host)) surface(void) + { + channelDesc = cudaCreateChannelDesc(); + } + + __attribute__((host)) surface(struct cudaChannelFormatDesc desc) + { + channelDesc = desc; + } + +}; + +template +struct __attribute__((device_builtin_surface_type)) surface : public surfaceReference +{ + + __attribute__((host)) surface(void) + { + channelDesc = cudaCreateChannelDesc(); + } + +}; +# 117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_texture_types.h" 1 +# 74 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_texture_types.h" +template +struct __attribute__((device_builtin_texture_type)) texture : public textureReference +{ + + __attribute__((host)) texture(int norm = 0, + enum cudaTextureFilterMode fMode = cudaFilterModePoint, + enum cudaTextureAddressMode aMode = cudaAddressModeClamp) + { + normalized = norm; + filterMode = fMode; + addressMode[0] = aMode; + addressMode[1] = aMode; + addressMode[2] = aMode; + channelDesc = cudaCreateChannelDesc(); + sRGB = 0; + } + + __attribute__((host)) texture(int norm, + enum cudaTextureFilterMode fMode, + enum cudaTextureAddressMode aMode, + struct cudaChannelFormatDesc desc) + { + normalized = norm; + filterMode = fMode; + addressMode[0] = aMode; + addressMode[1] = aMode; + addressMode[2] = aMode; + channelDesc = desc; + sRGB = 0; + } + +}; +# 118 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 80 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" 1 +# 81 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 + + + + + + + +extern "C" +{ +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __mulhi(int x, int y); +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __umulhi(unsigned int x, unsigned int y); +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __mul64hi(long long int x, long long int y); +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __umul64hi(unsigned long long int x, unsigned long long int y); +# 139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int_as_float(int x); +# 148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float_as_int(float x); +# 157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint_as_float(unsigned int x); +# 166 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float_as_uint(float x); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __syncthreads(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __prof_trigger(int); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __threadfence(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __threadfence_block(void); +__attribute__((device)) __attribute__((cudart_builtin)) + +__attribute__((__noreturn__)) + + + +__attribute__((device_builtin)) void __trap(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __brkpt(); +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __saturatef(float x); +# 270 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __sad(int x, int y, unsigned int z); +# 338 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __usad(unsigned int x, unsigned int y, unsigned int z); +# 348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __mul24(int x, int y); +# 358 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __umul24(unsigned int x, unsigned int y); +# 371 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float fdividef(float x, float y); +# 444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdividef(float x, float y); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) double fdivide(double x, double y); +# 457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __sinf(float x) +# 457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __cosf(float x) +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __tanf(float x) +# 481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 496 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) void __sincosf(float x, float *sptr, float *cptr) +# 496 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 496 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __expf(float x) +# 545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 576 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __exp10f(float x) +# 576 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 576 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __log2f(float x) +# 601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __log10f(float x) +# 628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 671 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __logf(float x) +# 671 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 671 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 713 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __powf(float x, float y) +# 713 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 713 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 722 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_rn(float x); +# 731 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_rz(float x); +# 740 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_ru(float); +# 749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_rd(float x); +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_rn(float x); +# 767 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_rz(float x); +# 776 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_ru(float x); +# 785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_rd(float x); +# 794 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_rn(int x); +# 803 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_rz(int x); +# 812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_ru(int x); +# 821 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_rd(int x); +# 830 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_rn(unsigned int x); +# 839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_rz(unsigned int x); +# 848 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_ru(unsigned int x); +# 857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_rd(unsigned int x); +# 866 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_rn(float x); +# 875 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_rz(float x); +# 884 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_ru(float x); +# 893 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_rd(float x); +# 902 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_rn(float x); +# 911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_rz(float x); +# 920 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_ru(float x); +# 929 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_rd(float x); +# 938 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_rn(long long int x); +# 947 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_rz(long long int x); +# 956 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_ru(long long int x); +# 965 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_rd(long long int x); +# 974 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_rn(unsigned long long int x); +# 983 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_rz(unsigned long long int x); +# 992 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_ru(unsigned long long int x); +# 1001 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_rd(unsigned long long int x); +# 1013 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_rn(float x, float y); +# 1025 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_rz(float x, float y); +# 1037 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_ru(float x, float y); +# 1049 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_rd(float x, float y); +# 1061 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_rn(float x, float y); +# 1073 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_rz(float x, float y); +# 1085 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_ru(float x, float y); +# 1097 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_rd(float x, float y); +# 1109 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_rn(float x, float y); +# 1121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_rz(float x, float y); +# 1133 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_ru(float x, float y); +# 1145 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_rd(float x, float y); +# 1298 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_rn(float x, float y, float z); +# 1451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_rz(float x, float y, float z); +# 1604 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_ru(float x, float y, float z); +# 1757 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_rd(float x, float y, float z); +# 1790 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_rn(float x); +# 1823 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_rz(float x); +# 1856 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_ru(float x); +# 1889 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_rd(float x); +# 1920 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_rn(float x); +# 1951 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_rz(float x); +# 1982 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_ru(float x); +# 2013 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_rd(float x); +# 2052 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frsqrt_rn(float x); +# 2063 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_rn(float x, float y); +# 2074 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_rz(float x, float y); +# 2085 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_ru(float x, float y); +# 2096 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_rd(float x, float y); +# 2105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __clz(int x); +# 2116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __ffs(int x); +# 2125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __popc(unsigned int x); +# 2134 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __brev(unsigned int x); +# 2143 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __clzll(long long int x); +# 2154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __ffsll(long long int x); +# 2165 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __popcll(unsigned long long int x); +# 2174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __brevll(unsigned long long int x); +# 2198 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __byte_perm(unsigned int x, unsigned int y, unsigned int s); +# 2210 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __hadd(int x, int y); +# 2223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __rhadd(int x, int y); +# 2235 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __uhadd(unsigned int x, unsigned int y); +# 2248 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __urhadd(unsigned int x, unsigned int y); +# 2258 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __double2int_rz(double x); +# 2267 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __double2uint_rz(double x); +# 2276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __double2ll_rz(double x); +# 2285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __double2ull_rz(double x); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm0(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm1(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm2(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm3(void); +# 2315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabs2(unsigned int a); +# 2326 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsss2(unsigned int a); +# 2337 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vadd2(unsigned int a, unsigned int b); +# 2348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddss2 (unsigned int a, unsigned int b); +# 2358 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddus2 (unsigned int a, unsigned int b); +# 2369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgs2(unsigned int a, unsigned int b); +# 2380 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgu2(unsigned int a, unsigned int b); +# 2391 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vhaddu2(unsigned int a, unsigned int b); +# 2402 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpeq2(unsigned int a, unsigned int b); +# 2413 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpges2(unsigned int a, unsigned int b); +# 2424 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgeu2(unsigned int a, unsigned int b); +# 2435 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgts2(unsigned int a, unsigned int b); +# 2446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgtu2(unsigned int a, unsigned int b); +# 2457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmples2(unsigned int a, unsigned int b); +# 2469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpleu2(unsigned int a, unsigned int b); +# 2480 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmplts2(unsigned int a, unsigned int b); +# 2491 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpltu2(unsigned int a, unsigned int b); +# 2502 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpne2(unsigned int a, unsigned int b); +# 2513 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffu2(unsigned int a, unsigned int b); +# 2524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxs2(unsigned int a, unsigned int b); +# 2535 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxu2(unsigned int a, unsigned int b); +# 2546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmins2(unsigned int a, unsigned int b); +# 2557 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vminu2(unsigned int a, unsigned int b); +# 2568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vseteq2(unsigned int a, unsigned int b); +# 2579 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetges2(unsigned int a, unsigned int b); +# 2590 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgeu2(unsigned int a, unsigned int b); +# 2601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgts2(unsigned int a, unsigned int b); +# 2612 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgtu2(unsigned int a, unsigned int b); +# 2623 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetles2(unsigned int a, unsigned int b); +# 2634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetleu2(unsigned int a, unsigned int b); +# 2645 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetlts2(unsigned int a, unsigned int b); +# 2656 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetltu2(unsigned int a, unsigned int b); +# 2667 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetne2(unsigned int a, unsigned int b); +# 2678 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsadu2(unsigned int a, unsigned int b); +# 2689 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsub2(unsigned int a, unsigned int b); +# 2700 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubss2 (unsigned int a, unsigned int b); +# 2711 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubus2 (unsigned int a, unsigned int b); +# 2721 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vneg2(unsigned int a); +# 2731 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vnegss2(unsigned int a); +# 2742 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffs2(unsigned int a, unsigned int b); +# 2753 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsads2(unsigned int a, unsigned int b); +# 2763 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabs4(unsigned int a); +# 2774 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsss4(unsigned int a); +# 2785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vadd4(unsigned int a, unsigned int b); +# 2796 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddss4 (unsigned int a, unsigned int b); +# 2806 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddus4 (unsigned int a, unsigned int b); +# 2817 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgs4(unsigned int a, unsigned int b); +# 2828 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgu4(unsigned int a, unsigned int b); +# 2839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vhaddu4(unsigned int a, unsigned int b); +# 2850 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpeq4(unsigned int a, unsigned int b); +# 2861 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpges4(unsigned int a, unsigned int b); +# 2872 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgeu4(unsigned int a, unsigned int b); +# 2883 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgts4(unsigned int a, unsigned int b); +# 2894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgtu4(unsigned int a, unsigned int b); +# 2905 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmples4(unsigned int a, unsigned int b); +# 2916 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpleu4(unsigned int a, unsigned int b); +# 2927 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmplts4(unsigned int a, unsigned int b); +# 2938 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpltu4(unsigned int a, unsigned int b); +# 2949 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpne4(unsigned int a, unsigned int b); +# 2960 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffu4(unsigned int a, unsigned int b); +# 2971 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxs4(unsigned int a, unsigned int b); +# 2982 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxu4(unsigned int a, unsigned int b); +# 2993 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmins4(unsigned int a, unsigned int b); +# 3004 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vminu4(unsigned int a, unsigned int b); +# 3015 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vseteq4(unsigned int a, unsigned int b); +# 3026 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetles4(unsigned int a, unsigned int b); +# 3037 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetleu4(unsigned int a, unsigned int b); +# 3048 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetlts4(unsigned int a, unsigned int b); +# 3059 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetltu4(unsigned int a, unsigned int b); +# 3070 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetges4(unsigned int a, unsigned int b); +# 3081 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgeu4(unsigned int a, unsigned int b); +# 3092 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgts4(unsigned int a, unsigned int b); +# 3103 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgtu4(unsigned int a, unsigned int b); +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetne4(unsigned int a, unsigned int b); +# 3125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsadu4(unsigned int a, unsigned int b); +# 3136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsub4(unsigned int a, unsigned int b); +# 3147 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubss4(unsigned int a, unsigned int b); +# 3158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubus4(unsigned int a, unsigned int b); +# 3168 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vneg4(unsigned int a); +# 3178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vnegss4(unsigned int a); +# 3189 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffs4(unsigned int a, unsigned int b); +# 3200 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsads4(unsigned int a, unsigned int b); + + + + + + +} +# 3229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int mulhi(const int a, const int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int mulhi(const unsigned int a, const unsigned int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int mulhi(const int a, const unsigned int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int mulhi(const unsigned int a, const int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long int mul64hi(const long long int a, const long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long int mul64hi(const unsigned long long int a, const unsigned long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long int mul64hi(const long long int a, const unsigned long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long int mul64hi(const unsigned long long int a, const long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float_as_int" "() is deprecated in favor of __" "float_as_int" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int float_as_int(const float a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("int_as_float" "() is deprecated in favor of __" "int_as_float" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float int_as_float(const int a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float_as_uint" "() is deprecated in favor of __" "float_as_uint" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int float_as_uint(const float a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("uint_as_float" "() is deprecated in favor of __" "uint_as_float" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float uint_as_float(const unsigned int a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("saturate" "() is deprecated in favor of __" "saturate" "f" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float saturate(const float a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul24" "() is deprecated in favor of __" "mul24" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int mul24(const int a, const int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("umul24" "() is deprecated in favor of __" "umul24" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int umul24(const unsigned int a, const unsigned int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float2int" "() is deprecated in favor of __" "float2int" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int float2int(const float a, const enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float2uint" "() is deprecated in favor of __" "float2uint" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int float2uint(const float a, const enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("int2float" "() is deprecated in favor of __" "int2float" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float int2float(const int a, const enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("uint2float" "() is deprecated in favor of __" "uint2float" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float uint2float(const unsigned int a, const enum cudaRoundMode mode = cudaRoundNearest); +# 3285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 80 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" 2 +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +static __inline__ __attribute__((device)) int mulhi(const int a, const int b) +{ + return __mulhi(a, b); +} + +static __inline__ __attribute__((device)) unsigned int mulhi(const unsigned int a, const unsigned int b) +{ + return __umulhi(a, b); +} + +static __inline__ __attribute__((device)) unsigned int mulhi(const int a, const unsigned int b) +{ + return __umulhi(static_cast(a), b); +} + +static __inline__ __attribute__((device)) unsigned int mulhi(const unsigned int a, const int b) +{ + return __umulhi(a, static_cast(b)); +} + +static __inline__ __attribute__((device)) long long int mul64hi(const long long int a, const long long int b) +{ + return __mul64hi(a, b); +} + +static __inline__ __attribute__((device)) unsigned long long int mul64hi(const unsigned long long int a, const unsigned long long int b) +{ + return __umul64hi(a, b); +} + +static __inline__ __attribute__((device)) unsigned long long int mul64hi(const long long int a, const unsigned long long int b) +{ + return __umul64hi(static_cast(a), b); +} + +static __inline__ __attribute__((device)) unsigned long long int mul64hi(const unsigned long long int a, const long long int b) +{ + return __umul64hi(a, static_cast(b)); +} + +static __inline__ __attribute__((device)) int float_as_int(const float a) +{ + return __float_as_int(a); +} + +static __inline__ __attribute__((device)) float int_as_float(const int a) +{ + return __int_as_float(a); +} + +static __inline__ __attribute__((device)) unsigned int float_as_uint(const float a) +{ + return __float_as_uint(a); +} + +static __inline__ __attribute__((device)) float uint_as_float(const unsigned int a) +{ + return __uint_as_float(a); +} +static __inline__ __attribute__((device)) float saturate(const float a) +{ + return __saturatef(a); +} + +static __inline__ __attribute__((device)) int mul24(const int a, const int b) +{ + return __mul24(a, b); +} + +static __inline__ __attribute__((device)) unsigned int umul24(const unsigned int a, const unsigned int b) +{ + return __umul24(a, b); +} + +static __inline__ __attribute__((device)) int float2int(const float a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundNearest) ? __float2int_rn(a) : + (mode == cudaRoundPosInf ) ? __float2int_ru(a) : + (mode == cudaRoundMinInf ) ? __float2int_rd(a) : + __float2int_rz(a); +} + +static __inline__ __attribute__((device)) unsigned int float2uint(const float a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundNearest) ? __float2uint_rn(a) : + (mode == cudaRoundPosInf ) ? __float2uint_ru(a) : + (mode == cudaRoundMinInf ) ? __float2uint_rd(a) : + __float2uint_rz(a); +} + +static __inline__ __attribute__((device)) float int2float(const int a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundZero ) ? __int2float_rz(a) : + (mode == cudaRoundPosInf) ? __int2float_ru(a) : + (mode == cudaRoundMinInf) ? __int2float_rd(a) : + __int2float_rn(a); +} + +static __inline__ __attribute__((device)) float uint2float(const unsigned int a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundZero ) ? __uint2float_rz(a) : + (mode == cudaRoundPosInf) ? __uint2float_ru(a) : + (mode == cudaRoundMinInf) ? __uint2float_rd(a) : + __uint2float_rn(a); +} +# 3286 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" 1 +# 76 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +extern "C" +{ +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicAdd(int *address, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicAdd(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicExch(int *address, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicExch(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) float __fAtomicExch(float *address, float val); +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicMin(int *address, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicMin(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicMax(int *address, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicMax(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicInc(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicDec(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicAnd(int *address, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicAnd(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicOr(int *address, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicOr(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicXor(int *address, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicXor(unsigned int *address, unsigned int val); +extern __attribute__((device)) __attribute__((device_builtin)) int __iAtomicCAS(int *address, int compare, int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __uAtomicCAS(unsigned int *address, unsigned int compare, unsigned int val); +} +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +static __inline__ __attribute__((device)) int atomicAdd(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicAdd(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) int atomicSub(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicSub(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) int atomicExch(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicExch(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) float atomicExch(float *address, float val) ; + +static __inline__ __attribute__((device)) int atomicMin(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicMin(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) int atomicMax(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicMax(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicInc(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicDec(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) int atomicAnd(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicAnd(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) int atomicOr(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicOr(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) int atomicXor(int *address, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicXor(unsigned int *address, unsigned int val) ; + +static __inline__ __attribute__((device)) int atomicCAS(int *address, int compare, int val) ; + +static __inline__ __attribute__((device)) unsigned int atomicCAS(unsigned int *address, unsigned int compare, unsigned int val) ; +# 171 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +extern "C" +{ + +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __ullAtomicAdd(unsigned long long int *address, unsigned long long int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __ullAtomicExch(unsigned long long int *address, unsigned long long int val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __ullAtomicCAS(unsigned long long int *address, unsigned long long int compare, unsigned long long int val); + +extern __attribute__((device)) __attribute__((device_builtin)) __attribute__((deprecated("__any""() is deprecated in favor of ""__any""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __any(int cond); +extern __attribute__((device)) __attribute__((device_builtin)) __attribute__((deprecated("__all""() is deprecated in favor of ""__all""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __all(int cond); +} +# 189 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +static __inline__ __attribute__((device)) unsigned long long int atomicAdd(unsigned long long int *address, unsigned long long int val) ; + +static __inline__ __attribute__((device)) unsigned long long int atomicExch(unsigned long long int *address, unsigned long long int val) ; + +static __inline__ __attribute__((device)) unsigned long long int atomicCAS(unsigned long long int *address, unsigned long long int compare, unsigned long long int val) ; + +static __inline__ __attribute__((device)) __attribute__((deprecated("__any""() is deprecated in favor of ""__any""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) bool any(bool cond) ; + +static __inline__ __attribute__((device)) __attribute__((deprecated("__all""() is deprecated in favor of ""__all""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) bool all(bool cond) ; +# 208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.hpp" 1 +# 75 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.hpp" +static __inline__ __attribute__((device)) int atomicAdd(int *address, int val) +{ + return __iAtomicAdd(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicAdd(unsigned int *address, unsigned int val) +{ + return __uAtomicAdd(address, val); +} + +static __inline__ __attribute__((device)) int atomicSub(int *address, int val) +{ + return __iAtomicAdd(address, (unsigned int)-(int)val); +} + +static __inline__ __attribute__((device)) unsigned int atomicSub(unsigned int *address, unsigned int val) +{ + return __uAtomicAdd(address, (unsigned int)-(int)val); +} + +static __inline__ __attribute__((device)) int atomicExch(int *address, int val) +{ + return __iAtomicExch(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicExch(unsigned int *address, unsigned int val) +{ + return __uAtomicExch(address, val); +} + +static __inline__ __attribute__((device)) float atomicExch(float *address, float val) +{ + return __fAtomicExch(address, val); +} + +static __inline__ __attribute__((device)) int atomicMin(int *address, int val) +{ + return __iAtomicMin(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicMin(unsigned int *address, unsigned int val) +{ + return __uAtomicMin(address, val); +} + +static __inline__ __attribute__((device)) int atomicMax(int *address, int val) +{ + return __iAtomicMax(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicMax(unsigned int *address, unsigned int val) +{ + return __uAtomicMax(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicInc(unsigned int *address, unsigned int val) +{ + return __uAtomicInc(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicDec(unsigned int *address, unsigned int val) +{ + return __uAtomicDec(address, val); +} + +static __inline__ __attribute__((device)) int atomicAnd(int *address, int val) +{ + return __iAtomicAnd(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicAnd(unsigned int *address, unsigned int val) +{ + return __uAtomicAnd(address, val); +} + +static __inline__ __attribute__((device)) int atomicOr(int *address, int val) +{ + return __iAtomicOr(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicOr(unsigned int *address, unsigned int val) +{ + return __uAtomicOr(address, val); +} + +static __inline__ __attribute__((device)) int atomicXor(int *address, int val) +{ + return __iAtomicXor(address, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicXor(unsigned int *address, unsigned int val) +{ + return __uAtomicXor(address, val); +} + +static __inline__ __attribute__((device)) int atomicCAS(int *address, int compare, int val) +{ + return __iAtomicCAS(address, compare, val); +} + +static __inline__ __attribute__((device)) unsigned int atomicCAS(unsigned int *address, unsigned int compare, unsigned int val) +{ + return __uAtomicCAS(address, compare, val); +} +# 194 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.hpp" +static __inline__ __attribute__((device)) unsigned long long int atomicAdd(unsigned long long int *address, unsigned long long int val) +{ + return __ullAtomicAdd(address, val); +} + +static __inline__ __attribute__((device)) unsigned long long int atomicExch(unsigned long long int *address, unsigned long long int val) +{ + return __ullAtomicExch(address, val); +} + +static __inline__ __attribute__((device)) unsigned long long int atomicCAS(unsigned long long int *address, unsigned long long int compare, unsigned long long int val) +{ + return __ullAtomicCAS(address, compare, val); +} + +static __inline__ __attribute__((device)) bool any(bool cond) +{ + return (bool)__any((int)cond); +} + +static __inline__ __attribute__((device)) bool all(bool cond) +{ + return (bool)__all((int)cond); +} +# 209 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" 2 +# 3289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 1 +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 86 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 2 + +extern "C" +{ +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double_as_longlong(double x); +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __longlong_as_double(long long int x); +# 263 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rn(double x, double y, double z); +# 420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rz(double x, double y, double z); +# 577 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_ru(double x, double y, double z); +# 734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rd(double x, double y, double z); +# 746 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rn(double x, double y); +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rz(double x, double y); +# 770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_ru(double x, double y); +# 782 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rd(double x, double y); +# 794 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rn(double x, double y); +# 806 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rz(double x, double y); +# 818 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_ru(double x, double y); +# 830 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rd(double x, double y); +# 842 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rn(double x, double y); +# 854 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rz(double x, double y); +# 866 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_ru(double x, double y); +# 878 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rd(double x, double y); +# 887 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rn(double x); +# 896 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rz(double x); +# 905 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_ru(double x); +# 914 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rd(double x); +# 923 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rn(double x); +# 932 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_ru(double x); +# 941 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rd(double x); +# 950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rn(double x); +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_ru(double x); +# 968 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rd(double x); +# 977 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rn(double x); +# 986 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_ru(double x); +# 995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rd(double x); +# 1004 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rn(double x); +# 1013 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_ru(double x); +# 1022 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rd(double x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __int2double_rn(int x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __uint2double_rn(unsigned int x); +# 1047 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rn(long long int x); +# 1056 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rz(long long int x); +# 1065 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_ru(long long int x); +# 1074 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rd(long long int x); +# 1083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rn(unsigned long long int x); +# 1092 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rz(unsigned long long int x); +# 1101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_ru(unsigned long long int x); +# 1110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rd(unsigned long long int x); +# 1119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2hiint(double x); +# 1128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2loint(double x); +# 1138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __hiloint2double(int hi, int lo); +} + + + + + + + +static __inline__ __attribute__((device)) double fma(double a, double b, double c, enum cudaRoundMode mode); + +static __inline__ __attribute__((device)) double dmul(double a, double b, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double dadd(double a, double b, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double dsub(double a, double b, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) int double2int(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) unsigned int double2uint(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) long long int double2ll(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) unsigned long long int double2ull(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) double ll2double(long long int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double ull2double(unsigned long long int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double int2double(int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double uint2double(unsigned int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double float2double(float a, enum cudaRoundMode mode = cudaRoundNearest); + + + + + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" 1 +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 86 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" 2 + + + + + + + +static __inline__ __attribute__((device)) double fma(double a, double b, double c, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __fma_rz(a, b, c) : + mode == cudaRoundPosInf ? __fma_ru(a, b, c) : + mode == cudaRoundMinInf ? __fma_rd(a, b, c) : + __fma_rn(a, b, c); +} + +static __inline__ __attribute__((device)) double dmul(double a, double b, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __dmul_rz(a, b) : + mode == cudaRoundPosInf ? __dmul_ru(a, b) : + mode == cudaRoundMinInf ? __dmul_rd(a, b) : + __dmul_rn(a, b); +} + +static __inline__ __attribute__((device)) double dadd(double a, double b, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __dadd_rz(a, b) : + mode == cudaRoundPosInf ? __dadd_ru(a, b) : + mode == cudaRoundMinInf ? __dadd_rd(a, b) : + __dadd_rn(a, b); +} + +static __inline__ __attribute__((device)) double dsub(double a, double b, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __dsub_rz(a, b) : + mode == cudaRoundPosInf ? __dsub_ru(a, b) : + mode == cudaRoundMinInf ? __dsub_rd(a, b) : + __dsub_rn(a, b); +} + +static __inline__ __attribute__((device)) int double2int(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2int_rn(a) : + mode == cudaRoundPosInf ? __double2int_ru(a) : + mode == cudaRoundMinInf ? __double2int_rd(a) : + __double2int_rz(a); +} + +static __inline__ __attribute__((device)) unsigned int double2uint(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2uint_rn(a) : + mode == cudaRoundPosInf ? __double2uint_ru(a) : + mode == cudaRoundMinInf ? __double2uint_rd(a) : + __double2uint_rz(a); +} + +static __inline__ __attribute__((device)) long long int double2ll(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2ll_rn(a) : + mode == cudaRoundPosInf ? __double2ll_ru(a) : + mode == cudaRoundMinInf ? __double2ll_rd(a) : + __double2ll_rz(a); +} + +static __inline__ __attribute__((device)) unsigned long long int double2ull(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2ull_rn(a) : + mode == cudaRoundPosInf ? __double2ull_ru(a) : + mode == cudaRoundMinInf ? __double2ull_rd(a) : + __double2ull_rz(a); +} + +static __inline__ __attribute__((device)) double ll2double(long long int a, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __ll2double_rz(a) : + mode == cudaRoundPosInf ? __ll2double_ru(a) : + mode == cudaRoundMinInf ? __ll2double_rd(a) : + __ll2double_rn(a); +} + +static __inline__ __attribute__((device)) double ull2double(unsigned long long int a, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __ull2double_rz(a) : + mode == cudaRoundPosInf ? __ull2double_ru(a) : + mode == cudaRoundMinInf ? __ull2double_rd(a) : + __ull2double_rn(a); +} + +static __inline__ __attribute__((device)) double int2double(int a, enum cudaRoundMode mode) +{ + return (double)a; +} + +static __inline__ __attribute__((device)) double uint2double(unsigned int a, enum cudaRoundMode mode) +{ + return (double)a; +} + +static __inline__ __attribute__((device)) double float2double(float a, enum cudaRoundMode mode) +{ + return (double)a; +} +# 1179 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 2 +# 3290 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.h" 1 +# 77 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.h" +extern "C" +{ +extern __attribute__((device)) __attribute__((device_builtin)) float __fAtomicAdd(float *address, float val); +} +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.h" +static __inline__ __attribute__((device)) float atomicAdd(float *address, float val) ; + + + + + + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.hpp" 1 +# 75 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.hpp" +static __inline__ __attribute__((device)) float atomicAdd(float *address, float val) +{ + return __fAtomicAdd(address, val); +} +# 98 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.h" 2 +# 3291 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +extern "C" +{ +extern __attribute__((device)) __attribute__((device_builtin)) long long __illAtomicMin(long long *address, long long val); +extern __attribute__((device)) __attribute__((device_builtin)) long long __illAtomicMax(long long *address, long long val); +extern __attribute__((device)) __attribute__((device_builtin)) long long __llAtomicAnd(long long *address, long long val); +extern __attribute__((device)) __attribute__((device_builtin)) long long __llAtomicOr(long long *address, long long val); +extern __attribute__((device)) __attribute__((device_builtin)) long long __llAtomicXor(long long *address, long long val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long __ullAtomicMin(unsigned long long *address, unsigned long long val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long __ullAtomicMax(unsigned long long *address, unsigned long long val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long __ullAtomicAnd(unsigned long long *address, unsigned long long val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long __ullAtomicOr (unsigned long long *address, unsigned long long val); +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long __ullAtomicXor(unsigned long long *address, unsigned long long val); +} +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +static __inline__ __attribute__((device)) long long atomicMin(long long *address, long long val) ; + +static __inline__ __attribute__((device)) long long atomicMax(long long *address, long long val) ; + +static __inline__ __attribute__((device)) long long atomicAnd(long long *address, long long val) ; + +static __inline__ __attribute__((device)) long long atomicOr(long long *address, long long val) ; + +static __inline__ __attribute__((device)) long long atomicXor(long long *address, long long val) ; + +static __inline__ __attribute__((device)) unsigned long long atomicMin(unsigned long long *address, unsigned long long val) ; + +static __inline__ __attribute__((device)) unsigned long long atomicMax(unsigned long long *address, unsigned long long val) ; + +static __inline__ __attribute__((device)) unsigned long long atomicAnd(unsigned long long *address, unsigned long long val) ; + +static __inline__ __attribute__((device)) unsigned long long atomicOr(unsigned long long *address, unsigned long long val) ; + +static __inline__ __attribute__((device)) unsigned long long atomicXor(unsigned long long *address, unsigned long long val) ; +# 128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.hpp" 1 +# 77 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.hpp" +static __inline__ __attribute__((device)) long long atomicMin(long long *address, long long val) +{ + return __illAtomicMin(address, val); +} + +static __inline__ __attribute__((device)) long long atomicMax(long long *address, long long val) +{ + return __illAtomicMax(address, val); +} + +static __inline__ __attribute__((device)) long long atomicAnd(long long *address, long long val) +{ + return __llAtomicAnd(address, val); +} + +static __inline__ __attribute__((device)) long long atomicOr(long long *address, long long val) +{ + return __llAtomicOr(address, val); +} + +static __inline__ __attribute__((device)) long long atomicXor(long long *address, long long val) +{ + return __llAtomicXor(address, val); +} + +static __inline__ __attribute__((device)) unsigned long long atomicMin(unsigned long long *address, unsigned long long val) +{ + return __ullAtomicMin(address, val); +} + +static __inline__ __attribute__((device)) unsigned long long atomicMax(unsigned long long *address, unsigned long long val) +{ + return __ullAtomicMax(address, val); +} + +static __inline__ __attribute__((device)) unsigned long long atomicAnd(unsigned long long *address, unsigned long long val) +{ + return __ullAtomicAnd(address, val); +} + +static __inline__ __attribute__((device)) unsigned long long atomicOr(unsigned long long *address, unsigned long long val) +{ + return __ullAtomicOr(address, val); +} + +static __inline__ __attribute__((device)) unsigned long long atomicXor(unsigned long long *address, unsigned long long val) +{ + return __ullAtomicXor(address, val); +} +# 129 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" 2 +# 3292 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_atomic_functions.h" 1 +# 56 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_atomic_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" 1 +# 57 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_atomic_functions.h" 2 +# 3293 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" 1 +# 535 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.hpp" 1 +# 536 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" 2 +# 3294 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" 1 +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern "C" +{ +extern __attribute__((device)) __attribute__((device_builtin)) void __threadfence_system(void); +# 104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_rn(double x, double y); +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_rz(double x, double y); +# 128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_ru(double x, double y); +# 140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_rd(double x, double y); +# 174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_rn(double x); +# 208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_rz(double x); +# 242 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_ru(double x); +# 276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_rd(double x); +# 308 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_rn(double x); +# 340 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_rz(double x); +# 372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_ru(double x); +# 404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_rd(double x); +extern __attribute__((device)) __attribute__((device_builtin)) __attribute__((deprecated("__ballot""() is deprecated in favor of ""__ballot""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __ballot(int); +extern __attribute__((device)) __attribute__((device_builtin)) int __syncthreads_count(int); +extern __attribute__((device)) __attribute__((device_builtin)) int __syncthreads_and(int); +extern __attribute__((device)) __attribute__((device_builtin)) int __syncthreads_or(int); +extern __attribute__((device)) __attribute__((device_builtin)) long long int clock64(void); +# 419 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_rn(float x, float y, float z); +# 428 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_rd(float x, float y, float z); +# 437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_ru(float x, float y, float z); +# 446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_rz(float x, float y, float z); +# 459 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double_as_longlong(double x); +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __longlong_as_double(long long int x); +# 625 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rn(double x, double y, double z); +# 782 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rz(double x, double y, double z); +# 939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_ru(double x, double y, double z); +# 1096 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rd(double x, double y, double z); +# 1108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rn(double x, double y); +# 1120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rz(double x, double y); +# 1132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_ru(double x, double y); +# 1144 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rd(double x, double y); +# 1156 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rn(double x, double y); +# 1168 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rz(double x, double y); +# 1180 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_ru(double x, double y); +# 1192 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rd(double x, double y); +# 1204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rn(double x, double y); +# 1216 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rz(double x, double y); +# 1228 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_ru(double x, double y); +# 1240 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rd(double x, double y); +# 1249 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rn(double x); +# 1258 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rz(double x); +# 1267 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_ru(double x); +# 1276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rd(double x); +# 1285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rn(double x); +# 1294 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_ru(double x); +# 1303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rd(double x); +# 1312 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rn(double x); +# 1321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_ru(double x); +# 1330 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rd(double x); +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rn(double x); +# 1348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_ru(double x); +# 1357 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rd(double x); +# 1366 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rn(double x); +# 1375 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_ru(double x); +# 1384 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rd(double x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __int2double_rn(int x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __uint2double_rn(unsigned int x); +# 1409 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rn(long long int x); +# 1418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rz(long long int x); +# 1427 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_ru(long long int x); +# 1436 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rd(long long int x); +# 1445 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rn(unsigned long long int x); +# 1454 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rz(unsigned long long int x); +# 1463 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_ru(unsigned long long int x); +# 1472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rd(unsigned long long int x); +# 1481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2hiint(double x); +# 1490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2loint(double x); +# 1500 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __hiloint2double(int hi, int lo); + + +} + + + + + + +static __inline__ __attribute__((device)) __attribute__((deprecated("__ballot""() is deprecated in favor of ""__ballot""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int ballot(bool pred) ; + +static __inline__ __attribute__((device)) int syncthreads_count(bool pred) ; + +static __inline__ __attribute__((device)) bool syncthreads_and(bool pred) ; + +static __inline__ __attribute__((device)) bool syncthreads_or(bool pred) ; + + + + +static __inline__ __attribute__((device)) unsigned int __isGlobal(const void *ptr) ; +static __inline__ __attribute__((device)) unsigned int __isShared(const void *ptr) ; +static __inline__ __attribute__((device)) unsigned int __isConstant(const void *ptr) ; +static __inline__ __attribute__((device)) unsigned int __isLocal(const void *ptr) ; + + + +static __inline__ __attribute__((device)) size_t __cvta_generic_to_global(const void *ptr) ; +static __inline__ __attribute__((device)) size_t __cvta_generic_to_shared(const void *ptr) ; +static __inline__ __attribute__((device)) size_t __cvta_generic_to_constant(const void *ptr) ; +static __inline__ __attribute__((device)) size_t __cvta_generic_to_local(const void *ptr) ; + + + + +static __inline__ __attribute__((device)) void * __cvta_global_to_generic(size_t rawbits) ; +static __inline__ __attribute__((device)) void * __cvta_shared_to_generic(size_t rawbits) ; +static __inline__ __attribute__((device)) void * __cvta_constant_to_generic(size_t rawbits) ; +static __inline__ __attribute__((device)) void * __cvta_local_to_generic(size_t rawbits) ; +# 1549 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.hpp" 1 +# 75 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.hpp" +static __inline__ __attribute__((device)) unsigned int ballot(bool pred) +{ + return __ballot((int)pred); +} + +static __inline__ __attribute__((device)) int syncthreads_count(bool pred) +{ + return __syncthreads_count((int)pred); +} + +static __inline__ __attribute__((device)) bool syncthreads_and(bool pred) +{ + return (bool)__syncthreads_and((int)pred); +} + +static __inline__ __attribute__((device)) bool syncthreads_or(bool pred) +{ + return (bool)__syncthreads_or((int)pred); +} + + +extern "C" { + __attribute__((device)) unsigned __nv_isGlobal_impl(const void *); + __attribute__((device)) unsigned __nv_isShared_impl(const void *); + __attribute__((device)) unsigned __nv_isConstant_impl(const void *); + __attribute__((device)) unsigned __nv_isLocal_impl(const void *); + __attribute__((device)) unsigned __nv_isGridConstant_impl(const void *); +} + +static __inline__ __attribute__((device)) unsigned int __isGlobal(const void *ptr) +{ + return __nv_isGlobal_impl(ptr); +} + +static __inline__ __attribute__((device)) unsigned int __isShared(const void *ptr) +{ + return __nv_isShared_impl(ptr); +} + +static __inline__ __attribute__((device)) unsigned int __isConstant(const void *ptr) +{ + return __nv_isConstant_impl(ptr); +} + +static __inline__ __attribute__((device)) unsigned int __isLocal(const void *ptr) +{ + return __nv_isLocal_impl(ptr); +} +# 131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.hpp" +extern "C" { + __attribute__((device)) size_t __nv_cvta_generic_to_global_impl(const void *); + __attribute__((device)) size_t __nv_cvta_generic_to_shared_impl(const void *); + __attribute__((device)) size_t __nv_cvta_generic_to_constant_impl(const void *); + __attribute__((device)) size_t __nv_cvta_generic_to_local_impl(const void *); + __attribute__((device)) void * __nv_cvta_global_to_generic_impl(size_t); + __attribute__((device)) void * __nv_cvta_shared_to_generic_impl(size_t); + __attribute__((device)) void * __nv_cvta_constant_to_generic_impl(size_t); + __attribute__((device)) void * __nv_cvta_local_to_generic_impl(size_t); +} + +static __inline__ __attribute__((device)) size_t __cvta_generic_to_global(const void *p) +{ + return __nv_cvta_generic_to_global_impl(p); +} + +static __inline__ __attribute__((device)) size_t __cvta_generic_to_shared(const void *p) +{ + return __nv_cvta_generic_to_shared_impl(p); +} + +static __inline__ __attribute__((device)) size_t __cvta_generic_to_constant(const void *p) +{ + return __nv_cvta_generic_to_constant_impl(p); +} + +static __inline__ __attribute__((device)) size_t __cvta_generic_to_local(const void *p) +{ + return __nv_cvta_generic_to_local_impl(p); +} + +static __inline__ __attribute__((device)) void * __cvta_global_to_generic(size_t rawbits) +{ + return __nv_cvta_global_to_generic_impl(rawbits); +} + +static __inline__ __attribute__((device)) void * __cvta_shared_to_generic(size_t rawbits) +{ + return __nv_cvta_shared_to_generic_impl(rawbits); +} + +static __inline__ __attribute__((device)) void * __cvta_constant_to_generic(size_t rawbits) +{ + return __nv_cvta_constant_to_generic_impl(rawbits); +} + +static __inline__ __attribute__((device)) void * __cvta_local_to_generic(size_t rawbits) +{ + return __nv_cvta_local_to_generic_impl(rawbits); +} +# 1550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" 2 +# 3295 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" 1 +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +static __attribute__((device)) __inline__ unsigned __fns(unsigned mask, unsigned base, int offset) ; +static __attribute__((device)) __inline__ void __barrier_sync(unsigned id) ; +static __attribute__((device)) __inline__ void __barrier_sync_count(unsigned id, unsigned cnt) ; +static __attribute__((device)) __inline__ void __syncwarp(unsigned mask=0xFFFFFFFF) ; +static __attribute__((device)) __inline__ int __all_sync(unsigned mask, int pred) ; +static __attribute__((device)) __inline__ int __any_sync(unsigned mask, int pred) ; +static __attribute__((device)) __inline__ int __uni_sync(unsigned mask, int pred) ; +static __attribute__((device)) __inline__ unsigned __ballot_sync(unsigned mask, int pred) ; +static __attribute__((device)) __inline__ unsigned __activemask() ; +# 119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl(int var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl(unsigned int var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl_up(int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl_up(unsigned int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl_down(int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl_down(unsigned int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl_xor(int var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl_xor(unsigned int var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl(float var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl_up(float var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl_down(float var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl_xor(float var, int laneMask, int width=32) ; + + +static __attribute__((device)) __inline__ int __shfl_sync(unsigned mask, int var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ unsigned int __shfl_sync(unsigned mask, unsigned int var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ int __shfl_up_sync(unsigned mask, int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ unsigned int __shfl_up_sync(unsigned mask, unsigned int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ int __shfl_down_sync(unsigned mask, int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ unsigned int __shfl_down_sync(unsigned mask, unsigned int var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ int __shfl_xor_sync(unsigned mask, int var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ unsigned int __shfl_xor_sync(unsigned mask, unsigned int var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ float __shfl_sync(unsigned mask, float var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ float __shfl_up_sync(unsigned mask, float var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ float __shfl_down_sync(unsigned mask, float var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ float __shfl_xor_sync(unsigned mask, float var, int laneMask, int width=32) ; + + + +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl(unsigned long long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl(long long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl_up(long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl_up(unsigned long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl_down(long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl_down(unsigned long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl_xor(long long var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl_xor(unsigned long long var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl(double var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl_up(double var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl_down(double var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl_xor(double var, int laneMask, int width=32) ; + + +static __attribute__((device)) __inline__ long long __shfl_sync(unsigned mask, long long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ unsigned long long __shfl_sync(unsigned mask, unsigned long long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ long long __shfl_up_sync(unsigned mask, long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ unsigned long long __shfl_up_sync(unsigned mask, unsigned long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ long long __shfl_down_sync(unsigned mask, long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ unsigned long long __shfl_down_sync(unsigned mask, unsigned long long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ long long __shfl_xor_sync(unsigned mask, long long var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ unsigned long long __shfl_xor_sync(unsigned mask, unsigned long long var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ double __shfl_sync(unsigned mask, double var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ double __shfl_up_sync(unsigned mask, double var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ double __shfl_down_sync(unsigned mask, double var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ double __shfl_xor_sync(unsigned mask, double var, int laneMask, int width=32) ; + + + +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl(long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl(unsigned long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl_up(long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl_up(unsigned long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl_down(long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl_down(unsigned long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl_xor(long var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl_xor(unsigned long var, int laneMask, int width=32) ; + + +static __attribute__((device)) __inline__ long __shfl_sync(unsigned mask, long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ unsigned long __shfl_sync(unsigned mask, unsigned long var, int srcLane, int width=32) ; +static __attribute__((device)) __inline__ long __shfl_up_sync(unsigned mask, long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ unsigned long __shfl_up_sync(unsigned mask, unsigned long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ long __shfl_down_sync(unsigned mask, long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ unsigned long __shfl_down_sync(unsigned mask, unsigned long var, unsigned int delta, int width=32) ; +static __attribute__((device)) __inline__ long __shfl_xor_sync(unsigned mask, long var, int laneMask, int width=32) ; +static __attribute__((device)) __inline__ unsigned long __shfl_xor_sync(unsigned mask, unsigned long var, int laneMask, int width=32) ; +# 212 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.hpp" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.hpp" +extern "C" +{ +} +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.hpp" +static __attribute__((device)) __inline__ +unsigned __fns(unsigned mask, unsigned base, int offset) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __nvvm_fns(unsigned int mask, unsigned int base, int offset); + return __nvvm_fns(mask, base, offset); +} + +static __attribute__((device)) __inline__ +void __barrier_sync(unsigned id) { + extern __attribute__((device)) __attribute__((device_builtin)) void __nvvm_barrier_sync(unsigned id); + return __nvvm_barrier_sync(id); +} + +static __attribute__((device)) __inline__ +void __barrier_sync_count(unsigned id, unsigned cnt) { + extern __attribute__((device)) __attribute__((device_builtin)) void __nvvm_barrier_sync_cnt(unsigned id, unsigned cnt); + return __nvvm_barrier_sync_cnt(id, cnt); +} + +static __attribute__((device)) __inline__ +void __syncwarp(unsigned mask) { + extern __attribute__((device)) __attribute__((device_builtin)) void __nvvm_bar_warp_sync(unsigned mask); + return __nvvm_bar_warp_sync(mask); +} + +static __attribute__((device)) __inline__ +int __all_sync(unsigned mask, int pred) { + extern __attribute__((device)) __attribute__((device_builtin)) int __nvvm_vote_all_sync(unsigned int mask, int pred); + return __nvvm_vote_all_sync(mask, pred); +} + +static __attribute__((device)) __inline__ +int __any_sync(unsigned mask, int pred) { + extern __attribute__((device)) __attribute__((device_builtin)) int __nvvm_vote_any_sync(unsigned int mask, int pred); + return __nvvm_vote_any_sync(mask, pred); +} + +static __attribute__((device)) __inline__ +int __uni_sync(unsigned mask, int pred) { + extern __attribute__((device)) __attribute__((device_builtin)) int __nvvm_vote_uni_sync(unsigned int mask, int pred); + return __nvvm_vote_uni_sync(mask, pred); +} + +static __attribute__((device)) __inline__ +unsigned __ballot_sync(unsigned mask, int pred) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __nvvm_vote_ballot_sync(unsigned int mask, int pred); + return __nvvm_vote_ballot_sync(mask, pred); +} + +static __attribute__((device)) __inline__ +unsigned __activemask() { + unsigned ret; + asm volatile ("activemask.b32 %0;" : "=r"(ret)); + return ret; +} + + + + +static __attribute__((device)) __inline__ int __shfl(int var, int srcLane, int width) { + int ret; + int c = ((32 -width) << 8) | 0x1f; + asm volatile ("shfl.idx.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(var), "r"(srcLane), "r"(c)); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl(unsigned int var, int srcLane, int width) { + return (unsigned int) __shfl((int)var, srcLane, width); +} + +static __attribute__((device)) __inline__ int __shfl_up(int var, unsigned int delta, int width) { + int ret; + int c = (32 -width) << 8; + asm volatile ("shfl.up.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(var), "r"(delta), "r"(c)); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl_up(unsigned int var, unsigned int delta, int width) { + return (unsigned int) __shfl_up((int)var, delta, width); +} + +static __attribute__((device)) __inline__ int __shfl_down(int var, unsigned int delta, int width) { + int ret; + int c = ((32 -width) << 8) | 0x1f; + asm volatile ("shfl.down.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(var), "r"(delta), "r"(c)); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl_down(unsigned int var, unsigned int delta, int width) { + return (unsigned int) __shfl_down((int)var, delta, width); +} + +static __attribute__((device)) __inline__ int __shfl_xor(int var, int laneMask, int width) { + int ret; + int c = ((32 -width) << 8) | 0x1f; + asm volatile ("shfl.bfly.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(var), "r"(laneMask), "r"(c)); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl_xor(unsigned int var, int laneMask, int width) { + return (unsigned int) __shfl_xor((int)var, laneMask, width); +} + +static __attribute__((device)) __inline__ float __shfl(float var, int srcLane, int width) { + float ret; + int c; + c = ((32 -width) << 8) | 0x1f; + asm volatile ("shfl.idx.b32 %0, %1, %2, %3;" : "=f"(ret) : "f"(var), "r"(srcLane), "r"(c)); + return ret; +} + +static __attribute__((device)) __inline__ float __shfl_up(float var, unsigned int delta, int width) { + float ret; + int c; + c = (32 -width) << 8; + asm volatile ("shfl.up.b32 %0, %1, %2, %3;" : "=f"(ret) : "f"(var), "r"(delta), "r"(c)); + return ret; +} + +static __attribute__((device)) __inline__ float __shfl_down(float var, unsigned int delta, int width) { + float ret; + int c; + c = ((32 -width) << 8) | 0x1f; + asm volatile ("shfl.down.b32 %0, %1, %2, %3;" : "=f"(ret) : "f"(var), "r"(delta), "r"(c)); + return ret; +} + +static __attribute__((device)) __inline__ float __shfl_xor(float var, int laneMask, int width) { + float ret; + int c; + c = ((32 -width) << 8) | 0x1f; + asm volatile ("shfl.bfly.b32 %0, %1, %2, %3;" : "=f"(ret) : "f"(var), "r"(laneMask), "r"(c)); + return ret; +} + + + +static __attribute__((device)) __inline__ long long __shfl(long long var, int srcLane, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl(hi, srcLane, width); + lo = __shfl(lo, srcLane, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl(unsigned long long var, int srcLane, int width) { + return (unsigned long long) __shfl((long long) var, srcLane, width); +} + +static __attribute__((device)) __inline__ long long __shfl_up(long long var, unsigned int delta, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl_up(hi, delta, width); + lo = __shfl_up(lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl_up(unsigned long long var, unsigned int delta, int width) { + return (unsigned long long) __shfl_up((long long) var, delta, width); +} + +static __attribute__((device)) __inline__ long long __shfl_down(long long var, unsigned int delta, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl_down(hi, delta, width); + lo = __shfl_down(lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl_down(unsigned long long var, unsigned int delta, int width) { + return (unsigned long long) __shfl_down((long long) var, delta, width); +} + +static __attribute__((device)) __inline__ long long __shfl_xor(long long var, int laneMask, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl_xor(hi, laneMask, width); + lo = __shfl_xor(lo, laneMask, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl_xor(unsigned long long var, int laneMask, int width) { + return (unsigned long long) __shfl_xor((long long) var, laneMask, width); +} + +static __attribute__((device)) __inline__ double __shfl(double var, int srcLane, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl(hi, srcLane, width); + lo = __shfl(lo, srcLane, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ double __shfl_up(double var, unsigned int delta, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl_up(hi, delta, width); + lo = __shfl_up(lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ double __shfl_down(double var, unsigned int delta, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl_down(hi, delta, width); + lo = __shfl_down(lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ double __shfl_xor(double var, int laneMask, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl_xor(hi, laneMask, width); + lo = __shfl_xor(lo, laneMask, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ long __shfl(long var, int srcLane, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl((long long) var, srcLane, width) : + __shfl((int) var, srcLane, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl(unsigned long var, int srcLane, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl((unsigned long long) var, srcLane, width) : + __shfl((unsigned int) var, srcLane, width); +} + +static __attribute__((device)) __inline__ long __shfl_up(long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_up((long long) var, delta, width) : + __shfl_up((int) var, delta, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl_up(unsigned long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_up((unsigned long long) var, delta, width) : + __shfl_up((unsigned int) var, delta, width); +} + +static __attribute__((device)) __inline__ long __shfl_down(long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_down((long long) var, delta, width) : + __shfl_down((int) var, delta, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl_down(unsigned long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_down((unsigned long long) var, delta, width) : + __shfl_down((unsigned int) var, delta, width); +} + +static __attribute__((device)) __inline__ long __shfl_xor(long var, int laneMask, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_xor((long long) var, laneMask, width) : + __shfl_xor((int) var, laneMask, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl_xor(unsigned long var, int laneMask, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_xor((unsigned long long) var, laneMask, width) : + __shfl_xor((unsigned int) var, laneMask, width); +} +# 369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.hpp" +static __attribute__((device)) __inline__ int __shfl_sync(unsigned mask, int var, int srcLane, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_idx_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c = ((32 -width) << 8) | 0x1f; + ret = __nvvm_shfl_idx_sync(mask, var, srcLane, c); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl_sync(unsigned mask, unsigned int var, int srcLane, int width) { + return (unsigned int) __shfl_sync(mask, (int)var, srcLane, width); +} + +static __attribute__((device)) __inline__ int __shfl_up_sync(unsigned mask, int var, unsigned int delta, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_up_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c = (32 -width) << 8; + ret = __nvvm_shfl_up_sync(mask, var, delta, c); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl_up_sync(unsigned mask, unsigned int var, unsigned int delta, int width) { + return (unsigned int) __shfl_up_sync(mask, (int)var, delta, width); +} + +static __attribute__((device)) __inline__ int __shfl_down_sync(unsigned mask, int var, unsigned int delta, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_down_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c = ((32 -width) << 8) | 0x1f; + ret = __nvvm_shfl_down_sync(mask, var, delta, c); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl_down_sync(unsigned mask, unsigned int var, unsigned int delta, int width) { + return (unsigned int) __shfl_down_sync(mask, (int)var, delta, width); +} + +static __attribute__((device)) __inline__ int __shfl_xor_sync(unsigned mask, int var, int laneMask, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_bfly_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c = ((32 -width) << 8) | 0x1f; + ret = __nvvm_shfl_bfly_sync(mask, var, laneMask, c); + return ret; +} + +static __attribute__((device)) __inline__ unsigned int __shfl_xor_sync(unsigned mask, unsigned int var, int laneMask, int width) { + return (unsigned int) __shfl_xor_sync(mask, (int)var, laneMask, width); +} + +static __attribute__((device)) __inline__ float __shfl_sync(unsigned mask, float var, int srcLane, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_idx_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c; + c = ((32 -width) << 8) | 0x1f; + ret = __nvvm_shfl_idx_sync(mask, __float_as_int(var), srcLane, c); + return __int_as_float(ret); +} + +static __attribute__((device)) __inline__ float __shfl_up_sync(unsigned mask, float var, unsigned int delta, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_up_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c; + c = (32 -width) << 8; + ret = __nvvm_shfl_up_sync(mask, __float_as_int(var), delta, c); + return __int_as_float(ret); +} + +static __attribute__((device)) __inline__ float __shfl_down_sync(unsigned mask, float var, unsigned int delta, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_down_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c; + c = ((32 -width) << 8) | 0x1f; + ret = __nvvm_shfl_down_sync(mask, __float_as_int(var), delta, c); + return __int_as_float(ret); +} + +static __attribute__((device)) __inline__ float __shfl_xor_sync(unsigned mask, float var, int laneMask, int width) { + extern __attribute__((device)) __attribute__((device_builtin)) unsigned __nvvm_shfl_bfly_sync(unsigned mask, unsigned a, unsigned b, unsigned c); + int ret; + int c; + c = ((32 -width) << 8) | 0x1f; + ret = __nvvm_shfl_bfly_sync(mask, __float_as_int(var), laneMask, c); + return __int_as_float(ret); +} + + +static __attribute__((device)) __inline__ long long __shfl_sync(unsigned mask, long long var, int srcLane, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl_sync(mask, hi, srcLane, width); + lo = __shfl_sync(mask, lo, srcLane, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl_sync(unsigned mask, unsigned long long var, int srcLane, int width) { + return (unsigned long long) __shfl_sync(mask, (long long) var, srcLane, width); +} + +static __attribute__((device)) __inline__ long long __shfl_up_sync(unsigned mask, long long var, unsigned int delta, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl_up_sync(mask, hi, delta, width); + lo = __shfl_up_sync(mask, lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl_up_sync(unsigned mask, unsigned long long var, unsigned int delta, int width) { + return (unsigned long long) __shfl_up_sync(mask, (long long) var, delta, width); +} + +static __attribute__((device)) __inline__ long long __shfl_down_sync(unsigned mask, long long var, unsigned int delta, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl_down_sync(mask, hi, delta, width); + lo = __shfl_down_sync(mask, lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl_down_sync(unsigned mask, unsigned long long var, unsigned int delta, int width) { + return (unsigned long long) __shfl_down_sync(mask, (long long) var, delta, width); +} + +static __attribute__((device)) __inline__ long long __shfl_xor_sync(unsigned mask, long long var, int laneMask, int width) { + int lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "l"(var)); + hi = __shfl_xor_sync(mask, hi, laneMask, width); + lo = __shfl_xor_sync(mask, lo, laneMask, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=l"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ unsigned long long __shfl_xor_sync(unsigned mask, unsigned long long var, int laneMask, int width) { + return (unsigned long long) __shfl_xor_sync(mask, (long long) var, laneMask, width); +} + +static __attribute__((device)) __inline__ double __shfl_sync(unsigned mask, double var, int srcLane, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl_sync(mask, hi, srcLane, width); + lo = __shfl_sync(mask, lo, srcLane, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ double __shfl_up_sync(unsigned mask, double var, unsigned int delta, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl_up_sync(mask, hi, delta, width); + lo = __shfl_up_sync(mask, lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ double __shfl_down_sync(unsigned mask, double var, unsigned int delta, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl_down_sync(mask, hi, delta, width); + lo = __shfl_down_sync(mask, lo, delta, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + +static __attribute__((device)) __inline__ double __shfl_xor_sync(unsigned mask, double var, int laneMask, int width) { + unsigned lo, hi; + asm volatile("mov.b64 {%0,%1}, %2;" : "=r"(lo), "=r"(hi) : "d"(var)); + hi = __shfl_xor_sync(mask, hi, laneMask, width); + lo = __shfl_xor_sync(mask, lo, laneMask, width); + asm volatile("mov.b64 %0, {%1,%2};" : "=d"(var) : "r"(lo), "r"(hi)); + return var; +} + + + +static __attribute__((device)) __inline__ long __shfl_sync(unsigned mask, long var, int srcLane, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_sync(mask, (long long) var, srcLane, width) : + __shfl_sync(mask, (int) var, srcLane, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl_sync(unsigned mask, unsigned long var, int srcLane, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_sync(mask, (unsigned long long) var, srcLane, width) : + __shfl_sync(mask, (unsigned int) var, srcLane, width); +} + +static __attribute__((device)) __inline__ long __shfl_up_sync(unsigned mask, long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_up_sync(mask, (long long) var, delta, width) : + __shfl_up_sync(mask, (int) var, delta, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl_up_sync(unsigned mask, unsigned long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_up_sync(mask, (unsigned long long) var, delta, width) : + __shfl_up_sync(mask, (unsigned int) var, delta, width); +} + +static __attribute__((device)) __inline__ long __shfl_down_sync(unsigned mask, long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_down_sync(mask, (long long) var, delta, width) : + __shfl_down_sync(mask, (int) var, delta, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl_down_sync(unsigned mask, unsigned long var, unsigned int delta, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_down_sync(mask, (unsigned long long) var, delta, width) : + __shfl_down_sync(mask, (unsigned int) var, delta, width); +} + +static __attribute__((device)) __inline__ long __shfl_xor_sync(unsigned mask, long var, int laneMask, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_xor_sync(mask, (long long) var, laneMask, width) : + __shfl_xor_sync(mask, (int) var, laneMask, width); +} + +static __attribute__((device)) __inline__ unsigned long __shfl_xor_sync(unsigned mask, unsigned long var, int laneMask, int width) { + return (sizeof(long) == sizeof(long long)) ? + __shfl_xor_sync(mask, (unsigned long long) var, laneMask, width) : + __shfl_xor_sync(mask, (unsigned int) var, laneMask, width); +} +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" 2 +# 3296 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" 1 +# 87 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ long __ldg(const long *ptr) ; +static __attribute__((device)) __inline__ unsigned long __ldg(const unsigned long *ptr) ; + +static __attribute__((device)) __inline__ char __ldg(const char *ptr) ; +static __attribute__((device)) __inline__ signed char __ldg(const signed char *ptr) ; +static __attribute__((device)) __inline__ short __ldg(const short *ptr) ; +static __attribute__((device)) __inline__ int __ldg(const int *ptr) ; +static __attribute__((device)) __inline__ long long __ldg(const long long *ptr) ; +static __attribute__((device)) __inline__ char2 __ldg(const char2 *ptr) ; +static __attribute__((device)) __inline__ char4 __ldg(const char4 *ptr) ; +static __attribute__((device)) __inline__ short2 __ldg(const short2 *ptr) ; +static __attribute__((device)) __inline__ short4 __ldg(const short4 *ptr) ; +static __attribute__((device)) __inline__ int2 __ldg(const int2 *ptr) ; +static __attribute__((device)) __inline__ int4 __ldg(const int4 *ptr) ; +static __attribute__((device)) __inline__ longlong2 __ldg(const longlong2 *ptr) ; + +static __attribute__((device)) __inline__ unsigned char __ldg(const unsigned char *ptr) ; +static __attribute__((device)) __inline__ unsigned short __ldg(const unsigned short *ptr) ; +static __attribute__((device)) __inline__ unsigned int __ldg(const unsigned int *ptr) ; +static __attribute__((device)) __inline__ unsigned long long __ldg(const unsigned long long *ptr) ; +static __attribute__((device)) __inline__ uchar2 __ldg(const uchar2 *ptr) ; +static __attribute__((device)) __inline__ uchar4 __ldg(const uchar4 *ptr) ; +static __attribute__((device)) __inline__ ushort2 __ldg(const ushort2 *ptr) ; +static __attribute__((device)) __inline__ ushort4 __ldg(const ushort4 *ptr) ; +static __attribute__((device)) __inline__ uint2 __ldg(const uint2 *ptr) ; +static __attribute__((device)) __inline__ uint4 __ldg(const uint4 *ptr) ; +static __attribute__((device)) __inline__ ulonglong2 __ldg(const ulonglong2 *ptr) ; + +static __attribute__((device)) __inline__ float __ldg(const float *ptr) ; +static __attribute__((device)) __inline__ double __ldg(const double *ptr) ; +static __attribute__((device)) __inline__ float2 __ldg(const float2 *ptr) ; +static __attribute__((device)) __inline__ float4 __ldg(const float4 *ptr) ; +static __attribute__((device)) __inline__ double2 __ldg(const double2 *ptr) ; + + + +static __attribute__((device)) __inline__ long __ldcg(const long *ptr) ; +static __attribute__((device)) __inline__ unsigned long __ldcg(const unsigned long *ptr) ; + +static __attribute__((device)) __inline__ char __ldcg(const char *ptr) ; +static __attribute__((device)) __inline__ signed char __ldcg(const signed char *ptr) ; +static __attribute__((device)) __inline__ short __ldcg(const short *ptr) ; +static __attribute__((device)) __inline__ int __ldcg(const int *ptr) ; +static __attribute__((device)) __inline__ long long __ldcg(const long long *ptr) ; +static __attribute__((device)) __inline__ char2 __ldcg(const char2 *ptr) ; +static __attribute__((device)) __inline__ char4 __ldcg(const char4 *ptr) ; +static __attribute__((device)) __inline__ short2 __ldcg(const short2 *ptr) ; +static __attribute__((device)) __inline__ short4 __ldcg(const short4 *ptr) ; +static __attribute__((device)) __inline__ int2 __ldcg(const int2 *ptr) ; +static __attribute__((device)) __inline__ int4 __ldcg(const int4 *ptr) ; +static __attribute__((device)) __inline__ longlong2 __ldcg(const longlong2 *ptr) ; + +static __attribute__((device)) __inline__ unsigned char __ldcg(const unsigned char *ptr) ; +static __attribute__((device)) __inline__ unsigned short __ldcg(const unsigned short *ptr) ; +static __attribute__((device)) __inline__ unsigned int __ldcg(const unsigned int *ptr) ; +static __attribute__((device)) __inline__ unsigned long long __ldcg(const unsigned long long *ptr) ; +static __attribute__((device)) __inline__ uchar2 __ldcg(const uchar2 *ptr) ; +static __attribute__((device)) __inline__ uchar4 __ldcg(const uchar4 *ptr) ; +static __attribute__((device)) __inline__ ushort2 __ldcg(const ushort2 *ptr) ; +static __attribute__((device)) __inline__ ushort4 __ldcg(const ushort4 *ptr) ; +static __attribute__((device)) __inline__ uint2 __ldcg(const uint2 *ptr) ; +static __attribute__((device)) __inline__ uint4 __ldcg(const uint4 *ptr) ; +static __attribute__((device)) __inline__ ulonglong2 __ldcg(const ulonglong2 *ptr) ; + +static __attribute__((device)) __inline__ float __ldcg(const float *ptr) ; +static __attribute__((device)) __inline__ double __ldcg(const double *ptr) ; +static __attribute__((device)) __inline__ float2 __ldcg(const float2 *ptr) ; +static __attribute__((device)) __inline__ float4 __ldcg(const float4 *ptr) ; +static __attribute__((device)) __inline__ double2 __ldcg(const double2 *ptr) ; + + + +static __attribute__((device)) __inline__ long __ldca(const long *ptr) ; +static __attribute__((device)) __inline__ unsigned long __ldca(const unsigned long *ptr) ; + +static __attribute__((device)) __inline__ char __ldca(const char *ptr) ; +static __attribute__((device)) __inline__ signed char __ldca(const signed char *ptr) ; +static __attribute__((device)) __inline__ short __ldca(const short *ptr) ; +static __attribute__((device)) __inline__ int __ldca(const int *ptr) ; +static __attribute__((device)) __inline__ long long __ldca(const long long *ptr) ; +static __attribute__((device)) __inline__ char2 __ldca(const char2 *ptr) ; +static __attribute__((device)) __inline__ char4 __ldca(const char4 *ptr) ; +static __attribute__((device)) __inline__ short2 __ldca(const short2 *ptr) ; +static __attribute__((device)) __inline__ short4 __ldca(const short4 *ptr) ; +static __attribute__((device)) __inline__ int2 __ldca(const int2 *ptr) ; +static __attribute__((device)) __inline__ int4 __ldca(const int4 *ptr) ; +static __attribute__((device)) __inline__ longlong2 __ldca(const longlong2 *ptr) ; + +static __attribute__((device)) __inline__ unsigned char __ldca(const unsigned char *ptr) ; +static __attribute__((device)) __inline__ unsigned short __ldca(const unsigned short *ptr) ; +static __attribute__((device)) __inline__ unsigned int __ldca(const unsigned int *ptr) ; +static __attribute__((device)) __inline__ unsigned long long __ldca(const unsigned long long *ptr) ; +static __attribute__((device)) __inline__ uchar2 __ldca(const uchar2 *ptr) ; +static __attribute__((device)) __inline__ uchar4 __ldca(const uchar4 *ptr) ; +static __attribute__((device)) __inline__ ushort2 __ldca(const ushort2 *ptr) ; +static __attribute__((device)) __inline__ ushort4 __ldca(const ushort4 *ptr) ; +static __attribute__((device)) __inline__ uint2 __ldca(const uint2 *ptr) ; +static __attribute__((device)) __inline__ uint4 __ldca(const uint4 *ptr) ; +static __attribute__((device)) __inline__ ulonglong2 __ldca(const ulonglong2 *ptr) ; + +static __attribute__((device)) __inline__ float __ldca(const float *ptr) ; +static __attribute__((device)) __inline__ double __ldca(const double *ptr) ; +static __attribute__((device)) __inline__ float2 __ldca(const float2 *ptr) ; +static __attribute__((device)) __inline__ float4 __ldca(const float4 *ptr) ; +static __attribute__((device)) __inline__ double2 __ldca(const double2 *ptr) ; + + + +static __attribute__((device)) __inline__ long __ldcs(const long *ptr) ; +static __attribute__((device)) __inline__ unsigned long __ldcs(const unsigned long *ptr) ; + +static __attribute__((device)) __inline__ char __ldcs(const char *ptr) ; +static __attribute__((device)) __inline__ signed char __ldcs(const signed char *ptr) ; +static __attribute__((device)) __inline__ short __ldcs(const short *ptr) ; +static __attribute__((device)) __inline__ int __ldcs(const int *ptr) ; +static __attribute__((device)) __inline__ long long __ldcs(const long long *ptr) ; +static __attribute__((device)) __inline__ char2 __ldcs(const char2 *ptr) ; +static __attribute__((device)) __inline__ char4 __ldcs(const char4 *ptr) ; +static __attribute__((device)) __inline__ short2 __ldcs(const short2 *ptr) ; +static __attribute__((device)) __inline__ short4 __ldcs(const short4 *ptr) ; +static __attribute__((device)) __inline__ int2 __ldcs(const int2 *ptr) ; +static __attribute__((device)) __inline__ int4 __ldcs(const int4 *ptr) ; +static __attribute__((device)) __inline__ longlong2 __ldcs(const longlong2 *ptr) ; + +static __attribute__((device)) __inline__ unsigned char __ldcs(const unsigned char *ptr) ; +static __attribute__((device)) __inline__ unsigned short __ldcs(const unsigned short *ptr) ; +static __attribute__((device)) __inline__ unsigned int __ldcs(const unsigned int *ptr) ; +static __attribute__((device)) __inline__ unsigned long long __ldcs(const unsigned long long *ptr) ; +static __attribute__((device)) __inline__ uchar2 __ldcs(const uchar2 *ptr) ; +static __attribute__((device)) __inline__ uchar4 __ldcs(const uchar4 *ptr) ; +static __attribute__((device)) __inline__ ushort2 __ldcs(const ushort2 *ptr) ; +static __attribute__((device)) __inline__ ushort4 __ldcs(const ushort4 *ptr) ; +static __attribute__((device)) __inline__ uint2 __ldcs(const uint2 *ptr) ; +static __attribute__((device)) __inline__ uint4 __ldcs(const uint4 *ptr) ; +static __attribute__((device)) __inline__ ulonglong2 __ldcs(const ulonglong2 *ptr) ; + +static __attribute__((device)) __inline__ float __ldcs(const float *ptr) ; +static __attribute__((device)) __inline__ double __ldcs(const double *ptr) ; +static __attribute__((device)) __inline__ float2 __ldcs(const float2 *ptr) ; +static __attribute__((device)) __inline__ float4 __ldcs(const float4 *ptr) ; +static __attribute__((device)) __inline__ double2 __ldcs(const double2 *ptr) ; + + + +static __attribute__((device)) __inline__ long __ldlu(const long *ptr) ; +static __attribute__((device)) __inline__ unsigned long __ldlu(const unsigned long *ptr) ; + +static __attribute__((device)) __inline__ char __ldlu(const char *ptr) ; +static __attribute__((device)) __inline__ signed char __ldlu(const signed char *ptr) ; +static __attribute__((device)) __inline__ short __ldlu(const short *ptr) ; +static __attribute__((device)) __inline__ int __ldlu(const int *ptr) ; +static __attribute__((device)) __inline__ long long __ldlu(const long long *ptr) ; +static __attribute__((device)) __inline__ char2 __ldlu(const char2 *ptr) ; +static __attribute__((device)) __inline__ char4 __ldlu(const char4 *ptr) ; +static __attribute__((device)) __inline__ short2 __ldlu(const short2 *ptr) ; +static __attribute__((device)) __inline__ short4 __ldlu(const short4 *ptr) ; +static __attribute__((device)) __inline__ int2 __ldlu(const int2 *ptr) ; +static __attribute__((device)) __inline__ int4 __ldlu(const int4 *ptr) ; +static __attribute__((device)) __inline__ longlong2 __ldlu(const longlong2 *ptr) ; + +static __attribute__((device)) __inline__ unsigned char __ldlu(const unsigned char *ptr) ; +static __attribute__((device)) __inline__ unsigned short __ldlu(const unsigned short *ptr) ; +static __attribute__((device)) __inline__ unsigned int __ldlu(const unsigned int *ptr) ; +static __attribute__((device)) __inline__ unsigned long long __ldlu(const unsigned long long *ptr) ; +static __attribute__((device)) __inline__ uchar2 __ldlu(const uchar2 *ptr) ; +static __attribute__((device)) __inline__ uchar4 __ldlu(const uchar4 *ptr) ; +static __attribute__((device)) __inline__ ushort2 __ldlu(const ushort2 *ptr) ; +static __attribute__((device)) __inline__ ushort4 __ldlu(const ushort4 *ptr) ; +static __attribute__((device)) __inline__ uint2 __ldlu(const uint2 *ptr) ; +static __attribute__((device)) __inline__ uint4 __ldlu(const uint4 *ptr) ; +static __attribute__((device)) __inline__ ulonglong2 __ldlu(const ulonglong2 *ptr) ; + +static __attribute__((device)) __inline__ float __ldlu(const float *ptr) ; +static __attribute__((device)) __inline__ double __ldlu(const double *ptr) ; +static __attribute__((device)) __inline__ float2 __ldlu(const float2 *ptr) ; +static __attribute__((device)) __inline__ float4 __ldlu(const float4 *ptr) ; +static __attribute__((device)) __inline__ double2 __ldlu(const double2 *ptr) ; + + + +static __attribute__((device)) __inline__ long __ldcv(const long *ptr) ; +static __attribute__((device)) __inline__ unsigned long __ldcv(const unsigned long *ptr) ; + +static __attribute__((device)) __inline__ char __ldcv(const char *ptr) ; +static __attribute__((device)) __inline__ signed char __ldcv(const signed char *ptr) ; +static __attribute__((device)) __inline__ short __ldcv(const short *ptr) ; +static __attribute__((device)) __inline__ int __ldcv(const int *ptr) ; +static __attribute__((device)) __inline__ long long __ldcv(const long long *ptr) ; +static __attribute__((device)) __inline__ char2 __ldcv(const char2 *ptr) ; +static __attribute__((device)) __inline__ char4 __ldcv(const char4 *ptr) ; +static __attribute__((device)) __inline__ short2 __ldcv(const short2 *ptr) ; +static __attribute__((device)) __inline__ short4 __ldcv(const short4 *ptr) ; +static __attribute__((device)) __inline__ int2 __ldcv(const int2 *ptr) ; +static __attribute__((device)) __inline__ int4 __ldcv(const int4 *ptr) ; +static __attribute__((device)) __inline__ longlong2 __ldcv(const longlong2 *ptr) ; + +static __attribute__((device)) __inline__ unsigned char __ldcv(const unsigned char *ptr) ; +static __attribute__((device)) __inline__ unsigned short __ldcv(const unsigned short *ptr) ; +static __attribute__((device)) __inline__ unsigned int __ldcv(const unsigned int *ptr) ; +static __attribute__((device)) __inline__ unsigned long long __ldcv(const unsigned long long *ptr) ; +static __attribute__((device)) __inline__ uchar2 __ldcv(const uchar2 *ptr) ; +static __attribute__((device)) __inline__ uchar4 __ldcv(const uchar4 *ptr) ; +static __attribute__((device)) __inline__ ushort2 __ldcv(const ushort2 *ptr) ; +static __attribute__((device)) __inline__ ushort4 __ldcv(const ushort4 *ptr) ; +static __attribute__((device)) __inline__ uint2 __ldcv(const uint2 *ptr) ; +static __attribute__((device)) __inline__ uint4 __ldcv(const uint4 *ptr) ; +static __attribute__((device)) __inline__ ulonglong2 __ldcv(const ulonglong2 *ptr) ; + +static __attribute__((device)) __inline__ float __ldcv(const float *ptr) ; +static __attribute__((device)) __inline__ double __ldcv(const double *ptr) ; +static __attribute__((device)) __inline__ float2 __ldcv(const float2 *ptr) ; +static __attribute__((device)) __inline__ float4 __ldcv(const float4 *ptr) ; +static __attribute__((device)) __inline__ double2 __ldcv(const double2 *ptr) ; + + + +static __attribute__((device)) __inline__ void __stwb(long *ptr, long value) ; +static __attribute__((device)) __inline__ void __stwb(unsigned long *ptr, unsigned long value) ; + +static __attribute__((device)) __inline__ void __stwb(char *ptr, char value) ; +static __attribute__((device)) __inline__ void __stwb(signed char *ptr, signed char value) ; +static __attribute__((device)) __inline__ void __stwb(short *ptr, short value) ; +static __attribute__((device)) __inline__ void __stwb(int *ptr, int value) ; +static __attribute__((device)) __inline__ void __stwb(long long *ptr, long long value) ; +static __attribute__((device)) __inline__ void __stwb(char2 *ptr, char2 value) ; +static __attribute__((device)) __inline__ void __stwb(char4 *ptr, char4 value) ; +static __attribute__((device)) __inline__ void __stwb(short2 *ptr, short2 value) ; +static __attribute__((device)) __inline__ void __stwb(short4 *ptr, short4 value) ; +static __attribute__((device)) __inline__ void __stwb(int2 *ptr, int2 value) ; +static __attribute__((device)) __inline__ void __stwb(int4 *ptr, int4 value) ; +static __attribute__((device)) __inline__ void __stwb(longlong2 *ptr, longlong2 value) ; + +static __attribute__((device)) __inline__ void __stwb(unsigned char *ptr, unsigned char value) ; +static __attribute__((device)) __inline__ void __stwb(unsigned short *ptr, unsigned short value) ; +static __attribute__((device)) __inline__ void __stwb(unsigned int *ptr, unsigned int value) ; +static __attribute__((device)) __inline__ void __stwb(unsigned long long *ptr, unsigned long long value) ; +static __attribute__((device)) __inline__ void __stwb(uchar2 *ptr, uchar2 value) ; +static __attribute__((device)) __inline__ void __stwb(uchar4 *ptr, uchar4 value) ; +static __attribute__((device)) __inline__ void __stwb(ushort2 *ptr, ushort2 value) ; +static __attribute__((device)) __inline__ void __stwb(ushort4 *ptr, ushort4 value) ; +static __attribute__((device)) __inline__ void __stwb(uint2 *ptr, uint2 value) ; +static __attribute__((device)) __inline__ void __stwb(uint4 *ptr, uint4 value) ; +static __attribute__((device)) __inline__ void __stwb(ulonglong2 *ptr, ulonglong2 value) ; + +static __attribute__((device)) __inline__ void __stwb(float *ptr, float value) ; +static __attribute__((device)) __inline__ void __stwb(double *ptr, double value) ; +static __attribute__((device)) __inline__ void __stwb(float2 *ptr, float2 value) ; +static __attribute__((device)) __inline__ void __stwb(float4 *ptr, float4 value) ; +static __attribute__((device)) __inline__ void __stwb(double2 *ptr, double2 value) ; + + + +static __attribute__((device)) __inline__ void __stcg(long *ptr, long value) ; +static __attribute__((device)) __inline__ void __stcg(unsigned long *ptr, unsigned long value) ; + +static __attribute__((device)) __inline__ void __stcg(char *ptr, char value) ; +static __attribute__((device)) __inline__ void __stcg(signed char *ptr, signed char value) ; +static __attribute__((device)) __inline__ void __stcg(short *ptr, short value) ; +static __attribute__((device)) __inline__ void __stcg(int *ptr, int value) ; +static __attribute__((device)) __inline__ void __stcg(long long *ptr, long long value) ; +static __attribute__((device)) __inline__ void __stcg(char2 *ptr, char2 value) ; +static __attribute__((device)) __inline__ void __stcg(char4 *ptr, char4 value) ; +static __attribute__((device)) __inline__ void __stcg(short2 *ptr, short2 value) ; +static __attribute__((device)) __inline__ void __stcg(short4 *ptr, short4 value) ; +static __attribute__((device)) __inline__ void __stcg(int2 *ptr, int2 value) ; +static __attribute__((device)) __inline__ void __stcg(int4 *ptr, int4 value) ; +static __attribute__((device)) __inline__ void __stcg(longlong2 *ptr, longlong2 value) ; + +static __attribute__((device)) __inline__ void __stcg(unsigned char *ptr, unsigned char value) ; +static __attribute__((device)) __inline__ void __stcg(unsigned short *ptr, unsigned short value) ; +static __attribute__((device)) __inline__ void __stcg(unsigned int *ptr, unsigned int value) ; +static __attribute__((device)) __inline__ void __stcg(unsigned long long *ptr, unsigned long long value) ; +static __attribute__((device)) __inline__ void __stcg(uchar2 *ptr, uchar2 value) ; +static __attribute__((device)) __inline__ void __stcg(uchar4 *ptr, uchar4 value) ; +static __attribute__((device)) __inline__ void __stcg(ushort2 *ptr, ushort2 value) ; +static __attribute__((device)) __inline__ void __stcg(ushort4 *ptr, ushort4 value) ; +static __attribute__((device)) __inline__ void __stcg(uint2 *ptr, uint2 value) ; +static __attribute__((device)) __inline__ void __stcg(uint4 *ptr, uint4 value) ; +static __attribute__((device)) __inline__ void __stcg(ulonglong2 *ptr, ulonglong2 value) ; + +static __attribute__((device)) __inline__ void __stcg(float *ptr, float value) ; +static __attribute__((device)) __inline__ void __stcg(double *ptr, double value) ; +static __attribute__((device)) __inline__ void __stcg(float2 *ptr, float2 value) ; +static __attribute__((device)) __inline__ void __stcg(float4 *ptr, float4 value) ; +static __attribute__((device)) __inline__ void __stcg(double2 *ptr, double2 value) ; + + + +static __attribute__((device)) __inline__ void __stcs(long *ptr, long value) ; +static __attribute__((device)) __inline__ void __stcs(unsigned long *ptr, unsigned long value) ; + +static __attribute__((device)) __inline__ void __stcs(char *ptr, char value) ; +static __attribute__((device)) __inline__ void __stcs(signed char *ptr, signed char value) ; +static __attribute__((device)) __inline__ void __stcs(short *ptr, short value) ; +static __attribute__((device)) __inline__ void __stcs(int *ptr, int value) ; +static __attribute__((device)) __inline__ void __stcs(long long *ptr, long long value) ; +static __attribute__((device)) __inline__ void __stcs(char2 *ptr, char2 value) ; +static __attribute__((device)) __inline__ void __stcs(char4 *ptr, char4 value) ; +static __attribute__((device)) __inline__ void __stcs(short2 *ptr, short2 value) ; +static __attribute__((device)) __inline__ void __stcs(short4 *ptr, short4 value) ; +static __attribute__((device)) __inline__ void __stcs(int2 *ptr, int2 value) ; +static __attribute__((device)) __inline__ void __stcs(int4 *ptr, int4 value) ; +static __attribute__((device)) __inline__ void __stcs(longlong2 *ptr, longlong2 value) ; + +static __attribute__((device)) __inline__ void __stcs(unsigned char *ptr, unsigned char value) ; +static __attribute__((device)) __inline__ void __stcs(unsigned short *ptr, unsigned short value) ; +static __attribute__((device)) __inline__ void __stcs(unsigned int *ptr, unsigned int value) ; +static __attribute__((device)) __inline__ void __stcs(unsigned long long *ptr, unsigned long long value) ; +static __attribute__((device)) __inline__ void __stcs(uchar2 *ptr, uchar2 value) ; +static __attribute__((device)) __inline__ void __stcs(uchar4 *ptr, uchar4 value) ; +static __attribute__((device)) __inline__ void __stcs(ushort2 *ptr, ushort2 value) ; +static __attribute__((device)) __inline__ void __stcs(ushort4 *ptr, ushort4 value) ; +static __attribute__((device)) __inline__ void __stcs(uint2 *ptr, uint2 value) ; +static __attribute__((device)) __inline__ void __stcs(uint4 *ptr, uint4 value) ; +static __attribute__((device)) __inline__ void __stcs(ulonglong2 *ptr, ulonglong2 value) ; + +static __attribute__((device)) __inline__ void __stcs(float *ptr, float value) ; +static __attribute__((device)) __inline__ void __stcs(double *ptr, double value) ; +static __attribute__((device)) __inline__ void __stcs(float2 *ptr, float2 value) ; +static __attribute__((device)) __inline__ void __stcs(float4 *ptr, float4 value) ; +static __attribute__((device)) __inline__ void __stcs(double2 *ptr, double2 value) ; + + + +static __attribute__((device)) __inline__ void __stwt(long *ptr, long value) ; +static __attribute__((device)) __inline__ void __stwt(unsigned long *ptr, unsigned long value) ; + +static __attribute__((device)) __inline__ void __stwt(char *ptr, char value) ; +static __attribute__((device)) __inline__ void __stwt(signed char *ptr, signed char value) ; +static __attribute__((device)) __inline__ void __stwt(short *ptr, short value) ; +static __attribute__((device)) __inline__ void __stwt(int *ptr, int value) ; +static __attribute__((device)) __inline__ void __stwt(long long *ptr, long long value) ; +static __attribute__((device)) __inline__ void __stwt(char2 *ptr, char2 value) ; +static __attribute__((device)) __inline__ void __stwt(char4 *ptr, char4 value) ; +static __attribute__((device)) __inline__ void __stwt(short2 *ptr, short2 value) ; +static __attribute__((device)) __inline__ void __stwt(short4 *ptr, short4 value) ; +static __attribute__((device)) __inline__ void __stwt(int2 *ptr, int2 value) ; +static __attribute__((device)) __inline__ void __stwt(int4 *ptr, int4 value) ; +static __attribute__((device)) __inline__ void __stwt(longlong2 *ptr, longlong2 value) ; + +static __attribute__((device)) __inline__ void __stwt(unsigned char *ptr, unsigned char value) ; +static __attribute__((device)) __inline__ void __stwt(unsigned short *ptr, unsigned short value) ; +static __attribute__((device)) __inline__ void __stwt(unsigned int *ptr, unsigned int value) ; +static __attribute__((device)) __inline__ void __stwt(unsigned long long *ptr, unsigned long long value) ; +static __attribute__((device)) __inline__ void __stwt(uchar2 *ptr, uchar2 value) ; +static __attribute__((device)) __inline__ void __stwt(uchar4 *ptr, uchar4 value) ; +static __attribute__((device)) __inline__ void __stwt(ushort2 *ptr, ushort2 value) ; +static __attribute__((device)) __inline__ void __stwt(ushort4 *ptr, ushort4 value) ; +static __attribute__((device)) __inline__ void __stwt(uint2 *ptr, uint2 value) ; +static __attribute__((device)) __inline__ void __stwt(uint4 *ptr, uint4 value) ; +static __attribute__((device)) __inline__ void __stwt(ulonglong2 *ptr, ulonglong2 value) ; + +static __attribute__((device)) __inline__ void __stwt(float *ptr, float value) ; +static __attribute__((device)) __inline__ void __stwt(double *ptr, double value) ; +static __attribute__((device)) __inline__ void __stwt(float2 *ptr, float2 value) ; +static __attribute__((device)) __inline__ void __stwt(float4 *ptr, float4 value) ; +static __attribute__((device)) __inline__ void __stwt(double2 *ptr, double2 value) ; +# 460 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_l(unsigned int lo, unsigned int hi, unsigned int shift) ; +# 472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_lc(unsigned int lo, unsigned int hi, unsigned int shift) ; +# 485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_r(unsigned int lo, unsigned int hi, unsigned int shift) ; +# 497 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_rc(unsigned int lo, unsigned int hi, unsigned int shift) ; +# 507 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.hpp" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.hpp" +extern "C" +{ + + +} +# 101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.hpp" +static __attribute__((device)) __inline__ long __ldg(const long *ptr) { unsigned long ret; asm volatile ("ld.global.nc.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long)ret; } +static __attribute__((device)) __inline__ unsigned long __ldg(const unsigned long *ptr) { unsigned long ret; asm volatile ("ld.global.nc.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } + + + + + + +static __attribute__((device)) __inline__ char __ldg(const char *ptr) { unsigned int ret; asm volatile ("ld.global.nc.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (char)ret; } +static __attribute__((device)) __inline__ signed char __ldg(const signed char *ptr) { unsigned int ret; asm volatile ("ld.global.nc.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (signed char)ret; } +static __attribute__((device)) __inline__ short __ldg(const short *ptr) { unsigned short ret; asm volatile ("ld.global.nc.s16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return (short)ret; } +static __attribute__((device)) __inline__ int __ldg(const int *ptr) { unsigned int ret; asm volatile ("ld.global.nc.s32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (int)ret; } +static __attribute__((device)) __inline__ long long __ldg(const long long *ptr) { unsigned long long ret; asm volatile ("ld.global.nc.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long long)ret; } +static __attribute__((device)) __inline__ char2 __ldg(const char2 *ptr) { char2 ret; int2 tmp; asm volatile ("ld.global.nc.v2.s8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; return ret; } +static __attribute__((device)) __inline__ char4 __ldg(const char4 *ptr) { char4 ret; int4 tmp; asm volatile ("ld.global.nc.v4.s8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; ret.z = (char)tmp.z; ret.w = (char)tmp.w; return ret; } +static __attribute__((device)) __inline__ short2 __ldg(const short2 *ptr) { short2 ret; asm volatile ("ld.global.nc.v2.s16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ short4 __ldg(const short4 *ptr) { short4 ret; asm volatile ("ld.global.nc.v4.s16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int2 __ldg(const int2 *ptr) { int2 ret; asm volatile ("ld.global.nc.v2.s32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int4 __ldg(const int4 *ptr) { int4 ret; asm volatile ("ld.global.nc.v4.s32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ longlong2 __ldg(const longlong2 *ptr) { longlong2 ret; asm volatile ("ld.global.nc.v2.s64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ unsigned char __ldg(const unsigned char *ptr) { unsigned int ret; asm volatile ("ld.global.nc.u8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (unsigned char)ret; } +static __attribute__((device)) __inline__ unsigned short __ldg(const unsigned short *ptr) { unsigned short ret; asm volatile ("ld.global.nc.u16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned int __ldg(const unsigned int *ptr) { unsigned int ret; asm volatile ("ld.global.nc.u32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned long long __ldg(const unsigned long long *ptr) { unsigned long long ret; asm volatile ("ld.global.nc.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uchar2 __ldg(const uchar2 *ptr) { uchar2 ret; uint2 tmp; asm volatile ("ld.global.nc.v2.u8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; return ret; } +static __attribute__((device)) __inline__ uchar4 __ldg(const uchar4 *ptr) { uchar4 ret; uint4 tmp; asm volatile ("ld.global.nc.v4.u8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; ret.z = (unsigned char)tmp.z; ret.w = (unsigned char)tmp.w; return ret; } +static __attribute__((device)) __inline__ ushort2 __ldg(const ushort2 *ptr) { ushort2 ret; asm volatile ("ld.global.nc.v2.u16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ushort4 __ldg(const ushort4 *ptr) { ushort4 ret; asm volatile ("ld.global.nc.v4.u16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint2 __ldg(const uint2 *ptr) { uint2 ret; asm volatile ("ld.global.nc.v2.u32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint4 __ldg(const uint4 *ptr) { uint4 ret; asm volatile ("ld.global.nc.v4.u32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ulonglong2 __ldg(const ulonglong2 *ptr) { ulonglong2 ret; asm volatile ("ld.global.nc.v2.u64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ float __ldg(const float *ptr) { float ret; asm volatile ("ld.global.nc.f32 %0, [%1];" : "=f"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double __ldg(const double *ptr) { double ret; asm volatile ("ld.global.nc.f64 %0, [%1];" : "=d"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float2 __ldg(const float2 *ptr) { float2 ret; asm volatile ("ld.global.nc.v2.f32 {%0,%1}, [%2];" : "=f"(ret.x), "=f"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float4 __ldg(const float4 *ptr) { float4 ret; asm volatile ("ld.global.nc.v4.f32 {%0,%1,%2,%3}, [%4];" : "=f"(ret.x), "=f"(ret.y), "=f"(ret.z), "=f"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double2 __ldg(const double2 *ptr) { double2 ret; asm volatile ("ld.global.nc.v2.f64 {%0,%1}, [%2];" : "=d"(ret.x), "=d"(ret.y) : "l" (ptr)); return ret; } +# 147 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.hpp" +static __attribute__((device)) __inline__ long __ldcg(const long *ptr) { unsigned long ret; asm volatile ("ld.global.cg.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long)ret; } +static __attribute__((device)) __inline__ unsigned long __ldcg(const unsigned long *ptr) { unsigned long ret; asm volatile ("ld.global.cg.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } + + + + + + +static __attribute__((device)) __inline__ char __ldcg(const char *ptr) { unsigned int ret; asm volatile ("ld.global.cg.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (char)ret; } +static __attribute__((device)) __inline__ signed char __ldcg(const signed char *ptr) { unsigned int ret; asm volatile ("ld.global.cg.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (signed char)ret; } +static __attribute__((device)) __inline__ short __ldcg(const short *ptr) { unsigned short ret; asm volatile ("ld.global.cg.s16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return (short)ret; } +static __attribute__((device)) __inline__ int __ldcg(const int *ptr) { unsigned int ret; asm volatile ("ld.global.cg.s32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (int)ret; } +static __attribute__((device)) __inline__ long long __ldcg(const long long *ptr) { unsigned long long ret; asm volatile ("ld.global.cg.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long long)ret; } +static __attribute__((device)) __inline__ char2 __ldcg(const char2 *ptr) { char2 ret; int2 tmp; asm volatile ("ld.global.cg.v2.s8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; return ret; } +static __attribute__((device)) __inline__ char4 __ldcg(const char4 *ptr) { char4 ret; int4 tmp; asm volatile ("ld.global.cg.v4.s8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; ret.z = (char)tmp.z; ret.w = (char)tmp.w; return ret; } +static __attribute__((device)) __inline__ short2 __ldcg(const short2 *ptr) { short2 ret; asm volatile ("ld.global.cg.v2.s16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ short4 __ldcg(const short4 *ptr) { short4 ret; asm volatile ("ld.global.cg.v4.s16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int2 __ldcg(const int2 *ptr) { int2 ret; asm volatile ("ld.global.cg.v2.s32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int4 __ldcg(const int4 *ptr) { int4 ret; asm volatile ("ld.global.cg.v4.s32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ longlong2 __ldcg(const longlong2 *ptr) { longlong2 ret; asm volatile ("ld.global.cg.v2.s64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ unsigned char __ldcg(const unsigned char *ptr) { unsigned int ret; asm volatile ("ld.global.cg.u8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (unsigned char)ret; } +static __attribute__((device)) __inline__ unsigned short __ldcg(const unsigned short *ptr) { unsigned short ret; asm volatile ("ld.global.cg.u16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned int __ldcg(const unsigned int *ptr) { unsigned int ret; asm volatile ("ld.global.cg.u32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned long long __ldcg(const unsigned long long *ptr) { unsigned long long ret; asm volatile ("ld.global.cg.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uchar2 __ldcg(const uchar2 *ptr) { uchar2 ret; uint2 tmp; asm volatile ("ld.global.cg.v2.u8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; return ret; } +static __attribute__((device)) __inline__ uchar4 __ldcg(const uchar4 *ptr) { uchar4 ret; uint4 tmp; asm volatile ("ld.global.cg.v4.u8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; ret.z = (unsigned char)tmp.z; ret.w = (unsigned char)tmp.w; return ret; } +static __attribute__((device)) __inline__ ushort2 __ldcg(const ushort2 *ptr) { ushort2 ret; asm volatile ("ld.global.cg.v2.u16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ushort4 __ldcg(const ushort4 *ptr) { ushort4 ret; asm volatile ("ld.global.cg.v4.u16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint2 __ldcg(const uint2 *ptr) { uint2 ret; asm volatile ("ld.global.cg.v2.u32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint4 __ldcg(const uint4 *ptr) { uint4 ret; asm volatile ("ld.global.cg.v4.u32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ulonglong2 __ldcg(const ulonglong2 *ptr) { ulonglong2 ret; asm volatile ("ld.global.cg.v2.u64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ float __ldcg(const float *ptr) { float ret; asm volatile ("ld.global.cg.f32 %0, [%1];" : "=f"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double __ldcg(const double *ptr) { double ret; asm volatile ("ld.global.cg.f64 %0, [%1];" : "=d"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float2 __ldcg(const float2 *ptr) { float2 ret; asm volatile ("ld.global.cg.v2.f32 {%0,%1}, [%2];" : "=f"(ret.x), "=f"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float4 __ldcg(const float4 *ptr) { float4 ret; asm volatile ("ld.global.cg.v4.f32 {%0,%1,%2,%3}, [%4];" : "=f"(ret.x), "=f"(ret.y), "=f"(ret.z), "=f"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double2 __ldcg(const double2 *ptr) { double2 ret; asm volatile ("ld.global.cg.v2.f64 {%0,%1}, [%2];" : "=d"(ret.x), "=d"(ret.y) : "l" (ptr)); return ret; } + + + + + + + +static __attribute__((device)) __inline__ long __ldca(const long *ptr) { unsigned long ret; asm volatile ("ld.global.ca.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long)ret; } +static __attribute__((device)) __inline__ unsigned long __ldca(const unsigned long *ptr) { unsigned long ret; asm volatile ("ld.global.ca.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } + + + + + + +static __attribute__((device)) __inline__ char __ldca(const char *ptr) { unsigned int ret; asm volatile ("ld.global.ca.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (char)ret; } +static __attribute__((device)) __inline__ signed char __ldca(const signed char *ptr) { unsigned int ret; asm volatile ("ld.global.ca.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (signed char)ret; } +static __attribute__((device)) __inline__ short __ldca(const short *ptr) { unsigned short ret; asm volatile ("ld.global.ca.s16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return (short)ret; } +static __attribute__((device)) __inline__ int __ldca(const int *ptr) { unsigned int ret; asm volatile ("ld.global.ca.s32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (int)ret; } +static __attribute__((device)) __inline__ long long __ldca(const long long *ptr) { unsigned long long ret; asm volatile ("ld.global.ca.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long long)ret; } +static __attribute__((device)) __inline__ char2 __ldca(const char2 *ptr) { char2 ret; int2 tmp; asm volatile ("ld.global.ca.v2.s8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; return ret; } +static __attribute__((device)) __inline__ char4 __ldca(const char4 *ptr) { char4 ret; int4 tmp; asm volatile ("ld.global.ca.v4.s8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; ret.z = (char)tmp.z; ret.w = (char)tmp.w; return ret; } +static __attribute__((device)) __inline__ short2 __ldca(const short2 *ptr) { short2 ret; asm volatile ("ld.global.ca.v2.s16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ short4 __ldca(const short4 *ptr) { short4 ret; asm volatile ("ld.global.ca.v4.s16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int2 __ldca(const int2 *ptr) { int2 ret; asm volatile ("ld.global.ca.v2.s32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int4 __ldca(const int4 *ptr) { int4 ret; asm volatile ("ld.global.ca.v4.s32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ longlong2 __ldca(const longlong2 *ptr) { longlong2 ret; asm volatile ("ld.global.ca.v2.s64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ unsigned char __ldca(const unsigned char *ptr) { unsigned int ret; asm volatile ("ld.global.ca.u8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (unsigned char)ret; } +static __attribute__((device)) __inline__ unsigned short __ldca(const unsigned short *ptr) { unsigned short ret; asm volatile ("ld.global.ca.u16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned int __ldca(const unsigned int *ptr) { unsigned int ret; asm volatile ("ld.global.ca.u32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned long long __ldca(const unsigned long long *ptr) { unsigned long long ret; asm volatile ("ld.global.ca.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uchar2 __ldca(const uchar2 *ptr) { uchar2 ret; uint2 tmp; asm volatile ("ld.global.ca.v2.u8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; return ret; } +static __attribute__((device)) __inline__ uchar4 __ldca(const uchar4 *ptr) { uchar4 ret; uint4 tmp; asm volatile ("ld.global.ca.v4.u8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; ret.z = (unsigned char)tmp.z; ret.w = (unsigned char)tmp.w; return ret; } +static __attribute__((device)) __inline__ ushort2 __ldca(const ushort2 *ptr) { ushort2 ret; asm volatile ("ld.global.ca.v2.u16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ushort4 __ldca(const ushort4 *ptr) { ushort4 ret; asm volatile ("ld.global.ca.v4.u16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint2 __ldca(const uint2 *ptr) { uint2 ret; asm volatile ("ld.global.ca.v2.u32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint4 __ldca(const uint4 *ptr) { uint4 ret; asm volatile ("ld.global.ca.v4.u32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ulonglong2 __ldca(const ulonglong2 *ptr) { ulonglong2 ret; asm volatile ("ld.global.ca.v2.u64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ float __ldca(const float *ptr) { float ret; asm volatile ("ld.global.ca.f32 %0, [%1];" : "=f"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double __ldca(const double *ptr) { double ret; asm volatile ("ld.global.ca.f64 %0, [%1];" : "=d"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float2 __ldca(const float2 *ptr) { float2 ret; asm volatile ("ld.global.ca.v2.f32 {%0,%1}, [%2];" : "=f"(ret.x), "=f"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float4 __ldca(const float4 *ptr) { float4 ret; asm volatile ("ld.global.ca.v4.f32 {%0,%1,%2,%3}, [%4];" : "=f"(ret.x), "=f"(ret.y), "=f"(ret.z), "=f"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double2 __ldca(const double2 *ptr) { double2 ret; asm volatile ("ld.global.ca.v2.f64 {%0,%1}, [%2];" : "=d"(ret.x), "=d"(ret.y) : "l" (ptr)); return ret; } + + + + + + + +static __attribute__((device)) __inline__ long __ldcs(const long *ptr) { unsigned long ret; asm volatile ("ld.global.cs.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long)ret; } +static __attribute__((device)) __inline__ unsigned long __ldcs(const unsigned long *ptr) { unsigned long ret; asm volatile ("ld.global.cs.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } + + + + + + +static __attribute__((device)) __inline__ char __ldcs(const char *ptr) { unsigned int ret; asm volatile ("ld.global.cs.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (char)ret; } +static __attribute__((device)) __inline__ signed char __ldcs(const signed char *ptr) { unsigned int ret; asm volatile ("ld.global.cs.s8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (signed char)ret; } +static __attribute__((device)) __inline__ short __ldcs(const short *ptr) { unsigned short ret; asm volatile ("ld.global.cs.s16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return (short)ret; } +static __attribute__((device)) __inline__ int __ldcs(const int *ptr) { unsigned int ret; asm volatile ("ld.global.cs.s32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (int)ret; } +static __attribute__((device)) __inline__ long long __ldcs(const long long *ptr) { unsigned long long ret; asm volatile ("ld.global.cs.s64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return (long long)ret; } +static __attribute__((device)) __inline__ char2 __ldcs(const char2 *ptr) { char2 ret; int2 tmp; asm volatile ("ld.global.cs.v2.s8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; return ret; } +static __attribute__((device)) __inline__ char4 __ldcs(const char4 *ptr) { char4 ret; int4 tmp; asm volatile ("ld.global.cs.v4.s8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (char)tmp.x; ret.y = (char)tmp.y; ret.z = (char)tmp.z; ret.w = (char)tmp.w; return ret; } +static __attribute__((device)) __inline__ short2 __ldcs(const short2 *ptr) { short2 ret; asm volatile ("ld.global.cs.v2.s16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ short4 __ldcs(const short4 *ptr) { short4 ret; asm volatile ("ld.global.cs.v4.s16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int2 __ldcs(const int2 *ptr) { int2 ret; asm volatile ("ld.global.cs.v2.s32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ int4 __ldcs(const int4 *ptr) { int4 ret; asm volatile ("ld.global.cs.v4.s32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ longlong2 __ldcs(const longlong2 *ptr) { longlong2 ret; asm volatile ("ld.global.cs.v2.s64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ unsigned char __ldcs(const unsigned char *ptr) { unsigned int ret; asm volatile ("ld.global.cs.u8 %0, [%1];" : "=r"(ret) : "l" (ptr)); return (unsigned char)ret; } +static __attribute__((device)) __inline__ unsigned short __ldcs(const unsigned short *ptr) { unsigned short ret; asm volatile ("ld.global.cs.u16 %0, [%1];" : "=h"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned int __ldcs(const unsigned int *ptr) { unsigned int ret; asm volatile ("ld.global.cs.u32 %0, [%1];" : "=r"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ unsigned long long __ldcs(const unsigned long long *ptr) { unsigned long long ret; asm volatile ("ld.global.cs.u64 %0, [%1];" : "=l"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uchar2 __ldcs(const uchar2 *ptr) { uchar2 ret; uint2 tmp; asm volatile ("ld.global.cs.v2.u8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; return ret; } +static __attribute__((device)) __inline__ uchar4 __ldcs(const uchar4 *ptr) { uchar4 ret; uint4 tmp; asm volatile ("ld.global.cs.v4.u8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr)); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; ret.z = (unsigned char)tmp.z; ret.w = (unsigned char)tmp.w; return ret; } +static __attribute__((device)) __inline__ ushort2 __ldcs(const ushort2 *ptr) { ushort2 ret; asm volatile ("ld.global.cs.v2.u16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ushort4 __ldcs(const ushort4 *ptr) { ushort4 ret; asm volatile ("ld.global.cs.v4.u16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint2 __ldcs(const uint2 *ptr) { uint2 ret; asm volatile ("ld.global.cs.v2.u32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ uint4 __ldcs(const uint4 *ptr) { uint4 ret; asm volatile ("ld.global.cs.v4.u32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ ulonglong2 __ldcs(const ulonglong2 *ptr) { ulonglong2 ret; asm volatile ("ld.global.cs.v2.u64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr)); return ret; } + +static __attribute__((device)) __inline__ float __ldcs(const float *ptr) { float ret; asm volatile ("ld.global.cs.f32 %0, [%1];" : "=f"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double __ldcs(const double *ptr) { double ret; asm volatile ("ld.global.cs.f64 %0, [%1];" : "=d"(ret) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float2 __ldcs(const float2 *ptr) { float2 ret; asm volatile ("ld.global.cs.v2.f32 {%0,%1}, [%2];" : "=f"(ret.x), "=f"(ret.y) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ float4 __ldcs(const float4 *ptr) { float4 ret; asm volatile ("ld.global.cs.v4.f32 {%0,%1,%2,%3}, [%4];" : "=f"(ret.x), "=f"(ret.y), "=f"(ret.z), "=f"(ret.w) : "l" (ptr)); return ret; } +static __attribute__((device)) __inline__ double2 __ldcs(const double2 *ptr) { double2 ret; asm volatile ("ld.global.cs.v2.f64 {%0,%1}, [%2];" : "=d"(ret.x), "=d"(ret.y) : "l" (ptr)); return ret; } + + + + + + + +static __attribute__((device)) __inline__ long __ldlu(const long *ptr) { unsigned long ret; asm ("ld.global.lu.s64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return (long)ret; } +static __attribute__((device)) __inline__ unsigned long __ldlu(const unsigned long *ptr) { unsigned long ret; asm ("ld.global.lu.u64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return ret; } + + + + + + +static __attribute__((device)) __inline__ char __ldlu(const char *ptr) { unsigned int ret; asm ("ld.global.lu.s8 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (char)ret; } +static __attribute__((device)) __inline__ signed char __ldlu(const signed char *ptr) { unsigned int ret; asm ("ld.global.lu.s8 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (signed char)ret; } +static __attribute__((device)) __inline__ short __ldlu(const short *ptr) { unsigned short ret; asm ("ld.global.lu.s16 %0, [%1];" : "=h"(ret) : "l" (ptr) : "memory"); return (short)ret; } +static __attribute__((device)) __inline__ int __ldlu(const int *ptr) { unsigned int ret; asm ("ld.global.lu.s32 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (int)ret; } +static __attribute__((device)) __inline__ long long __ldlu(const long long *ptr) { unsigned long long ret; asm ("ld.global.lu.s64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return (long long)ret; } +static __attribute__((device)) __inline__ char2 __ldlu(const char2 *ptr) { char2 ret; int2 tmp; asm ("ld.global.lu.v2.s8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr) : "memory"); ret.x = (char)tmp.x; ret.y = (char)tmp.y; return ret; } +static __attribute__((device)) __inline__ char4 __ldlu(const char4 *ptr) { char4 ret; int4 tmp; asm ("ld.global.lu.v4.s8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr) : "memory"); ret.x = (char)tmp.x; ret.y = (char)tmp.y; ret.z = (char)tmp.z; ret.w = (char)tmp.w; return ret; } +static __attribute__((device)) __inline__ short2 __ldlu(const short2 *ptr) { short2 ret; asm ("ld.global.lu.v2.s16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ short4 __ldlu(const short4 *ptr) { short4 ret; asm ("ld.global.lu.v4.s16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ int2 __ldlu(const int2 *ptr) { int2 ret; asm ("ld.global.lu.v2.s32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ int4 __ldlu(const int4 *ptr) { int4 ret; asm ("ld.global.lu.v4.s32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ longlong2 __ldlu(const longlong2 *ptr) { longlong2 ret; asm ("ld.global.lu.v2.s64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr) : "memory"); return ret; } + +static __attribute__((device)) __inline__ unsigned char __ldlu(const unsigned char *ptr) { unsigned int ret; asm ("ld.global.lu.u8 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (unsigned char)ret; } +static __attribute__((device)) __inline__ unsigned short __ldlu(const unsigned short *ptr) { unsigned short ret; asm ("ld.global.lu.u16 %0, [%1];" : "=h"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ unsigned int __ldlu(const unsigned int *ptr) { unsigned int ret; asm ("ld.global.lu.u32 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ unsigned long long __ldlu(const unsigned long long *ptr) { unsigned long long ret; asm ("ld.global.lu.u64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ uchar2 __ldlu(const uchar2 *ptr) { uchar2 ret; uint2 tmp; asm ("ld.global.lu.v2.u8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr) : "memory"); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; return ret; } +static __attribute__((device)) __inline__ uchar4 __ldlu(const uchar4 *ptr) { uchar4 ret; uint4 tmp; asm ("ld.global.lu.v4.u8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr) : "memory"); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; ret.z = (unsigned char)tmp.z; ret.w = (unsigned char)tmp.w; return ret; } +static __attribute__((device)) __inline__ ushort2 __ldlu(const ushort2 *ptr) { ushort2 ret; asm ("ld.global.lu.v2.u16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ ushort4 __ldlu(const ushort4 *ptr) { ushort4 ret; asm ("ld.global.lu.v4.u16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ uint2 __ldlu(const uint2 *ptr) { uint2 ret; asm ("ld.global.lu.v2.u32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ uint4 __ldlu(const uint4 *ptr) { uint4 ret; asm ("ld.global.lu.v4.u32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ ulonglong2 __ldlu(const ulonglong2 *ptr) { ulonglong2 ret; asm ("ld.global.lu.v2.u64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr) : "memory"); return ret; } + +static __attribute__((device)) __inline__ float __ldlu(const float *ptr) { float ret; asm ("ld.global.lu.f32 %0, [%1];" : "=f"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ double __ldlu(const double *ptr) { double ret; asm ("ld.global.lu.f64 %0, [%1];" : "=d"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ float2 __ldlu(const float2 *ptr) { float2 ret; asm ("ld.global.lu.v2.f32 {%0,%1}, [%2];" : "=f"(ret.x), "=f"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ float4 __ldlu(const float4 *ptr) { float4 ret; asm ("ld.global.lu.v4.f32 {%0,%1,%2,%3}, [%4];" : "=f"(ret.x), "=f"(ret.y), "=f"(ret.z), "=f"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ double2 __ldlu(const double2 *ptr) { double2 ret; asm ("ld.global.lu.v2.f64 {%0,%1}, [%2];" : "=d"(ret.x), "=d"(ret.y) : "l" (ptr) : "memory"); return ret; } + + + + + + + +static __attribute__((device)) __inline__ long __ldcv(const long *ptr) { unsigned long ret; asm ("ld.global.cv.s64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return (long)ret; } +static __attribute__((device)) __inline__ unsigned long __ldcv(const unsigned long *ptr) { unsigned long ret; asm ("ld.global.cv.u64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return ret; } + + + + + + +static __attribute__((device)) __inline__ char __ldcv(const char *ptr) { unsigned int ret; asm ("ld.global.cv.s8 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (char)ret; } +static __attribute__((device)) __inline__ signed char __ldcv(const signed char *ptr) { unsigned int ret; asm ("ld.global.cv.s8 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (signed char)ret; } +static __attribute__((device)) __inline__ short __ldcv(const short *ptr) { unsigned short ret; asm ("ld.global.cv.s16 %0, [%1];" : "=h"(ret) : "l" (ptr) : "memory"); return (short)ret; } +static __attribute__((device)) __inline__ int __ldcv(const int *ptr) { unsigned int ret; asm ("ld.global.cv.s32 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (int)ret; } +static __attribute__((device)) __inline__ long long __ldcv(const long long *ptr) { unsigned long long ret; asm ("ld.global.cv.s64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return (long long)ret; } +static __attribute__((device)) __inline__ char2 __ldcv(const char2 *ptr) { char2 ret; int2 tmp; asm ("ld.global.cv.v2.s8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr) : "memory"); ret.x = (char)tmp.x; ret.y = (char)tmp.y; return ret; } +static __attribute__((device)) __inline__ char4 __ldcv(const char4 *ptr) { char4 ret; int4 tmp; asm ("ld.global.cv.v4.s8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr) : "memory"); ret.x = (char)tmp.x; ret.y = (char)tmp.y; ret.z = (char)tmp.z; ret.w = (char)tmp.w; return ret; } +static __attribute__((device)) __inline__ short2 __ldcv(const short2 *ptr) { short2 ret; asm ("ld.global.cv.v2.s16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ short4 __ldcv(const short4 *ptr) { short4 ret; asm ("ld.global.cv.v4.s16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ int2 __ldcv(const int2 *ptr) { int2 ret; asm ("ld.global.cv.v2.s32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ int4 __ldcv(const int4 *ptr) { int4 ret; asm ("ld.global.cv.v4.s32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ longlong2 __ldcv(const longlong2 *ptr) { longlong2 ret; asm ("ld.global.cv.v2.s64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr) : "memory"); return ret; } + +static __attribute__((device)) __inline__ unsigned char __ldcv(const unsigned char *ptr) { unsigned int ret; asm ("ld.global.cv.u8 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return (unsigned char)ret; } +static __attribute__((device)) __inline__ unsigned short __ldcv(const unsigned short *ptr) { unsigned short ret; asm ("ld.global.cv.u16 %0, [%1];" : "=h"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ unsigned int __ldcv(const unsigned int *ptr) { unsigned int ret; asm ("ld.global.cv.u32 %0, [%1];" : "=r"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ unsigned long long __ldcv(const unsigned long long *ptr) { unsigned long long ret; asm ("ld.global.cv.u64 %0, [%1];" : "=l"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ uchar2 __ldcv(const uchar2 *ptr) { uchar2 ret; uint2 tmp; asm ("ld.global.cv.v2.u8 {%0,%1}, [%2];" : "=r"(tmp.x), "=r"(tmp.y) : "l" (ptr) : "memory"); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; return ret; } +static __attribute__((device)) __inline__ uchar4 __ldcv(const uchar4 *ptr) { uchar4 ret; uint4 tmp; asm ("ld.global.cv.v4.u8 {%0,%1,%2,%3}, [%4];" : "=r"(tmp.x), "=r"(tmp.y), "=r"(tmp.z), "=r"(tmp.w) : "l" (ptr) : "memory"); ret.x = (unsigned char)tmp.x; ret.y = (unsigned char)tmp.y; ret.z = (unsigned char)tmp.z; ret.w = (unsigned char)tmp.w; return ret; } +static __attribute__((device)) __inline__ ushort2 __ldcv(const ushort2 *ptr) { ushort2 ret; asm ("ld.global.cv.v2.u16 {%0,%1}, [%2];" : "=h"(ret.x), "=h"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ ushort4 __ldcv(const ushort4 *ptr) { ushort4 ret; asm ("ld.global.cv.v4.u16 {%0,%1,%2,%3}, [%4];" : "=h"(ret.x), "=h"(ret.y), "=h"(ret.z), "=h"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ uint2 __ldcv(const uint2 *ptr) { uint2 ret; asm ("ld.global.cv.v2.u32 {%0,%1}, [%2];" : "=r"(ret.x), "=r"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ uint4 __ldcv(const uint4 *ptr) { uint4 ret; asm ("ld.global.cv.v4.u32 {%0,%1,%2,%3}, [%4];" : "=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ ulonglong2 __ldcv(const ulonglong2 *ptr) { ulonglong2 ret; asm ("ld.global.cv.v2.u64 {%0,%1}, [%2];" : "=l"(ret.x), "=l"(ret.y) : "l" (ptr) : "memory"); return ret; } + +static __attribute__((device)) __inline__ float __ldcv(const float *ptr) { float ret; asm ("ld.global.cv.f32 %0, [%1];" : "=f"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ double __ldcv(const double *ptr) { double ret; asm ("ld.global.cv.f64 %0, [%1];" : "=d"(ret) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ float2 __ldcv(const float2 *ptr) { float2 ret; asm ("ld.global.cv.v2.f32 {%0,%1}, [%2];" : "=f"(ret.x), "=f"(ret.y) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ float4 __ldcv(const float4 *ptr) { float4 ret; asm ("ld.global.cv.v4.f32 {%0,%1,%2,%3}, [%4];" : "=f"(ret.x), "=f"(ret.y), "=f"(ret.z), "=f"(ret.w) : "l" (ptr) : "memory"); return ret; } +static __attribute__((device)) __inline__ double2 __ldcv(const double2 *ptr) { double2 ret; asm ("ld.global.cv.v2.f64 {%0,%1}, [%2];" : "=d"(ret.x), "=d"(ret.y) : "l" (ptr) : "memory"); return ret; } + + + + + + + +static __attribute__((device)) __inline__ void __stwb(long *ptr, long value) { asm ("st.global.wb.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(unsigned long *ptr, unsigned long value) { asm ("st.global.wb.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } + + + + + + +static __attribute__((device)) __inline__ void __stwb(char *ptr, char value) { asm ("st.global.wb.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(signed char *ptr, signed char value) { asm ("st.global.wb.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(short *ptr, short value) { asm ("st.global.wb.s16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(int *ptr, int value) { asm ("st.global.wb.s32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(long long *ptr, long long value) { asm ("st.global.wb.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(char2 *ptr, char2 value) { const int x = value.x, y = value.y; asm ("st.global.wb.v2.s8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(char4 *ptr, char4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.wb.v4.s8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(short2 *ptr, short2 value) { asm ("st.global.wb.v2.s16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(short4 *ptr, short4 value) { asm ("st.global.wb.v4.s16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(int2 *ptr, int2 value) { asm ("st.global.wb.v2.s32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(int4 *ptr, int4 value) { asm ("st.global.wb.v4.s32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(longlong2 *ptr, longlong2 value) { asm ("st.global.wb.v2.s64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stwb(unsigned char *ptr, unsigned char value) { asm ("st.global.wb.u8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(unsigned short *ptr, unsigned short value) { asm ("st.global.wb.u16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(unsigned int *ptr, unsigned int value) { asm ("st.global.wb.u32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(unsigned long long *ptr, unsigned long long value) { asm ("st.global.wb.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(uchar2 *ptr, uchar2 value) { const int x = value.x, y = value.y; asm ("st.global.wb.v2.u8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(uchar4 *ptr, uchar4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.wb.v4.u8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(ushort2 *ptr, ushort2 value) { asm ("st.global.wb.v2.u16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(ushort4 *ptr, ushort4 value) { asm ("st.global.wb.v4.u16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(uint2 *ptr, uint2 value) { asm ("st.global.wb.v2.u32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(uint4 *ptr, uint4 value) { asm ("st.global.wb.v4.u32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(ulonglong2 *ptr, ulonglong2 value) { asm ("st.global.wb.v2.u64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stwb(float *ptr, float value) { asm ("st.global.wb.f32 [%0], %1;" :: "l" (ptr), "f"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(double *ptr, double value) { asm ("st.global.wb.f64 [%0], %1;" :: "l" (ptr), "d"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(float2 *ptr, float2 value) { asm ("st.global.wb.v2.f32 [%0], {%1,%2};" :: "l" (ptr), "f"(value.x), "f"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(float4 *ptr, float4 value) { asm ("st.global.wb.v4.f32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "f"(value.x), "f"(value.y), "f"(value.z), "f"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwb(double2 *ptr, double2 value) { asm ("st.global.wb.v2.f64 [%0], {%1,%2};" :: "l" (ptr), "d"(value.x), "d"(value.y) : "memory"); } + + + + + + + +static __attribute__((device)) __inline__ void __stcg(long *ptr, long value) { asm ("st.global.cg.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(unsigned long *ptr, unsigned long value) { asm ("st.global.cg.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } + + + + + + +static __attribute__((device)) __inline__ void __stcg(char *ptr, char value) { asm ("st.global.cg.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(signed char *ptr, signed char value) { asm ("st.global.cg.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(short *ptr, short value) { asm ("st.global.cg.s16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(int *ptr, int value) { asm ("st.global.cg.s32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(long long *ptr, long long value) { asm ("st.global.cg.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(char2 *ptr, char2 value) { const int x = value.x, y = value.y; asm ("st.global.cg.v2.s8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(char4 *ptr, char4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.cg.v4.s8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(short2 *ptr, short2 value) { asm ("st.global.cg.v2.s16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(short4 *ptr, short4 value) { asm ("st.global.cg.v4.s16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(int2 *ptr, int2 value) { asm ("st.global.cg.v2.s32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(int4 *ptr, int4 value) { asm ("st.global.cg.v4.s32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(longlong2 *ptr, longlong2 value) { asm ("st.global.cg.v2.s64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stcg(unsigned char *ptr, unsigned char value) { asm ("st.global.cg.u8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(unsigned short *ptr, unsigned short value) { asm ("st.global.cg.u16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(unsigned int *ptr, unsigned int value) { asm ("st.global.cg.u32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(unsigned long long *ptr, unsigned long long value) { asm ("st.global.cg.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(uchar2 *ptr, uchar2 value) { const int x = value.x, y = value.y; asm ("st.global.cg.v2.u8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(uchar4 *ptr, uchar4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.cg.v4.u8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(ushort2 *ptr, ushort2 value) { asm ("st.global.cg.v2.u16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(ushort4 *ptr, ushort4 value) { asm ("st.global.cg.v4.u16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(uint2 *ptr, uint2 value) { asm ("st.global.cg.v2.u32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(uint4 *ptr, uint4 value) { asm ("st.global.cg.v4.u32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(ulonglong2 *ptr, ulonglong2 value) { asm ("st.global.cg.v2.u64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stcg(float *ptr, float value) { asm ("st.global.cg.f32 [%0], %1;" :: "l" (ptr), "f"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(double *ptr, double value) { asm ("st.global.cg.f64 [%0], %1;" :: "l" (ptr), "d"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(float2 *ptr, float2 value) { asm ("st.global.cg.v2.f32 [%0], {%1,%2};" :: "l" (ptr), "f"(value.x), "f"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(float4 *ptr, float4 value) { asm ("st.global.cg.v4.f32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "f"(value.x), "f"(value.y), "f"(value.z), "f"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcg(double2 *ptr, double2 value) { asm ("st.global.cg.v2.f64 [%0], {%1,%2};" :: "l" (ptr), "d"(value.x), "d"(value.y) : "memory"); } + + + + + + + +static __attribute__((device)) __inline__ void __stcs(long *ptr, long value) { asm ("st.global.cs.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(unsigned long *ptr, unsigned long value) { asm ("st.global.cs.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } + + + + + + +static __attribute__((device)) __inline__ void __stcs(char *ptr, char value) { asm ("st.global.cs.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(signed char *ptr, signed char value) { asm ("st.global.cs.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(short *ptr, short value) { asm ("st.global.cs.s16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(int *ptr, int value) { asm ("st.global.cs.s32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(long long *ptr, long long value) { asm ("st.global.cs.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(char2 *ptr, char2 value) { const int x = value.x, y = value.y; asm ("st.global.cs.v2.s8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(char4 *ptr, char4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.cs.v4.s8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(short2 *ptr, short2 value) { asm ("st.global.cs.v2.s16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(short4 *ptr, short4 value) { asm ("st.global.cs.v4.s16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(int2 *ptr, int2 value) { asm ("st.global.cs.v2.s32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(int4 *ptr, int4 value) { asm ("st.global.cs.v4.s32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(longlong2 *ptr, longlong2 value) { asm ("st.global.cs.v2.s64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stcs(unsigned char *ptr, unsigned char value) { asm ("st.global.cs.u8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(unsigned short *ptr, unsigned short value) { asm ("st.global.cs.u16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(unsigned int *ptr, unsigned int value) { asm ("st.global.cs.u32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(unsigned long long *ptr, unsigned long long value) { asm ("st.global.cs.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(uchar2 *ptr, uchar2 value) { const int x = value.x, y = value.y; asm ("st.global.cs.v2.u8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(uchar4 *ptr, uchar4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.cs.v4.u8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(ushort2 *ptr, ushort2 value) { asm ("st.global.cs.v2.u16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(ushort4 *ptr, ushort4 value) { asm ("st.global.cs.v4.u16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(uint2 *ptr, uint2 value) { asm ("st.global.cs.v2.u32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(uint4 *ptr, uint4 value) { asm ("st.global.cs.v4.u32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(ulonglong2 *ptr, ulonglong2 value) { asm ("st.global.cs.v2.u64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stcs(float *ptr, float value) { asm ("st.global.cs.f32 [%0], %1;" :: "l" (ptr), "f"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(double *ptr, double value) { asm ("st.global.cs.f64 [%0], %1;" :: "l" (ptr), "d"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(float2 *ptr, float2 value) { asm ("st.global.cs.v2.f32 [%0], {%1,%2};" :: "l" (ptr), "f"(value.x), "f"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(float4 *ptr, float4 value) { asm ("st.global.cs.v4.f32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "f"(value.x), "f"(value.y), "f"(value.z), "f"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stcs(double2 *ptr, double2 value) { asm ("st.global.cs.v2.f64 [%0], {%1,%2};" :: "l" (ptr), "d"(value.x), "d"(value.y) : "memory"); } + + + + + + + +static __attribute__((device)) __inline__ void __stwt(long *ptr, long value) { asm ("st.global.wt.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(unsigned long *ptr, unsigned long value) { asm ("st.global.wt.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } + + + + + + +static __attribute__((device)) __inline__ void __stwt(char *ptr, char value) { asm ("st.global.wt.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(signed char *ptr, signed char value) { asm ("st.global.wt.s8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(short *ptr, short value) { asm ("st.global.wt.s16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(int *ptr, int value) { asm ("st.global.wt.s32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(long long *ptr, long long value) { asm ("st.global.wt.s64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(char2 *ptr, char2 value) { const int x = value.x, y = value.y; asm ("st.global.wt.v2.s8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(char4 *ptr, char4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.wt.v4.s8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(short2 *ptr, short2 value) { asm ("st.global.wt.v2.s16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(short4 *ptr, short4 value) { asm ("st.global.wt.v4.s16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(int2 *ptr, int2 value) { asm ("st.global.wt.v2.s32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(int4 *ptr, int4 value) { asm ("st.global.wt.v4.s32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(longlong2 *ptr, longlong2 value) { asm ("st.global.wt.v2.s64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stwt(unsigned char *ptr, unsigned char value) { asm ("st.global.wt.u8 [%0], %1;" :: "l" (ptr), "r"((int)value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(unsigned short *ptr, unsigned short value) { asm ("st.global.wt.u16 [%0], %1;" :: "l" (ptr), "h"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(unsigned int *ptr, unsigned int value) { asm ("st.global.wt.u32 [%0], %1;" :: "l" (ptr), "r"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(unsigned long long *ptr, unsigned long long value) { asm ("st.global.wt.u64 [%0], %1;" :: "l" (ptr), "l"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(uchar2 *ptr, uchar2 value) { const int x = value.x, y = value.y; asm ("st.global.wt.v2.u8 [%0], {%1,%2};" :: "l" (ptr), "r"(x), "r"(y) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(uchar4 *ptr, uchar4 value) { const int x = value.x, y = value.y, z = value.z, w = value.w; asm ("st.global.wt.v4.u8 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(x), "r"(y), "r"(z), "r"(w) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(ushort2 *ptr, ushort2 value) { asm ("st.global.wt.v2.u16 [%0], {%1,%2};" :: "l" (ptr), "h"(value.x), "h"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(ushort4 *ptr, ushort4 value) { asm ("st.global.wt.v4.u16 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "h"(value.x), "h"(value.y), "h"(value.z), "h"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(uint2 *ptr, uint2 value) { asm ("st.global.wt.v2.u32 [%0], {%1,%2};" :: "l" (ptr), "r"(value.x), "r"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(uint4 *ptr, uint4 value) { asm ("st.global.wt.v4.u32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "r"(value.x), "r"(value.y), "r"(value.z), "r"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(ulonglong2 *ptr, ulonglong2 value) { asm ("st.global.wt.v2.u64 [%0], {%1,%2};" :: "l" (ptr), "l"(value.x), "l"(value.y) : "memory"); } + +static __attribute__((device)) __inline__ void __stwt(float *ptr, float value) { asm ("st.global.wt.f32 [%0], %1;" :: "l" (ptr), "f"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(double *ptr, double value) { asm ("st.global.wt.f64 [%0], %1;" :: "l" (ptr), "d"(value) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(float2 *ptr, float2 value) { asm ("st.global.wt.v2.f32 [%0], {%1,%2};" :: "l" (ptr), "f"(value.x), "f"(value.y) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(float4 *ptr, float4 value) { asm ("st.global.wt.v4.f32 [%0], {%1,%2,%3,%4};" :: "l" (ptr), "f"(value.x), "f"(value.y), "f"(value.z), "f"(value.w) : "memory"); } +static __attribute__((device)) __inline__ void __stwt(double2 *ptr, double2 value) { asm ("st.global.wt.v2.f64 [%0], {%1,%2};" :: "l" (ptr), "d"(value.x), "d"(value.y) : "memory"); } +# 553 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.hpp" +static __attribute__((device)) __inline__ unsigned int __funnelshift_l(unsigned int lo, unsigned int hi, unsigned int shift) +{ + unsigned int ret; + asm volatile ("shf.l.wrap.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(lo), "r"(hi), "r"(shift)); + return ret; +} +static __attribute__((device)) __inline__ unsigned int __funnelshift_lc(unsigned int lo, unsigned int hi, unsigned int shift) +{ + unsigned int ret; + asm volatile ("shf.l.clamp.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(lo), "r"(hi), "r"(shift)); + return ret; +} + + +static __attribute__((device)) __inline__ unsigned int __funnelshift_r(unsigned int lo, unsigned int hi, unsigned int shift) +{ + unsigned int ret; + asm volatile ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(lo), "r"(hi), "r"(shift)); + return ret; +} +static __attribute__((device)) __inline__ unsigned int __funnelshift_rc(unsigned int lo, unsigned int hi, unsigned int shift) +{ + unsigned int ret; + asm volatile ("shf.r.clamp.b32 %0, %1, %2, %3;" : "=r"(ret) : "r"(lo), "r"(hi), "r"(shift)); + return ret; +} +# 508 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" 2 +# 3297 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_intrinsics.h" 1 +# 111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_intrinsics.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" 1 +# 112 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_intrinsics.h" 2 +# 3298 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" 1 +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.hpp" 1 +# 121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" 2 +# 3299 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" 1 +# 123 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.hpp" 1 +# 124 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" 2 +# 3300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" 1 +# 150 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.hpp" 1 +# 151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" 2 +# 3301 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template struct __nv_surf_trait { typedef void * cast_type; }; + +template<> struct __nv_surf_trait { typedef char * cast_type; }; +template<> struct __nv_surf_trait { typedef signed char * cast_type; }; +template<> struct __nv_surf_trait { typedef unsigned char * cast_type; }; +template<> struct __nv_surf_trait { typedef char1 * cast_type; }; +template<> struct __nv_surf_trait { typedef uchar1 * cast_type; }; +template<> struct __nv_surf_trait { typedef char2 * cast_type; }; +template<> struct __nv_surf_trait { typedef uchar2 * cast_type; }; +template<> struct __nv_surf_trait { typedef char4 * cast_type; }; +template<> struct __nv_surf_trait { typedef uchar4 * cast_type; }; +template<> struct __nv_surf_trait { typedef short * cast_type; }; +template<> struct __nv_surf_trait { typedef unsigned short * cast_type; }; +template<> struct __nv_surf_trait { typedef short1 * cast_type; }; +template<> struct __nv_surf_trait { typedef ushort1 * cast_type; }; +template<> struct __nv_surf_trait { typedef short2 * cast_type; }; +template<> struct __nv_surf_trait { typedef ushort2 * cast_type; }; +template<> struct __nv_surf_trait { typedef short4 * cast_type; }; +template<> struct __nv_surf_trait { typedef ushort4 * cast_type; }; +template<> struct __nv_surf_trait { typedef int * cast_type; }; +template<> struct __nv_surf_trait { typedef unsigned int * cast_type; }; +template<> struct __nv_surf_trait { typedef int1 * cast_type; }; +template<> struct __nv_surf_trait { typedef uint1 * cast_type; }; +template<> struct __nv_surf_trait { typedef int2 * cast_type; }; +template<> struct __nv_surf_trait { typedef uint2 * cast_type; }; +template<> struct __nv_surf_trait { typedef int4 * cast_type; }; +template<> struct __nv_surf_trait { typedef uint4 * cast_type; }; +template<> struct __nv_surf_trait { typedef long long * cast_type; }; +template<> struct __nv_surf_trait { typedef unsigned long long * cast_type; }; +template<> struct __nv_surf_trait { typedef longlong1 * cast_type; }; +template<> struct __nv_surf_trait { typedef ulonglong1 * cast_type; }; +template<> struct __nv_surf_trait { typedef longlong2 * cast_type; }; +template<> struct __nv_surf_trait { typedef ulonglong2 * cast_type; }; +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template<> struct __nv_surf_trait { typedef float * cast_type; }; +template<> struct __nv_surf_trait { typedef float1 * cast_type; }; +template<> struct __nv_surf_trait { typedef float2 * cast_type; }; +template<> struct __nv_surf_trait { typedef float4 * cast_type; }; + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dread(T *res, surface surf, int x, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf1Dread_v2", (void *)res, s, surf, x, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf1Dread(surface surf, int x, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + T temp; + __nv_tex_surf_handler("__surf1Dread_v2", (typename __nv_surf_trait::cast_type)&temp, (int)sizeof(T), surf, x, mode); + return temp; + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dread(T *res, surface surf, int x, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + *res = surf1Dread(surf, x, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dread(T *res, surface surf, int x, int y, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf2Dread_v2", (void *)res, s, surf, x, y, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf2Dread(surface surf, int x, int y, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + T temp; + __nv_tex_surf_handler("__surf2Dread_v2", (typename __nv_surf_trait::cast_type)&temp, (int)sizeof(T), surf, x, y, mode); + return temp; + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dread(T *res, surface surf, int x, int y, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + *res = surf2Dread(surf, x, y, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dread(T *res, surface surf, int x, int y, int z, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf3Dread_v2", (void *)res, s, surf, x, y, z, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf3Dread(surface surf, int x, int y, int z, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + T temp; + __nv_tex_surf_handler("__surf3Dread_v2", (typename __nv_surf_trait::cast_type)&temp, (int)sizeof(T), surf, x, y, z, mode); + return temp; + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dread(T *res, surface surf, int x, int y, int z, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + *res = surf3Dread(surf, x, y, z, mode); + +} + + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredread(T *res, surface surf, int x, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf1DLayeredread_v2", (void *)res, s, surf, x, layer, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf1DLayeredread(surface surf, int x, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + T temp; + __nv_tex_surf_handler("__surf1DLayeredread_v2", (typename __nv_surf_trait::cast_type)&temp, (int)sizeof(T), surf, x, layer, mode); + return temp; + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredread(T *res, surface surf, int x, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + *res = surf1DLayeredread(surf, x, layer, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredread(T *res, surface surf, int x, int y, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf2DLayeredread_v2", (void *)res, s, surf, x, y, layer, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf2DLayeredread(surface surf, int x, int y, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + T temp; + __nv_tex_surf_handler("__surf2DLayeredread_v2", (typename __nv_surf_trait::cast_type)&temp, (int)sizeof(T), surf, x, y, layer, mode); + return temp; + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredread(T *res, surface surf, int x, int y, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + *res = surf2DLayeredread(surf, x, y, layer, mode); + +} + + +template +static __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapread(T *res, surface surf, int x, int y, int face, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surfCubemapread_v2", (void *)res, s, surf, x, y, face, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surfCubemapread(surface surf, int x, int y, int face, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + T temp; + + __nv_tex_surf_handler("__surfCubemapread_v2", (typename __nv_surf_trait::cast_type)&temp, (int)sizeof(T), surf, x, y, face, mode); + return temp; + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapread(T *res, surface surf, int x, int y, int face, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + *res = surfCubemapread(surf, x, y, face, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredread(T *res, surface surf, int x, int y, int layerFace, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surfCubemapLayeredread_v2", (void *)res, s, surf, x, y, layerFace, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surfCubemapLayeredread(surface surf, int x, int y, int layerFace, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + T temp; + __nv_tex_surf_handler("__surfCubemapLayeredread_v2", (typename __nv_surf_trait::cast_type)&temp, (int)sizeof(T), surf, x, y, layerFace, mode); + return temp; + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredread(T *res, surface surf, int x, int y, int layerFace, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + *res = surfCubemapLayeredread(surf, x, y, layerFace, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dwrite(T val, surface surf, int x, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf1Dwrite_v2", (void *)&val, s, surf, x, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dwrite(T val, surface surf, int x, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf1Dwrite_v2", (typename __nv_surf_trait::cast_type)&val, (int)sizeof(T), surf, x, mode); + +} + + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dwrite(T val, surface surf, int x, int y, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf2Dwrite_v2", (void *)&val, s, surf, x, y, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dwrite(T val, surface surf, int x, int y, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf2Dwrite_v2", (typename __nv_surf_trait::cast_type)&val, (int)sizeof(T), surf, x, y, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dwrite(T val, surface surf, int x, int y, int z, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf3Dwrite_v2", (void *)&val, s, surf, x, y, z,mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dwrite(T val, surface surf, int x, int y, int z, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf3Dwrite_v2", (typename __nv_surf_trait::cast_type)&val, (int)sizeof(T), surf, x, y, z, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredwrite(T val, surface surf, int x, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf1DLayeredwrite_v2", (void *)&val, s, surf, x, layer,mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredwrite(T val, surface surf, int x, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf1DLayeredwrite_v2", (typename __nv_surf_trait::cast_type)&val, (int)sizeof(T), surf, x, layer, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredwrite(T val, surface surf, int x, int y, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf2DLayeredwrite_v2", (void *)&val, s, surf, x, y, layer,mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredwrite(T val, surface surf, int x, int y, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surf2DLayeredwrite_v2", (typename __nv_surf_trait::cast_type)&val, (int)sizeof(T), surf, x, y, layer, mode); + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapwrite(T val, surface surf, int x, int y, int face, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surfCubemapwrite_v2", (void *)&val, s, surf, x, y, face, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapwrite(T val, surface surf, int x, int y, int face, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surfCubemapwrite_v2", (typename __nv_surf_trait::cast_type)&val, (int)sizeof(T), surf, x, y, face, mode); + +} + + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredwrite(T val, surface surf, int x, int y, int layerFace, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surfCubemapLayeredwrite_v2", (void *)&val, s, surf, x, y, layerFace, mode); + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredwrite(T val, surface surf, int x, int y, int layerFace, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__surfCubemapLayeredwrite_v2", (typename __nv_surf_trait::cast_type)&val, (int)sizeof(T), surf, x, y, layerFace, mode); + +} +# 3302 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" 1 +# 72 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template +struct __nv_tex_rmet_ret { }; + +template<> struct __nv_tex_rmet_ret { typedef char type; }; +template<> struct __nv_tex_rmet_ret { typedef signed char type; }; +template<> struct __nv_tex_rmet_ret { typedef unsigned char type; }; +template<> struct __nv_tex_rmet_ret { typedef char1 type; }; +template<> struct __nv_tex_rmet_ret { typedef uchar1 type; }; +template<> struct __nv_tex_rmet_ret { typedef char2 type; }; +template<> struct __nv_tex_rmet_ret { typedef uchar2 type; }; +template<> struct __nv_tex_rmet_ret { typedef char4 type; }; +template<> struct __nv_tex_rmet_ret { typedef uchar4 type; }; + +template<> struct __nv_tex_rmet_ret { typedef short type; }; +template<> struct __nv_tex_rmet_ret { typedef unsigned short type; }; +template<> struct __nv_tex_rmet_ret { typedef short1 type; }; +template<> struct __nv_tex_rmet_ret { typedef ushort1 type; }; +template<> struct __nv_tex_rmet_ret { typedef short2 type; }; +template<> struct __nv_tex_rmet_ret { typedef ushort2 type; }; +template<> struct __nv_tex_rmet_ret { typedef short4 type; }; +template<> struct __nv_tex_rmet_ret { typedef ushort4 type; }; + +template<> struct __nv_tex_rmet_ret { typedef int type; }; +template<> struct __nv_tex_rmet_ret { typedef unsigned int type; }; +template<> struct __nv_tex_rmet_ret { typedef int1 type; }; +template<> struct __nv_tex_rmet_ret { typedef uint1 type; }; +template<> struct __nv_tex_rmet_ret { typedef int2 type; }; +template<> struct __nv_tex_rmet_ret { typedef uint2 type; }; +template<> struct __nv_tex_rmet_ret { typedef int4 type; }; +template<> struct __nv_tex_rmet_ret { typedef uint4 type; }; +# 113 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template<> struct __nv_tex_rmet_ret { typedef float type; }; +template<> struct __nv_tex_rmet_ret { typedef float1 type; }; +template<> struct __nv_tex_rmet_ret { typedef float2 type; }; +template<> struct __nv_tex_rmet_ret { typedef float4 type; }; + + +template struct __nv_tex_rmet_cast { typedef T* type; }; +# 131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1Dfetch(texture t, int x) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex1Dfetch_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x); + return temp; + +} + +template +struct __nv_tex_rmnf_ret { }; + +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1Dfetch(texture t, int x) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex1Dfetch_rmnf_v2", &type_dummy, &retval, t, x); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1D(texture t, float x) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex1D_v2", (typename __nv_tex_rmet_cast::type) &temp, t, x); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1D(texture t, float x) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex1D_rmnf_v2", &type_dummy, &retval, t, x); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2D(texture t, float x, float y) +{ + + typename __nv_tex_rmet_ret::type temp; + + __nv_tex_surf_handler("__tex2D_v2", (typename __nv_tex_rmet_cast::type) &temp, t, x, y); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2D(texture t, float x, float y) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex2D_rmnf_v2", &type_dummy, &retval, t, x, y); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLayered(texture t, float x, int layer) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex1DLayered_v2", (typename __nv_tex_rmet_cast::type) &temp, t, x, layer); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLayered(texture t, float x, int layer) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex1DLayered_rmnf_v2", &type_dummy, &retval, t, x, layer); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLayered(texture t, float x, float y, int layer) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex2DLayered_v2", (typename __nv_tex_rmet_cast::type) &temp, t, x, y, layer); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLayered(texture t, float x, float y, int layer) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex2DLayered_rmnf_v2", &type_dummy, &retval, t, x, y, layer); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex3D(texture t, float x, float y, float z) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex3D_v2", (typename __nv_tex_rmet_cast::type) &temp, t, x, y, z); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex3D(texture t, float x, float y, float z) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex3D_rmnf_v2", &type_dummy, &retval, t, x, y, z); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemap(texture t, float x, float y, float z) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__texCubemap_v2", (typename __nv_tex_rmet_cast::type) &temp, t, x, y, z); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemap(texture t, float x, float y, float z) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__texCubemap_rmnf_v2", &type_dummy, &retval, t, x, y, z); + return retval; + +} + + +template +struct __nv_tex2dgather_ret { }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; + +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; + +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; + +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; + +template +static __attribute__((device)) __inline__ __attribute__((always_inline)) typename __nv_tex2dgather_ret::type tex2Dgather(texture t, float x, float y, int comp=0) +{ + + T type_dummy; + typename __nv_tex2dgather_ret::type retval; + __nv_tex_surf_handler("__tex2Dgather_v2", &type_dummy, &retval, t, x, y, comp); + return retval; + +} + + +template struct __nv_tex2dgather_rmnf_ret { }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; + +template +static __attribute__((device)) __inline__ __attribute__((always_inline)) typename __nv_tex2dgather_rmnf_ret::type tex2Dgather(texture t, float x, float y, int comp = 0) +{ + + T type_dummy; + typename __nv_tex2dgather_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex2Dgather_rmnf_v2", &type_dummy, &retval, t, x, y, comp); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLod(texture t, float x, float level) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex1DLod_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, level); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLod(texture t, float x, float level) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex1DLod_rmnf_v2", &type_dummy, &retval, t, x, level); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLod(texture t, float x, float y, float level) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex2DLod_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, y, level); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLod(texture t, float x, float y, float level) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex2DLod_rmnf_v2", &type_dummy, &retval, t, x, y, level); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLayeredLod(texture t, float x, int layer, float level) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex1DLayeredLod_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, layer, level); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLayeredLod(texture t, float x, int layer, float level) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex1DLayeredLod_rmnf_v2", &type_dummy, &retval, t, x, layer, level); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLayeredLod(texture t, float x, float y, int layer, float level) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex2DLayeredLod_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, y, layer, level); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLayeredLod(texture t, float x, float y, int layer, float level) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex2DLayeredLod_rmnf_v2", &type_dummy, &retval, t, x, y, layer, level); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex3DLod(texture t, float x, float y, float z, float level) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex3DLod_v2",(typename __nv_tex_rmet_cast::type)&temp, t, x, y, z, level); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex3DLod(texture t, float x, float y, float z, float level) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex3DLod_rmnf_v2", &type_dummy, &retval, t, x, y, z, level); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLod(texture t, float x, float y, float z, float level) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__texCubemapLod_v2",(typename __nv_tex_rmet_cast::type)&temp, t, x, y, z, level); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLod(texture t, float x, float y, float z, float level) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__texCubemapLod_rmnf_v2", &type_dummy, &retval, t, x, y, z, level); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLayered(texture t, float x, float y, float z, int layer) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__texCubemapLayered_v2",(typename __nv_tex_rmet_cast::type)&temp, t, x, y, z, layer); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLayered(texture t, float x, float y, float z, int layer) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__texCubemapLayered_rmnf_v2", &type_dummy, &retval, t, x, y, z, layer); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLayeredLod(texture t, float x, float y, float z, int layer, float level) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__texCubemapLayeredLod_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, y, z, layer, level); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLayeredLod(texture t, float x, float y, float z, int layer, float level) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__texCubemapLayeredLod_rmnf_v2", &type_dummy, &retval, t, x, y, z, layer, level); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__texCubemapGrad_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, y, z, &dPdx, &dPdy); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__texCubemapGrad_rmnf_v2", &type_dummy, &retval, t, x, y, z, &dPdx, &dPdy); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLayeredGrad(texture t, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__texCubemapLayeredGrad_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, y, z, layer, &dPdx, &dPdy); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLayeredGrad(texture t, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__texCubemapLayeredGrad_rmnf_v2", &type_dummy, &retval,t, x, y, z, layer, &dPdx, &dPdy); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DGrad(texture t, float x, float dPdx, float dPdy) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex1DGrad_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, dPdx, dPdy); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DGrad(texture t, float x, float dPdx, float dPdy) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex1DGrad_rmnf_v2", &type_dummy, &retval,t, x,dPdx, dPdy); + return retval; + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DGrad(texture t, float x, float y, float2 dPdx, float2 dPdy) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex2DGrad_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, y, &dPdx, &dPdy); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DGrad(texture t, float x, float y, float2 dPdx, float2 dPdy) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex2DGrad_rmnf_v2", &type_dummy, &retval,t, x, y, &dPdx, &dPdy); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLayeredGrad(texture t, float x, int layer, float dPdx, float dPdy) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex1DLayeredGrad_v2",(typename __nv_tex_rmet_cast::type)&temp, t, x, layer, dPdx, dPdy); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLayeredGrad(texture t, float x, int layer, float dPdx, float dPdy) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex1DLayeredGrad_rmnf_v2", &type_dummy, &retval,t, x, layer, dPdx, dPdy); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLayeredGrad(texture t, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex2DLayeredGrad_v2",(typename __nv_tex_rmet_cast::type)&temp, t, x, y, layer, &dPdx, &dPdy); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLayeredGrad(texture t, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex2DLayeredGrad_rmnf_v2", &type_dummy, &retval,t, x, y, layer, &dPdx, &dPdy); + return retval; + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex3DGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + typename __nv_tex_rmet_ret::type temp; + __nv_tex_surf_handler("__tex3DGrad_v2", (typename __nv_tex_rmet_cast::type)&temp, t, x, y, z, &dPdx, &dPdy); + return temp; + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex3DGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + T type_dummy; + typename __nv_tex_rmnf_ret::type retval; + __nv_tex_surf_handler("__tex3DGrad_rmnf_v2", &type_dummy, &retval,t, x, y, z, &dPdx, &dPdy); + return retval; + +} +# 3303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" 1 +# 64 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template struct __nv_itex_trait { }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1Dfetch(T *ptr, cudaTextureObject_t obj, int x) +{ + + __nv_tex_surf_handler("__itex1Dfetch", ptr, obj, x); + +} + +template +static __attribute__((device)) T tex1Dfetch(cudaTextureObject_t texObject, int x) +{ + + T ret; + tex1Dfetch(&ret, texObject, x); + return ret; + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1D(T *ptr, cudaTextureObject_t obj, float x) +{ + + __nv_tex_surf_handler("__itex1D", ptr, obj, x); + +} + + +template +static __attribute__((device)) T tex1D(cudaTextureObject_t texObject, float x) +{ + + T ret; + tex1D(&ret, texObject, x); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2D(T *ptr, cudaTextureObject_t obj, float x, float y) +{ + + __nv_tex_surf_handler("__itex2D", ptr, obj, x, y); + +} + +template +static __attribute__((device)) T tex2D(cudaTextureObject_t texObject, float x, float y) +{ + + T ret; + tex2D(&ret, texObject, x, y); + return ret; + +} +# 188 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type tex3D(T *ptr, cudaTextureObject_t obj, float x, float y, float z) +{ + + __nv_tex_surf_handler("__itex3D", ptr, obj, x, y, z); + +} + +template +static __attribute__((device)) T tex3D(cudaTextureObject_t texObject, float x, float y, float z) +{ + + T ret; + tex3D(&ret, texObject, x, y, z); + return ret; + +} +# 230 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLayered(T *ptr, cudaTextureObject_t obj, float x, int layer) +{ + + __nv_tex_surf_handler("__itex1DLayered", ptr, obj, x, layer); + +} + +template +static __attribute__((device)) T tex1DLayered(cudaTextureObject_t texObject, float x, int layer) +{ + + T ret; + tex1DLayered(&ret, texObject, x, layer); + return ret; + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayered(T *ptr, cudaTextureObject_t obj, float x, float y, int layer) +{ + + __nv_tex_surf_handler("__itex2DLayered", ptr, obj, x, y, layer); + +} + +template +static __attribute__((device)) T tex2DLayered(cudaTextureObject_t texObject, float x, float y, int layer) +{ + + T ret; + tex2DLayered(&ret, texObject, x, y, layer); + return ret; + +} +# 289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemap(T *ptr, cudaTextureObject_t obj, float x, float y, float z) +{ + + __nv_tex_surf_handler("__itexCubemap", ptr, obj, x, y, z); + +} + + +template +static __attribute__((device)) T texCubemap(cudaTextureObject_t texObject, float x, float y, float z) +{ + + T ret; + texCubemap(&ret, texObject, x, y, z); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLayered(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer) +{ + + __nv_tex_surf_handler("__itexCubemapLayered", ptr, obj, x, y, z, layer); + +} + +template +static __attribute__((device)) T texCubemapLayered(cudaTextureObject_t texObject, float x, float y, float z, int layer) +{ + + T ret; + texCubemapLayered(&ret, texObject, x, y, z, layer); + return ret; + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2Dgather(T *ptr, cudaTextureObject_t obj, float x, float y, int comp = 0) +{ + + __nv_tex_surf_handler("__itex2Dgather", ptr, obj, x, y, comp); + +} + +template +static __attribute__((device)) T tex2Dgather(cudaTextureObject_t to, float x, float y, int comp = 0) +{ + + T ret; + tex2Dgather(&ret, to, x, y, comp); + return ret; + +} +# 368 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLod(T *ptr, cudaTextureObject_t obj, float x, float level) +{ + + __nv_tex_surf_handler("__itex1DLod", ptr, obj, x, level); + +} + +template +static __attribute__((device)) T tex1DLod(cudaTextureObject_t texObject, float x, float level) +{ + + T ret; + tex1DLod(&ret, texObject, x, level); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float level) +{ + + __nv_tex_surf_handler("__itex2DLod", ptr, obj, x, y, level); + +} + +template +static __attribute__((device)) T tex2DLod(cudaTextureObject_t texObject, float x, float y, float level) +{ + + T ret; + tex2DLod(&ret, texObject, x, y, level); + return ret; + +} +# 430 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type tex3DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level) +{ + + __nv_tex_surf_handler("__itex3DLod", ptr, obj, x, y, z, level); + +} + +template +static __attribute__((device)) T tex3DLod(cudaTextureObject_t texObject, float x, float y, float z, float level) +{ + + T ret; + tex3DLod(&ret, texObject, x, y, z, level); + return ret; + +} +# 472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, int layer, float level) +{ + + __nv_tex_surf_handler("__itex1DLayeredLod", ptr, obj, x, layer, level); + +} + +template +static __attribute__((device)) T tex1DLayeredLod(cudaTextureObject_t texObject, float x, int layer, float level) +{ + + T ret; + tex1DLayeredLod(&ret, texObject, x, layer, level); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, float level) +{ + + __nv_tex_surf_handler("__itex2DLayeredLod", ptr, obj, x, y, layer, level); + +} + +template +static __attribute__((device)) T tex2DLayeredLod(cudaTextureObject_t texObject, float x, float y, int layer, float level) +{ + + T ret; + tex2DLayeredLod(&ret, texObject, x, y, layer, level); + return ret; + +} +# 531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level) +{ + + __nv_tex_surf_handler("__itexCubemapLod", ptr, obj, x, y, z, level); + +} + +template +static __attribute__((device)) T texCubemapLod(cudaTextureObject_t texObject, float x, float y, float z, float level) +{ + + T ret; + texCubemapLod(&ret, texObject, x, y, z, level); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + __nv_tex_surf_handler("__itexCubemapGrad_v2", ptr, obj, x, y, z, &dPdx, &dPdy); + +} + +template +static __attribute__((device)) T texCubemapGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + T ret; + texCubemapGrad(&ret, texObject, x, y, z, dPdx, dPdy); + return ret; + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer, float level) +{ + + __nv_tex_surf_handler("__itexCubemapLayeredLod", ptr, obj, x, y, z, layer, level); + +} + +template +static __attribute__((device)) T texCubemapLayeredLod(cudaTextureObject_t texObject, float x, float y, float z, int layer, float level) +{ + + T ret; + texCubemapLayeredLod(&ret, texObject, x, y, z, layer, level); + return ret; + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DGrad(T *ptr, cudaTextureObject_t obj, float x, float dPdx, float dPdy) +{ + + __nv_tex_surf_handler("__itex1DGrad", ptr, obj, x, dPdx, dPdy); + +} + +template +static __attribute__((device)) T tex1DGrad(cudaTextureObject_t texObject, float x, float dPdx, float dPdy) +{ + + T ret; + tex1DGrad(&ret, texObject, x, dPdx, dPdy); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float2 dPdx, float2 dPdy) +{ + + __nv_tex_surf_handler("__itex2DGrad_v2", ptr, obj, x, y, &dPdx, &dPdy); + + +} + +template +static __attribute__((device)) T tex2DGrad(cudaTextureObject_t texObject, float x, float y, float2 dPdx, float2 dPdy) +{ + + T ret; + tex2DGrad(&ret, texObject, x, y, dPdx, dPdy); + return ret; + +} +# 648 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type tex3DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + __nv_tex_surf_handler("__itex3DGrad_v2", ptr, obj, x, y, z, &dPdx, &dPdy); + +} + +template +static __attribute__((device)) T tex3DGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + T ret; + tex3DGrad(&ret, texObject, x, y, z, dPdx, dPdy); + return ret; + +} +# 690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, int layer, float dPdx, float dPdy) +{ + + __nv_tex_surf_handler("__itex1DLayeredGrad", ptr, obj, x, layer, dPdx, dPdy); + +} + +template +static __attribute__((device)) T tex1DLayeredGrad(cudaTextureObject_t texObject, float x, int layer, float dPdx, float dPdy) +{ + + T ret; + tex1DLayeredGrad(&ret, texObject, x, layer, dPdx, dPdy); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayeredGrad(T * ptr, cudaTextureObject_t obj, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + __nv_tex_surf_handler("__itex2DLayeredGrad_v2", ptr, obj, x, y, layer, &dPdx, &dPdy); + +} + +template +static __attribute__((device)) T tex2DLayeredGrad(cudaTextureObject_t texObject, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + T ret; + tex2DLayeredGrad(&ret, texObject, x, y, layer, dPdx, dPdy); + return ret; + +} +# 750 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + __nv_tex_surf_handler("__itexCubemapLayeredGrad_v2", ptr, obj, x, y, z, layer, &dPdx, &dPdy); + +} + +template +static __attribute__((device)) T texCubemapLayeredGrad(cudaTextureObject_t texObject, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + T ret; + texCubemapLayeredGrad(&ret, texObject, x, y, z, layer, dPdx, dPdy); + return ret; + +} +# 3304 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" 1 +# 59 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template struct __nv_isurf_trait { }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; + +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; + +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; + + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1Dread(T *ptr, cudaSurfaceObject_t obj, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf1Dread", ptr, obj, x, mode); + +} + +template +static __attribute__((device)) T surf1Dread(cudaSurfaceObject_t surfObject, int x, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + T ret; + surf1Dread(&ret, surfObject, x, boundaryMode); + return ret; + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2Dread(T *ptr, cudaSurfaceObject_t obj, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf2Dread", ptr, obj, x, y, mode); + +} + +template +static __attribute__((device)) T surf2Dread(cudaSurfaceObject_t surfObject, int x, int y, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + T ret; + surf2Dread(&ret, surfObject, x, y, boundaryMode); + return ret; + +} + + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf3Dread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf3Dread", ptr, obj, x, y, z, mode); + +} + +template +static __attribute__((device)) T surf3Dread(cudaSurfaceObject_t surfObject, int x, int y, int z, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + T ret; + surf3Dread(&ret, surfObject, x, y, z, boundaryMode); + return ret; + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1DLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf1DLayeredread", ptr, obj, x, layer, mode); + +} + +template +static __attribute__((device)) T surf1DLayeredread(cudaSurfaceObject_t surfObject, int x, int layer, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + T ret; + surf1DLayeredread(&ret, surfObject, x, layer, boundaryMode); + return ret; + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2DLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf2DLayeredread", ptr, obj, x, y, layer, mode); + +} + +template +static __attribute__((device)) T surf2DLayeredread(cudaSurfaceObject_t surfObject, int x, int y, int layer, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + T ret; + surf2DLayeredread(&ret, surfObject, x, y, layer, boundaryMode); + return ret; + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurfCubemapread", ptr, obj, x, y, face, mode); + +} + +template +static __attribute__((device)) T surfCubemapread(cudaSurfaceObject_t surfObject, int x, int y, int face, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + T ret; + surfCubemapread(&ret, surfObject, x, y, face, boundaryMode); + return ret; + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int layerface, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurfCubemapLayeredread", ptr, obj, x, y, layerface, mode); + +} + +template +static __attribute__((device)) T surfCubemapLayeredread(cudaSurfaceObject_t surfObject, int x, int y, int layerface, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + T ret; + surfCubemapLayeredread(&ret, surfObject, x, y, layerface, boundaryMode); + return ret; + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1Dwrite(T val, cudaSurfaceObject_t obj, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf1Dwrite_v2", &val, obj, x, mode); + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2Dwrite(T val, cudaSurfaceObject_t obj, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf2Dwrite_v2", &val, obj, x, y, mode); + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf3Dwrite(T val, cudaSurfaceObject_t obj, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf3Dwrite_v2", &val, obj, x, y, z, mode); + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1DLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf1DLayeredwrite_v2", &val, obj, x, layer, mode); + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2DLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurf2DLayeredwrite_v2", &val, obj, x, y, layer, mode); + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapwrite(T val, cudaSurfaceObject_t obj, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurfCubemapwrite_v2", &val, obj, x, y, face, mode); + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int y, int layerface, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + __nv_tex_surf_handler("__isurfCubemapLayeredwrite_v2", &val, obj, x, y, layerface, mode); + +} +# 3305 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/cudacc_ext.h" 1 +# 3306 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 + + +extern "C" __attribute__((host)) __attribute__((device)) unsigned __cudaPushCallConfiguration(dim3 gridDim, + dim3 blockDim, + size_t sharedMem = 0, + struct CUstream_st *stream = 0); +# 119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_launch_parameters.h" 1 +# 68 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_launch_parameters.h" +extern "C" { + + +uint3 __attribute__((device_builtin)) extern const threadIdx; +uint3 __attribute__((device_builtin)) extern const blockIdx; +dim3 __attribute__((device_builtin)) extern const blockDim; +dim3 __attribute__((device_builtin)) extern const gridDim; +int __attribute__((device_builtin)) extern const warpSize; + + + + +} +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaLaunchKernel( + const T *func, + dim3 gridDim, + dim3 blockDim, + void **args, + size_t sharedMem = 0, + cudaStream_t stream = 0 +) +{ + return ::cudaLaunchKernel((const void *)func, gridDim, blockDim, args, sharedMem, stream); +} +# 263 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaLaunchCooperativeKernel( + const T *func, + dim3 gridDim, + dim3 blockDim, + void **args, + size_t sharedMem = 0, + cudaStream_t stream = 0 +) +{ + return ::cudaLaunchCooperativeKernel((const void *)func, gridDim, blockDim, args, sharedMem, stream); +} +# 307 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static __inline__ __attribute__((host)) cudaError_t cudaEventCreate( + cudaEvent_t *event, + unsigned int flags +) +{ + return ::cudaEventCreateWithFlags(event, flags); +} +# 372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static __inline__ __attribute__((host)) cudaError_t cudaMallocHost( + void **ptr, + size_t size, + unsigned int flags +) +{ + return ::cudaHostAlloc(ptr, size, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaHostAlloc( + T **ptr, + size_t size, + unsigned int flags +) +{ + return ::cudaHostAlloc((void**)(void*)ptr, size, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaHostGetDevicePointer( + T **pDevice, + void *pHost, + unsigned int flags +) +{ + return ::cudaHostGetDevicePointer((void**)(void*)pDevice, pHost, flags); +} +# 501 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocManaged( + T **devPtr, + size_t size, + unsigned int flags = 0x01 +) +{ + return ::cudaMallocManaged((void**)(void*)devPtr, size, flags); +} +# 591 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaStreamAttachMemAsync( + cudaStream_t stream, + T *devPtr, + size_t length = 0, + unsigned int flags = 0x04 +) +{ + return ::cudaStreamAttachMemAsync(stream, (void*)devPtr, length, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMalloc( + T **devPtr, + size_t size +) +{ + return ::cudaMalloc((void**)(void*)devPtr, size); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocHost( + T **ptr, + size_t size, + unsigned int flags = 0 +) +{ + return cudaMallocHost((void**)(void*)ptr, size, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocPitch( + T **devPtr, + size_t *pitch, + size_t width, + size_t height +) +{ + return ::cudaMallocPitch((void**)(void*)devPtr, pitch, width, height); +} +# 641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static __inline__ __attribute__((host)) cudaError_t cudaMallocAsync( + void **ptr, + size_t size, + cudaMemPool_t memPool, + cudaStream_t stream +) +{ + return ::cudaMallocFromPoolAsync(ptr, size, memPool, stream); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocAsync( + T **ptr, + size_t size, + cudaMemPool_t memPool, + cudaStream_t stream +) +{ + return ::cudaMallocFromPoolAsync((void**)(void*)ptr, size, memPool, stream); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocAsync( + T **ptr, + size_t size, + cudaStream_t stream +) +{ + return ::cudaMallocAsync((void**)(void*)ptr, size, stream); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocFromPoolAsync( + T **ptr, + size_t size, + cudaMemPool_t memPool, + cudaStream_t stream +) +{ + return ::cudaMallocFromPoolAsync((void**)(void*)ptr, size, memPool, stream); +} +# 720 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyToSymbol( + const T &symbol, + const void *src, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyHostToDevice +) +{ + return ::cudaMemcpyToSymbol((const void*)&symbol, src, count, offset, kind); +} +# 774 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyToSymbolAsync( + const T &symbol, + const void *src, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyHostToDevice, + cudaStream_t stream = 0 +) +{ + return ::cudaMemcpyToSymbolAsync((const void*)&symbol, src, count, offset, kind, stream); +} +# 822 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyFromSymbol( + void *dst, + const T &symbol, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyDeviceToHost +) +{ + return ::cudaMemcpyFromSymbol(dst, (const void*)&symbol, count, offset, kind); +} +# 876 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyFromSymbolAsync( + void *dst, + const T &symbol, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyDeviceToHost, + cudaStream_t stream = 0 +) +{ + return ::cudaMemcpyFromSymbolAsync(dst, (const void*)&symbol, count, offset, kind, stream); +} +# 945 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeToSymbol( + cudaGraphNode_t *pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t *pDependencies, + size_t numDependencies, + const T &symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphAddMemcpyNodeToSymbol(pGraphNode, graph, pDependencies, numDependencies, (const void*)&symbol, src, count, offset, kind); +} +# 1016 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeFromSymbol( + cudaGraphNode_t* pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t* pDependencies, + size_t numDependencies, + void* dst, + const T &symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphAddMemcpyNodeFromSymbol(pGraphNode, graph, pDependencies, numDependencies, dst, (const void*)&symbol, count, offset, kind); +} +# 1067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsToSymbol( + cudaGraphNode_t node, + const T &symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphMemcpyNodeSetParamsToSymbol(node, (const void*)&symbol, src, count, offset, kind); +} +# 1115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsFromSymbol( + cudaGraphNode_t node, + void* dst, + const T &symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphMemcpyNodeSetParamsFromSymbol(node, dst, (const void*)&symbol, count, offset, kind); +} +# 1173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsToSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + const T &symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphExecMemcpyNodeSetParamsToSymbol(hGraphExec, node, (const void*)&symbol, src, count, offset, kind); +} +# 1232 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsFromSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + void* dst, + const T &symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphExecMemcpyNodeSetParamsFromSymbol(hGraphExec, node, dst, (const void*)&symbol, count, offset, kind); +} +# 1271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaUserObjectCreate( + cudaUserObject_t *object_out, + T *objectToWrap, + unsigned int initialRefcount, + unsigned int flags) +{ + return ::cudaUserObjectCreate( + object_out, + objectToWrap, + [](void *vpObj) { delete reinterpret_cast(vpObj); }, + initialRefcount, + flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaUserObjectCreate( + cudaUserObject_t *object_out, + T *objectToWrap, + unsigned int initialRefcount, + cudaUserObjectFlags flags) +{ + return cudaUserObjectCreate(object_out, objectToWrap, initialRefcount, (unsigned int)flags); +} +# 1321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGetSymbolAddress( + void **devPtr, + const T &symbol +) +{ + return ::cudaGetSymbolAddress(devPtr, (const void*)&symbol); +} +# 1353 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGetSymbolSize( + size_t *size, + const T &symbol +) +{ + return ::cudaGetSymbolSize(size, (const void*)&symbol); +} +# 1397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture( + size_t *offset, + const struct texture &tex, + const void *devPtr, + const struct cudaChannelFormatDesc &desc, + size_t size = +# 1403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 3 4 + (0x7fffffff * 2U + 1U) + +# 1404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +) +{ + return ::cudaBindTexture(offset, &tex, devPtr, &desc, size); +} +# 1443 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture( + size_t *offset, + const struct texture &tex, + const void *devPtr, + size_t size = +# 1448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 3 4 + (0x7fffffff * 2U + 1U) + +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +) +{ + return cudaBindTexture(offset, tex, devPtr, tex.channelDesc, size); +} +# 1500 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture2D( + size_t *offset, + const struct texture &tex, + const void *devPtr, + const struct cudaChannelFormatDesc &desc, + size_t width, + size_t height, + size_t pitch +) +{ + return ::cudaBindTexture2D(offset, &tex, devPtr, &desc, width, height, pitch); +} +# 1559 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture2D( + size_t *offset, + const struct texture &tex, + const void *devPtr, + size_t width, + size_t height, + size_t pitch +) +{ + return ::cudaBindTexture2D(offset, &tex, devPtr, &tex.channelDesc, width, height, pitch); +} +# 1602 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToArray( + const struct texture &tex, + cudaArray_const_t array, + const struct cudaChannelFormatDesc &desc +) +{ + return ::cudaBindTextureToArray(&tex, array, &desc); +} +# 1641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToArray( + const struct texture &tex, + cudaArray_const_t array +) +{ + struct cudaChannelFormatDesc desc; + cudaError_t err = ::cudaGetChannelDesc(&desc, array); + + return err == cudaSuccess ? cudaBindTextureToArray(tex, array, desc) : err; +} +# 1683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToMipmappedArray( + const struct texture &tex, + cudaMipmappedArray_const_t mipmappedArray, + const struct cudaChannelFormatDesc &desc +) +{ + return ::cudaBindTextureToMipmappedArray(&tex, mipmappedArray, &desc); +} +# 1722 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToMipmappedArray( + const struct texture &tex, + cudaMipmappedArray_const_t mipmappedArray +) +{ + struct cudaChannelFormatDesc desc; + cudaArray_t levelArray; + cudaError_t err = ::cudaGetMipmappedArrayLevel(&levelArray, mipmappedArray, 0); + + if (err != cudaSuccess) { + return err; + } + err = ::cudaGetChannelDesc(&desc, levelArray); + + return err == cudaSuccess ? cudaBindTextureToMipmappedArray(tex, mipmappedArray, desc) : err; +} +# 1765 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaUnbindTexture( + const struct texture &tex +) +{ + return ::cudaUnbindTexture(&tex); +} +# 1801 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaGetTextureAlignmentOffset( + size_t *offset, + const struct texture &tex +) +{ + return ::cudaGetTextureAlignmentOffset(offset, &tex); +} +# 1853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncSetCacheConfig( + T *func, + enum cudaFuncCache cacheConfig +) +{ + return ::cudaFuncSetCacheConfig((const void*)func, cacheConfig); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncSetSharedMemConfig( + T *func, + enum cudaSharedMemConfig config +) +{ + return ::cudaFuncSetSharedMemConfig((const void*)func, config); +} +# 1901 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor( + int *numBlocks, + T func, + int blockSize, + size_t dynamicSMemSize) +{ + return ::cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(numBlocks, (const void*)func, blockSize, dynamicSMemSize, 0x00); +} +# 1953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags( + int *numBlocks, + T func, + int blockSize, + size_t dynamicSMemSize, + unsigned int flags) +{ + return ::cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(numBlocks, (const void*)func, blockSize, dynamicSMemSize, flags); +} + + + + +class __cudaOccupancyB2DHelper { + size_t n; +public: + inline __attribute__((host)) __attribute__((device)) __cudaOccupancyB2DHelper(size_t n_) : n(n_) {} + inline __attribute__((host)) __attribute__((device)) size_t operator()(int) + { + return n; + } +}; +# 2023 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags( + int *minGridSize, + int *blockSize, + T func, + UnaryFunction blockSizeToDynamicSMemSize, + int blockSizeLimit = 0, + unsigned int flags = 0) +{ + cudaError_t status; + + + int device; + struct cudaFuncAttributes attr; + + + int maxThreadsPerMultiProcessor; + int warpSize; + int devMaxThreadsPerBlock; + int multiProcessorCount; + int funcMaxThreadsPerBlock; + int occupancyLimit; + int granularity; + + + int maxBlockSize = 0; + int numBlocks = 0; + int maxOccupancy = 0; + + + int blockSizeToTryAligned; + int blockSizeToTry; + int blockSizeLimitAligned; + int occupancyInBlocks; + int occupancyInThreads; + size_t dynamicSMemSize; + + + + + + if (!minGridSize || !blockSize || !func) { + return cudaErrorInvalidValue; + } + + + + + + status = ::cudaGetDevice(&device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &maxThreadsPerMultiProcessor, + cudaDevAttrMaxThreadsPerMultiProcessor, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &warpSize, + cudaDevAttrWarpSize, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &devMaxThreadsPerBlock, + cudaDevAttrMaxThreadsPerBlock, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &multiProcessorCount, + cudaDevAttrMultiProcessorCount, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaFuncGetAttributes(&attr, func); + if (status != cudaSuccess) { + return status; + } + + funcMaxThreadsPerBlock = attr.maxThreadsPerBlock; + + + + + + occupancyLimit = maxThreadsPerMultiProcessor; + granularity = warpSize; + + if (blockSizeLimit == 0) { + blockSizeLimit = devMaxThreadsPerBlock; + } + + if (devMaxThreadsPerBlock < blockSizeLimit) { + blockSizeLimit = devMaxThreadsPerBlock; + } + + if (funcMaxThreadsPerBlock < blockSizeLimit) { + blockSizeLimit = funcMaxThreadsPerBlock; + } + + blockSizeLimitAligned = ((blockSizeLimit + (granularity - 1)) / granularity) * granularity; + + for (blockSizeToTryAligned = blockSizeLimitAligned; blockSizeToTryAligned > 0; blockSizeToTryAligned -= granularity) { + + + + if (blockSizeLimit < blockSizeToTryAligned) { + blockSizeToTry = blockSizeLimit; + } else { + blockSizeToTry = blockSizeToTryAligned; + } + + dynamicSMemSize = blockSizeToDynamicSMemSize(blockSizeToTry); + + status = cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags( + &occupancyInBlocks, + func, + blockSizeToTry, + dynamicSMemSize, + flags); + + if (status != cudaSuccess) { + return status; + } + + occupancyInThreads = blockSizeToTry * occupancyInBlocks; + + if (occupancyInThreads > maxOccupancy) { + maxBlockSize = blockSizeToTry; + numBlocks = occupancyInBlocks; + maxOccupancy = occupancyInThreads; + } + + + + if (occupancyLimit == maxOccupancy) { + break; + } + } + + + + + + + + *minGridSize = numBlocks * multiProcessorCount; + *blockSize = maxBlockSize; + + return status; +} +# 2219 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSizeVariableSMem( + int *minGridSize, + int *blockSize, + T func, + UnaryFunction blockSizeToDynamicSMemSize, + int blockSizeLimit = 0) +{ + return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, blockSizeToDynamicSMemSize, blockSizeLimit, 0x00); +} +# 2265 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSize( + int *minGridSize, + int *blockSize, + T func, + size_t dynamicSMemSize = 0, + int blockSizeLimit = 0) +{ + return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, __cudaOccupancyB2DHelper(dynamicSMemSize), blockSizeLimit, 0x00); +} +# 2303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaOccupancyAvailableDynamicSMemPerBlock( + size_t *dynamicSmemSize, + T func, + int numBlocks, + int blockSize) +{ + return ::cudaOccupancyAvailableDynamicSMemPerBlock(dynamicSmemSize, (const void*)func, numBlocks, blockSize); +} +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSizeWithFlags( + int *minGridSize, + int *blockSize, + T func, + size_t dynamicSMemSize = 0, + int blockSizeLimit = 0, + unsigned int flags = 0) +{ + return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, __cudaOccupancyB2DHelper(dynamicSMemSize), blockSizeLimit, flags); +} +# 2405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncGetAttributes( + struct cudaFuncAttributes *attr, + T *entry +) +{ + return ::cudaFuncGetAttributes(attr, (const void*)entry); +} +# 2469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncSetAttribute( + T *entry, + enum cudaFuncAttribute attr, + int value +) +{ + return ::cudaFuncSetAttribute((const void*)entry, attr, value); +} +# 2501 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindSurfaceToArray( + const struct surface &surf, + cudaArray_const_t array, + const struct cudaChannelFormatDesc &desc +) +{ + return ::cudaBindSurfaceToArray(&surf, array, &desc); +} +# 2532 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindSurfaceToArray( + const struct surface &surf, + cudaArray_const_t array +) +{ + struct cudaChannelFormatDesc desc; + cudaError_t err = ::cudaGetChannelDesc(&desc, array); + + return err == cudaSuccess ? cudaBindSurfaceToArray(surf, array, desc) : err; +} +# 2553 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +#pragma GCC diagnostic pop +# 1 "" 2 +# 1 "CMakeCUDACompilerId.cu" +# 64 "CMakeCUDACompilerId.cu" +char const* info_compiler = "INFO" ":" "compiler[" "NVIDIA" "]"; + +char const* info_simulate = "INFO" ":" "simulate[" "GNU" "]"; +# 369 "CMakeCUDACompilerId.cu" +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + ('0' + (((11) / 10000000)%10)), ('0' + (((11) / 1000000)%10)), ('0' + (((11) / 100000)%10)), ('0' + (((11) / 10000)%10)), ('0' + (((11) / 1000)%10)), ('0' + (((11) / 100)%10)), ('0' + (((11) / 10)%10)), ('0' + ((11) % 10)), + + '.', ('0' + (((7) / 10000000)%10)), ('0' + (((7) / 1000000)%10)), ('0' + (((7) / 100000)%10)), ('0' + (((7) / 10000)%10)), ('0' + (((7) / 1000)%10)), ('0' + (((7) / 100)%10)), ('0' + (((7) / 10)%10)), ('0' + ((7) % 10)), + + '.', ('0' + (((99) / 10000000)%10)), ('0' + (((99) / 1000000)%10)), ('0' + (((99) / 100000)%10)), ('0' + (((99) / 10000)%10)), ('0' + (((99) / 1000)%10)), ('0' + (((99) / 100)%10)), ('0' + (((99) / 10)%10)), ('0' + ((99) % 10)), + + + + + + ']','\0'}; +# 398 "CMakeCUDACompilerId.cu" +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + ('0' + (((9) / 10000000)%10)), ('0' + (((9) / 1000000)%10)), ('0' + (((9) / 100000)%10)), ('0' + (((9) / 10000)%10)), ('0' + (((9) / 1000)%10)), ('0' + (((9) / 100)%10)), ('0' + (((9) / 10)%10)), ('0' + ((9) % 10)), + + '.', ('0' + (((3) / 10000000)%10)), ('0' + (((3) / 1000000)%10)), ('0' + (((3) / 100000)%10)), ('0' + (((3) / 10000)%10)), ('0' + (((3) / 1000)%10)), ('0' + (((3) / 100)%10)), ('0' + (((3) / 10)%10)), ('0' + ((3) % 10)), + + + + + + + + ']','\0'}; + + + + + + +char const* info_platform = "INFO" ":" "platform[" "Linux" "]"; +char const* info_arch = "INFO" ":" "arch[" "]"; + + + +const char* info_language_standard_default = "INFO" ":" "standard_default[" + + + + + + + + "14" + + + + + +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" + + + "ON" + + + +"]"; + + + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + + require += info_version[argc]; + + + require += info_simulate[argc]; + + + require += info_simulate_version[argc]; + + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp4.ii b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp4.ii new file mode 100644 index 0000000..d2c0d63 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cpp4.ii @@ -0,0 +1,18673 @@ +# 1 "CMakeCUDACompilerId.cu" +# 1 "" +# 1 "" +# 1 "/usr/include/stdc-predef.h" 1 3 4 +# 1 "" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 1 +# 61 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +#pragma GCC diagnostic push + + +#pragma GCC diagnostic ignored "-Wunused-function" +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_config.h" 1 +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_config.h" +# 1 "/usr/include/features.h" 1 3 4 +# 438 "/usr/include/features.h" 3 4 +# 1 "/usr/include/sys/cdefs.h" 1 3 4 +# 499 "/usr/include/sys/cdefs.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 500 "/usr/include/sys/cdefs.h" 2 3 4 +# 1 "/usr/include/bits/long-double.h" 1 3 4 +# 501 "/usr/include/sys/cdefs.h" 2 3 4 +# 439 "/usr/include/features.h" 2 3 4 +# 462 "/usr/include/features.h" 3 4 +# 1 "/usr/include/gnu/stubs.h" 1 3 4 + + + + +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 6 "/usr/include/gnu/stubs.h" 2 3 4 +# 14 "/usr/include/gnu/stubs.h" 3 4 +# 1 "/usr/include/gnu/stubs-64-v2.h" 1 3 4 +# 15 "/usr/include/gnu/stubs.h" 2 3 4 +# 463 "/usr/include/features.h" 2 3 4 +# 202 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_config.h" 2 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + + + + + + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 56 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" 1 +# 59 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 60 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" 2 +# 68 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" +enum __attribute__((device_builtin)) cudaRoundMode +{ + cudaRoundNearest, + cudaRoundZero, + cudaRoundPosInf, + cudaRoundMinInf +}; +# 57 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 1 +# 59 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 60 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" 1 +# 65 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 66 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" 2 +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +struct __attribute__((device_builtin)) char1 +{ + signed char x; +}; + +struct __attribute__((device_builtin)) uchar1 +{ + unsigned char x; +}; + + +struct __attribute__((device_builtin)) __attribute__((aligned(2))) char2 +{ + signed char x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(2))) uchar2 +{ + unsigned char x, y; +}; + +struct __attribute__((device_builtin)) char3 +{ + signed char x, y, z; +}; + +struct __attribute__((device_builtin)) uchar3 +{ + unsigned char x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) char4 +{ + signed char x, y, z, w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) uchar4 +{ + unsigned char x, y, z, w; +}; + +struct __attribute__((device_builtin)) short1 +{ + short x; +}; + +struct __attribute__((device_builtin)) ushort1 +{ + unsigned short x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) short2 +{ + short x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(4))) ushort2 +{ + unsigned short x, y; +}; + +struct __attribute__((device_builtin)) short3 +{ + short x, y, z; +}; + +struct __attribute__((device_builtin)) ushort3 +{ + unsigned short x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(8))) short4 { short x; short y; short z; short w; }; +struct __attribute__((device_builtin)) __attribute__((aligned(8))) ushort4 { unsigned short x; unsigned short y; unsigned short z; unsigned short w; }; + +struct __attribute__((device_builtin)) int1 +{ + int x; +}; + +struct __attribute__((device_builtin)) uint1 +{ + unsigned int x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(8))) int2 { int x; int y; }; +struct __attribute__((device_builtin)) __attribute__((aligned(8))) uint2 { unsigned int x; unsigned int y; }; + +struct __attribute__((device_builtin)) int3 +{ + int x, y, z; +}; + +struct __attribute__((device_builtin)) uint3 +{ + unsigned int x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) int4 +{ + int x, y, z, w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) uint4 +{ + unsigned int x, y, z, w; +}; + +struct __attribute__((device_builtin)) long1 +{ + long int x; +}; + +struct __attribute__((device_builtin)) ulong1 +{ + unsigned long x; +}; + + + + + + +struct __attribute__((device_builtin)) __attribute__((aligned(2*sizeof(long int)))) long2 +{ + long int x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(2*sizeof(unsigned long int)))) ulong2 +{ + unsigned long int x, y; +}; + + + +struct __attribute__((device_builtin)) long3 +{ + long int x, y, z; +}; + +struct __attribute__((device_builtin)) ulong3 +{ + unsigned long int x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) long4 +{ + long int x, y, z, w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) ulong4 +{ + unsigned long int x, y, z, w; +}; + +struct __attribute__((device_builtin)) float1 +{ + float x; +}; +# 276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +struct __attribute__((device_builtin)) __attribute__((aligned(8))) float2 { float x; float y; }; + + + + +struct __attribute__((device_builtin)) float3 +{ + float x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) float4 +{ + float x, y, z, w; +}; + +struct __attribute__((device_builtin)) longlong1 +{ + long long int x; +}; + +struct __attribute__((device_builtin)) ulonglong1 +{ + unsigned long long int x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) longlong2 +{ + long long int x, y; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) ulonglong2 +{ + unsigned long long int x, y; +}; + +struct __attribute__((device_builtin)) longlong3 +{ + long long int x, y, z; +}; + +struct __attribute__((device_builtin)) ulonglong3 +{ + unsigned long long int x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) longlong4 +{ + long long int x, y, z ,w; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) ulonglong4 +{ + unsigned long long int x, y, z, w; +}; + +struct __attribute__((device_builtin)) double1 +{ + double x; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) double2 +{ + double x, y; +}; + +struct __attribute__((device_builtin)) double3 +{ + double x, y, z; +}; + +struct __attribute__((device_builtin)) __attribute__((aligned(16))) double4 +{ + double x, y, z, w; +}; +# 363 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +typedef __attribute__((device_builtin)) struct char1 char1; +typedef __attribute__((device_builtin)) struct uchar1 uchar1; +typedef __attribute__((device_builtin)) struct char2 char2; +typedef __attribute__((device_builtin)) struct uchar2 uchar2; +typedef __attribute__((device_builtin)) struct char3 char3; +typedef __attribute__((device_builtin)) struct uchar3 uchar3; +typedef __attribute__((device_builtin)) struct char4 char4; +typedef __attribute__((device_builtin)) struct uchar4 uchar4; +typedef __attribute__((device_builtin)) struct short1 short1; +typedef __attribute__((device_builtin)) struct ushort1 ushort1; +typedef __attribute__((device_builtin)) struct short2 short2; +typedef __attribute__((device_builtin)) struct ushort2 ushort2; +typedef __attribute__((device_builtin)) struct short3 short3; +typedef __attribute__((device_builtin)) struct ushort3 ushort3; +typedef __attribute__((device_builtin)) struct short4 short4; +typedef __attribute__((device_builtin)) struct ushort4 ushort4; +typedef __attribute__((device_builtin)) struct int1 int1; +typedef __attribute__((device_builtin)) struct uint1 uint1; +typedef __attribute__((device_builtin)) struct int2 int2; +typedef __attribute__((device_builtin)) struct uint2 uint2; +typedef __attribute__((device_builtin)) struct int3 int3; +typedef __attribute__((device_builtin)) struct uint3 uint3; +typedef __attribute__((device_builtin)) struct int4 int4; +typedef __attribute__((device_builtin)) struct uint4 uint4; +typedef __attribute__((device_builtin)) struct long1 long1; +typedef __attribute__((device_builtin)) struct ulong1 ulong1; +typedef __attribute__((device_builtin)) struct long2 long2; +typedef __attribute__((device_builtin)) struct ulong2 ulong2; +typedef __attribute__((device_builtin)) struct long3 long3; +typedef __attribute__((device_builtin)) struct ulong3 ulong3; +typedef __attribute__((device_builtin)) struct long4 long4; +typedef __attribute__((device_builtin)) struct ulong4 ulong4; +typedef __attribute__((device_builtin)) struct float1 float1; +typedef __attribute__((device_builtin)) struct float2 float2; +typedef __attribute__((device_builtin)) struct float3 float3; +typedef __attribute__((device_builtin)) struct float4 float4; +typedef __attribute__((device_builtin)) struct longlong1 longlong1; +typedef __attribute__((device_builtin)) struct ulonglong1 ulonglong1; +typedef __attribute__((device_builtin)) struct longlong2 longlong2; +typedef __attribute__((device_builtin)) struct ulonglong2 ulonglong2; +typedef __attribute__((device_builtin)) struct longlong3 longlong3; +typedef __attribute__((device_builtin)) struct ulonglong3 ulonglong3; +typedef __attribute__((device_builtin)) struct longlong4 longlong4; +typedef __attribute__((device_builtin)) struct ulonglong4 ulonglong4; +typedef __attribute__((device_builtin)) struct double1 double1; +typedef __attribute__((device_builtin)) struct double2 double2; +typedef __attribute__((device_builtin)) struct double3 double3; +typedef __attribute__((device_builtin)) struct double4 double4; + + + + + + + +struct __attribute__((device_builtin)) dim3 +{ + unsigned int x, y, z; + + + __attribute__((host)) __attribute__((device)) constexpr dim3(unsigned int vx = 1, unsigned int vy = 1, unsigned int vz = 1) : x(vx), y(vy), z(vz) {} + __attribute__((host)) __attribute__((device)) constexpr dim3(uint3 v) : x(v.x), y(v.y), z(v.z) {} + __attribute__((host)) __attribute__((device)) constexpr operator uint3(void) const { return uint3{x, y, z}; } + + + + + + +}; + +typedef __attribute__((device_builtin)) struct dim3 dim3; +# 62 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 +# 81 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 1 3 4 +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/syslimits.h" 1 3 4 + + + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 1 3 4 +# 194 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 3 4 +# 1 "/usr/include/limits.h" 1 3 4 +# 26 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 27 "/usr/include/limits.h" 2 3 4 +# 183 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/bits/posix1_lim.h" 1 3 4 +# 27 "/usr/include/bits/posix1_lim.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/bits/posix1_lim.h" 2 3 4 +# 161 "/usr/include/bits/posix1_lim.h" 3 4 +# 1 "/usr/include/bits/local_lim.h" 1 3 4 +# 38 "/usr/include/bits/local_lim.h" 3 4 +# 1 "/usr/include/linux/limits.h" 1 3 4 +# 39 "/usr/include/bits/local_lim.h" 2 3 4 +# 162 "/usr/include/bits/posix1_lim.h" 2 3 4 +# 184 "/usr/include/limits.h" 2 3 4 + + + +# 1 "/usr/include/bits/posix2_lim.h" 1 3 4 +# 188 "/usr/include/limits.h" 2 3 4 + + + +# 1 "/usr/include/bits/xopen_lim.h" 1 3 4 +# 64 "/usr/include/bits/xopen_lim.h" 3 4 +# 1 "/usr/include/bits/uio_lim.h" 1 3 4 +# 65 "/usr/include/bits/xopen_lim.h" 2 3 4 +# 192 "/usr/include/limits.h" 2 3 4 +# 195 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 2 3 4 +# 8 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/syslimits.h" 2 3 4 +# 35 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h" 2 3 4 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 143 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 + +# 143 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +typedef long int ptrdiff_t; +# 209 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +typedef long unsigned int size_t; +# 415 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +typedef struct { + long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); + long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); +# 426 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 4 +} max_align_t; + + + + + + + typedef decltype(nullptr) nullptr_t; +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" 2 +# 204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + +# 204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +enum __attribute__((device_builtin)) cudaError +{ + + + + + + cudaSuccess = 0, + + + + + + cudaErrorInvalidValue = 1, + + + + + + cudaErrorMemoryAllocation = 2, + + + + + + cudaErrorInitializationError = 3, + + + + + + + cudaErrorCudartUnloading = 4, + + + + + + + cudaErrorProfilerDisabled = 5, + + + + + + + + cudaErrorProfilerNotInitialized = 6, + + + + + + + cudaErrorProfilerAlreadyStarted = 7, + + + + + + + cudaErrorProfilerAlreadyStopped = 8, +# 274 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorInvalidConfiguration = 9, + + + + + + cudaErrorInvalidPitchValue = 12, + + + + + + cudaErrorInvalidSymbol = 13, + + + + + + + + cudaErrorInvalidHostPointer = 16, + + + + + + + + cudaErrorInvalidDevicePointer = 17, + + + + + + cudaErrorInvalidTexture = 18, + + + + + + cudaErrorInvalidTextureBinding = 19, + + + + + + + cudaErrorInvalidChannelDescriptor = 20, + + + + + + cudaErrorInvalidMemcpyDirection = 21, +# 337 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorAddressOfConstant = 22, +# 346 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorTextureFetchFailed = 23, +# 355 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorTextureNotBound = 24, +# 364 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSynchronizationError = 25, + + + + + + cudaErrorInvalidFilterSetting = 26, + + + + + + cudaErrorInvalidNormSetting = 27, + + + + + + + + cudaErrorMixedDeviceExecution = 28, + + + + + + + + cudaErrorNotYetImplemented = 31, +# 401 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorMemoryValueTooLarge = 32, + + + + + + + cudaErrorStubLibrary = 34, + + + + + + + cudaErrorInsufficientDriver = 35, + + + + + + + cudaErrorCallRequiresNewerDriver = 36, + + + + + + cudaErrorInvalidSurface = 37, + + + + + + cudaErrorDuplicateVariableName = 43, + + + + + + cudaErrorDuplicateTextureName = 44, + + + + + + cudaErrorDuplicateSurfaceName = 45, +# 456 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorDevicesUnavailable = 46, +# 469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorIncompatibleDriverContext = 49, + + + + + + cudaErrorMissingConfiguration = 52, +# 484 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorPriorLaunchFailure = 53, + + + + + + + cudaErrorLaunchMaxDepthExceeded = 65, + + + + + + + + cudaErrorLaunchFileScopedTex = 66, + + + + + + + + cudaErrorLaunchFileScopedSurf = 67, +# 522 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSyncDepthExceeded = 68, +# 534 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchPendingCountExceeded = 69, + + + + + + cudaErrorInvalidDeviceFunction = 98, + + + + + + cudaErrorNoDevice = 100, + + + + + + + cudaErrorInvalidDevice = 101, + + + + + cudaErrorDeviceNotLicensed = 102, +# 567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSoftwareValidityNotEstablished = 103, + + + + + cudaErrorStartupFailure = 127, + + + + + cudaErrorInvalidKernelImage = 200, +# 587 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorDeviceUninitialized = 201, + + + + + cudaErrorMapBufferObjectFailed = 205, + + + + + cudaErrorUnmapBufferObjectFailed = 206, + + + + + + cudaErrorArrayIsMapped = 207, + + + + + cudaErrorAlreadyMapped = 208, + + + + + + + + cudaErrorNoKernelImageForDevice = 209, + + + + + cudaErrorAlreadyAcquired = 210, + + + + + cudaErrorNotMapped = 211, + + + + + + cudaErrorNotMappedAsArray = 212, + + + + + + cudaErrorNotMappedAsPointer = 213, + + + + + + cudaErrorECCUncorrectable = 214, + + + + + + cudaErrorUnsupportedLimit = 215, + + + + + + cudaErrorDeviceAlreadyInUse = 216, + + + + + + cudaErrorPeerAccessUnsupported = 217, + + + + + + cudaErrorInvalidPtx = 218, + + + + + cudaErrorInvalidGraphicsContext = 219, + + + + + + cudaErrorNvlinkUncorrectable = 220, + + + + + + + cudaErrorJitCompilerNotFound = 221, + + + + + + + cudaErrorUnsupportedPtxVersion = 222, + + + + + + + cudaErrorJitCompilationDisabled = 223, + + + + + cudaErrorUnsupportedExecAffinity = 224, + + + + + cudaErrorInvalidSource = 300, + + + + + cudaErrorFileNotFound = 301, + + + + + cudaErrorSharedObjectSymbolNotFound = 302, + + + + + cudaErrorSharedObjectInitFailed = 303, + + + + + cudaErrorOperatingSystem = 304, + + + + + + + cudaErrorInvalidResourceHandle = 400, + + + + + + cudaErrorIllegalState = 401, + + + + + + + cudaErrorSymbolNotFound = 500, + + + + + + + + cudaErrorNotReady = 600, + + + + + + + + cudaErrorIllegalAddress = 700, +# 775 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchOutOfResources = 701, +# 786 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchTimeout = 702, + + + + + + cudaErrorLaunchIncompatibleTexturing = 703, + + + + + + + cudaErrorPeerAccessAlreadyEnabled = 704, + + + + + + + cudaErrorPeerAccessNotEnabled = 705, +# 819 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSetOnActiveProcess = 708, + + + + + + + cudaErrorContextIsDestroyed = 709, + + + + + + + cudaErrorAssert = 710, + + + + + + + cudaErrorTooManyPeers = 711, + + + + + + cudaErrorHostMemoryAlreadyRegistered = 712, + + + + + + cudaErrorHostMemoryNotRegistered = 713, +# 861 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorHardwareStackError = 714, + + + + + + + + cudaErrorIllegalInstruction = 715, +# 878 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorMisalignedAddress = 716, +# 889 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorInvalidAddressSpace = 717, + + + + + + + + cudaErrorInvalidPc = 718, +# 908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorLaunchFailure = 719, +# 917 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorCooperativeLaunchTooLarge = 720, + + + + + cudaErrorNotPermitted = 800, + + + + + + cudaErrorNotSupported = 801, +# 937 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorSystemNotReady = 802, + + + + + + + cudaErrorSystemDriverMismatch = 803, +# 953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorCompatNotSupportedOnDevice = 804, + + + + + cudaErrorMpsConnectionFailed = 805, + + + + + cudaErrorMpsRpcFailure = 806, + + + + + + cudaErrorMpsServerNotReady = 807, + + + + + cudaErrorMpsMaxClientsReached = 808, + + + + + cudaErrorMpsMaxConnectionsReached = 809, + + + + + cudaErrorStreamCaptureUnsupported = 900, + + + + + + cudaErrorStreamCaptureInvalidated = 901, + + + + + + cudaErrorStreamCaptureMerge = 902, + + + + + cudaErrorStreamCaptureUnmatched = 903, + + + + + + cudaErrorStreamCaptureUnjoined = 904, + + + + + + + cudaErrorStreamCaptureIsolation = 905, + + + + + + cudaErrorStreamCaptureImplicit = 906, + + + + + + cudaErrorCapturedEvent = 907, + + + + + + + cudaErrorStreamCaptureWrongThread = 908, + + + + + cudaErrorTimeout = 909, + + + + + + cudaErrorGraphExecUpdateFailure = 910, +# 1054 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorExternalDevice = 911, +# 1067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaErrorUnknown = 999, + + + + + + + + cudaErrorApiFailureBase = 10000 +}; + + + + +enum __attribute__((device_builtin)) cudaChannelFormatKind +{ + cudaChannelFormatKindSigned = 0, + cudaChannelFormatKindUnsigned = 1, + cudaChannelFormatKindFloat = 2, + cudaChannelFormatKindNone = 3, + cudaChannelFormatKindNV12 = 4, + cudaChannelFormatKindUnsignedNormalized8X1 = 5, + cudaChannelFormatKindUnsignedNormalized8X2 = 6, + cudaChannelFormatKindUnsignedNormalized8X4 = 7, + cudaChannelFormatKindUnsignedNormalized16X1 = 8, + cudaChannelFormatKindUnsignedNormalized16X2 = 9, + cudaChannelFormatKindUnsignedNormalized16X4 = 10, + cudaChannelFormatKindSignedNormalized8X1 = 11, + cudaChannelFormatKindSignedNormalized8X2 = 12, + cudaChannelFormatKindSignedNormalized8X4 = 13, + cudaChannelFormatKindSignedNormalized16X1 = 14, + cudaChannelFormatKindSignedNormalized16X2 = 15, + cudaChannelFormatKindSignedNormalized16X4 = 16, + cudaChannelFormatKindUnsignedBlockCompressed1 = 17, + cudaChannelFormatKindUnsignedBlockCompressed1SRGB = 18, + cudaChannelFormatKindUnsignedBlockCompressed2 = 19, + cudaChannelFormatKindUnsignedBlockCompressed2SRGB = 20, + cudaChannelFormatKindUnsignedBlockCompressed3 = 21, + cudaChannelFormatKindUnsignedBlockCompressed3SRGB = 22, + cudaChannelFormatKindUnsignedBlockCompressed4 = 23, + cudaChannelFormatKindSignedBlockCompressed4 = 24, + cudaChannelFormatKindUnsignedBlockCompressed5 = 25, + cudaChannelFormatKindSignedBlockCompressed5 = 26, + cudaChannelFormatKindUnsignedBlockCompressed6H = 27, + cudaChannelFormatKindSignedBlockCompressed6H = 28, + cudaChannelFormatKindUnsignedBlockCompressed7 = 29, + cudaChannelFormatKindUnsignedBlockCompressed7SRGB = 30 +}; + + + + +struct __attribute__((device_builtin)) cudaChannelFormatDesc +{ + int x; + int y; + int z; + int w; + enum cudaChannelFormatKind f; +}; + + + + +typedef struct cudaArray *cudaArray_t; + + + + +typedef const struct cudaArray *cudaArray_const_t; + +struct cudaArray; + + + + +typedef struct cudaMipmappedArray *cudaMipmappedArray_t; + + + + +typedef const struct cudaMipmappedArray *cudaMipmappedArray_const_t; + +struct cudaMipmappedArray; +# 1160 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct __attribute__((device_builtin)) cudaArraySparseProperties { + struct { + unsigned int width; + unsigned int height; + unsigned int depth; + } tileExtent; + unsigned int miptailFirstLevel; + unsigned long long miptailSize; + unsigned int flags; + unsigned int reserved[4]; +}; + + + + + +struct __attribute__((device_builtin)) cudaArrayMemoryRequirements { + size_t size; + size_t alignment; + unsigned int reserved[4]; +}; + + + + + +enum __attribute__((device_builtin)) cudaMemoryType +{ + cudaMemoryTypeUnregistered = 0, + cudaMemoryTypeHost = 1, + cudaMemoryTypeDevice = 2, + cudaMemoryTypeManaged = 3 +}; + + + + +enum __attribute__((device_builtin)) cudaMemcpyKind +{ + cudaMemcpyHostToHost = 0, + cudaMemcpyHostToDevice = 1, + cudaMemcpyDeviceToHost = 2, + cudaMemcpyDeviceToDevice = 3, + cudaMemcpyDefault = 4 +}; + + + + + + +struct __attribute__((device_builtin)) cudaPitchedPtr +{ + void *ptr; + size_t pitch; + size_t xsize; + size_t ysize; +}; + + + + + + +struct __attribute__((device_builtin)) cudaExtent +{ + size_t width; + size_t height; + size_t depth; +}; + + + + + + +struct __attribute__((device_builtin)) cudaPos +{ + size_t x; + size_t y; + size_t z; +}; + + + + +struct __attribute__((device_builtin)) cudaMemcpy3DParms +{ + cudaArray_t srcArray; + struct cudaPos srcPos; + struct cudaPitchedPtr srcPtr; + + cudaArray_t dstArray; + struct cudaPos dstPos; + struct cudaPitchedPtr dstPtr; + + struct cudaExtent extent; + enum cudaMemcpyKind kind; +}; + + + + +struct __attribute__((device_builtin)) cudaMemcpy3DPeerParms +{ + cudaArray_t srcArray; + struct cudaPos srcPos; + struct cudaPitchedPtr srcPtr; + int srcDevice; + + cudaArray_t dstArray; + struct cudaPos dstPos; + struct cudaPitchedPtr dstPtr; + int dstDevice; + + struct cudaExtent extent; +}; + + + + +struct __attribute__((device_builtin)) cudaMemsetParams { + void *dst; + size_t pitch; + unsigned int value; + unsigned int elementSize; + size_t width; + size_t height; +}; + + + + +enum __attribute__((device_builtin)) cudaAccessProperty { + cudaAccessPropertyNormal = 0, + cudaAccessPropertyStreaming = 1, + cudaAccessPropertyPersisting = 2 +}; +# 1310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct __attribute__((device_builtin)) cudaAccessPolicyWindow { + void *base_ptr; + size_t num_bytes; + float hitRatio; + enum cudaAccessProperty hitProp; + enum cudaAccessProperty missProp; +}; +# 1328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef void ( *cudaHostFn_t)(void *userData); + + + + +struct __attribute__((device_builtin)) cudaHostNodeParams { + cudaHostFn_t fn; + void* userData; +}; + + + + +enum __attribute__((device_builtin)) cudaStreamCaptureStatus { + cudaStreamCaptureStatusNone = 0, + cudaStreamCaptureStatusActive = 1, + cudaStreamCaptureStatusInvalidated = 2 + +}; + + + + + +enum __attribute__((device_builtin)) cudaStreamCaptureMode { + cudaStreamCaptureModeGlobal = 0, + cudaStreamCaptureModeThreadLocal = 1, + cudaStreamCaptureModeRelaxed = 2 +}; + +enum __attribute__((device_builtin)) cudaSynchronizationPolicy { + cudaSyncPolicyAuto = 1, + cudaSyncPolicySpin = 2, + cudaSyncPolicyYield = 3, + cudaSyncPolicyBlockingSync = 4 +}; +# 1379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +enum __attribute__((device_builtin)) cudaStreamUpdateCaptureDependenciesFlags { + cudaStreamAddCaptureDependencies = 0x0, + cudaStreamSetCaptureDependencies = 0x1 +}; + + + + +enum __attribute__((device_builtin)) cudaUserObjectFlags { + cudaUserObjectNoDestructorSync = 0x1 +}; + + + + +enum __attribute__((device_builtin)) cudaUserObjectRetainFlags { + cudaGraphUserObjectMove = 0x1 +}; + + + + +struct cudaGraphicsResource; + + + + +enum __attribute__((device_builtin)) cudaGraphicsRegisterFlags +{ + cudaGraphicsRegisterFlagsNone = 0, + cudaGraphicsRegisterFlagsReadOnly = 1, + cudaGraphicsRegisterFlagsWriteDiscard = 2, + cudaGraphicsRegisterFlagsSurfaceLoadStore = 4, + cudaGraphicsRegisterFlagsTextureGather = 8 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphicsMapFlags +{ + cudaGraphicsMapFlagsNone = 0, + cudaGraphicsMapFlagsReadOnly = 1, + cudaGraphicsMapFlagsWriteDiscard = 2 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphicsCubeFace +{ + cudaGraphicsCubeFacePositiveX = 0x00, + cudaGraphicsCubeFaceNegativeX = 0x01, + cudaGraphicsCubeFacePositiveY = 0x02, + cudaGraphicsCubeFaceNegativeY = 0x03, + cudaGraphicsCubeFacePositiveZ = 0x04, + cudaGraphicsCubeFaceNegativeZ = 0x05 +}; + + + + +enum __attribute__((device_builtin)) cudaResourceType +{ + cudaResourceTypeArray = 0x00, + cudaResourceTypeMipmappedArray = 0x01, + cudaResourceTypeLinear = 0x02, + cudaResourceTypePitch2D = 0x03 +}; + + + + +enum __attribute__((device_builtin)) cudaResourceViewFormat +{ + cudaResViewFormatNone = 0x00, + cudaResViewFormatUnsignedChar1 = 0x01, + cudaResViewFormatUnsignedChar2 = 0x02, + cudaResViewFormatUnsignedChar4 = 0x03, + cudaResViewFormatSignedChar1 = 0x04, + cudaResViewFormatSignedChar2 = 0x05, + cudaResViewFormatSignedChar4 = 0x06, + cudaResViewFormatUnsignedShort1 = 0x07, + cudaResViewFormatUnsignedShort2 = 0x08, + cudaResViewFormatUnsignedShort4 = 0x09, + cudaResViewFormatSignedShort1 = 0x0a, + cudaResViewFormatSignedShort2 = 0x0b, + cudaResViewFormatSignedShort4 = 0x0c, + cudaResViewFormatUnsignedInt1 = 0x0d, + cudaResViewFormatUnsignedInt2 = 0x0e, + cudaResViewFormatUnsignedInt4 = 0x0f, + cudaResViewFormatSignedInt1 = 0x10, + cudaResViewFormatSignedInt2 = 0x11, + cudaResViewFormatSignedInt4 = 0x12, + cudaResViewFormatHalf1 = 0x13, + cudaResViewFormatHalf2 = 0x14, + cudaResViewFormatHalf4 = 0x15, + cudaResViewFormatFloat1 = 0x16, + cudaResViewFormatFloat2 = 0x17, + cudaResViewFormatFloat4 = 0x18, + cudaResViewFormatUnsignedBlockCompressed1 = 0x19, + cudaResViewFormatUnsignedBlockCompressed2 = 0x1a, + cudaResViewFormatUnsignedBlockCompressed3 = 0x1b, + cudaResViewFormatUnsignedBlockCompressed4 = 0x1c, + cudaResViewFormatSignedBlockCompressed4 = 0x1d, + cudaResViewFormatUnsignedBlockCompressed5 = 0x1e, + cudaResViewFormatSignedBlockCompressed5 = 0x1f, + cudaResViewFormatUnsignedBlockCompressed6H = 0x20, + cudaResViewFormatSignedBlockCompressed6H = 0x21, + cudaResViewFormatUnsignedBlockCompressed7 = 0x22 +}; + + + + +struct __attribute__((device_builtin)) cudaResourceDesc { + enum cudaResourceType resType; + + union { + struct { + cudaArray_t array; + } array; + struct { + cudaMipmappedArray_t mipmap; + } mipmap; + struct { + void *devPtr; + struct cudaChannelFormatDesc desc; + size_t sizeInBytes; + } linear; + struct { + void *devPtr; + struct cudaChannelFormatDesc desc; + size_t width; + size_t height; + size_t pitchInBytes; + } pitch2D; + } res; +}; + + + + +struct __attribute__((device_builtin)) cudaResourceViewDesc +{ + enum cudaResourceViewFormat format; + size_t width; + size_t height; + size_t depth; + unsigned int firstMipmapLevel; + unsigned int lastMipmapLevel; + unsigned int firstLayer; + unsigned int lastLayer; +}; + + + + +struct __attribute__((device_builtin)) cudaPointerAttributes +{ + + + + + enum cudaMemoryType type; +# 1554 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + int device; + + + + + + void *devicePointer; +# 1569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + void *hostPointer; +}; + + + + +struct __attribute__((device_builtin)) cudaFuncAttributes +{ + + + + + + size_t sharedSizeBytes; + + + + + + size_t constSizeBytes; + + + + + size_t localSizeBytes; + + + + + + + int maxThreadsPerBlock; + + + + + int numRegs; + + + + + + + int ptxVersion; + + + + + + + int binaryVersion; + + + + + + int cacheModeCA; + + + + + + + int maxDynamicSharedSizeBytes; +# 1641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + int preferredShmemCarveout; +# 1691 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +}; + + + + +enum __attribute__((device_builtin)) cudaFuncAttribute +{ + cudaFuncAttributeMaxDynamicSharedMemorySize = 8, + cudaFuncAttributePreferredSharedMemoryCarveout = 9, +# 1708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaFuncAttributeMax +}; + + + + +enum __attribute__((device_builtin)) cudaFuncCache +{ + cudaFuncCachePreferNone = 0, + cudaFuncCachePreferShared = 1, + cudaFuncCachePreferL1 = 2, + cudaFuncCachePreferEqual = 3 +}; + + + + + +enum __attribute__((device_builtin)) cudaSharedMemConfig +{ + cudaSharedMemBankSizeDefault = 0, + cudaSharedMemBankSizeFourByte = 1, + cudaSharedMemBankSizeEightByte = 2 +}; + + + + +enum __attribute__((device_builtin)) cudaSharedCarveout { + cudaSharedmemCarveoutDefault = -1, + cudaSharedmemCarveoutMaxShared = 100, + cudaSharedmemCarveoutMaxL1 = 0 +}; + + + + +enum __attribute__((device_builtin)) cudaComputeMode +{ + cudaComputeModeDefault = 0, + cudaComputeModeExclusive = 1, + cudaComputeModeProhibited = 2, + cudaComputeModeExclusiveProcess = 3 +}; + + + + +enum __attribute__((device_builtin)) cudaLimit +{ + cudaLimitStackSize = 0x00, + cudaLimitPrintfFifoSize = 0x01, + cudaLimitMallocHeapSize = 0x02, + cudaLimitDevRuntimeSyncDepth = 0x03, + cudaLimitDevRuntimePendingLaunchCount = 0x04, + cudaLimitMaxL2FetchGranularity = 0x05, + cudaLimitPersistingL2CacheSize = 0x06 +}; + + + + +enum __attribute__((device_builtin)) cudaMemoryAdvise +{ + cudaMemAdviseSetReadMostly = 1, + cudaMemAdviseUnsetReadMostly = 2, + cudaMemAdviseSetPreferredLocation = 3, + cudaMemAdviseUnsetPreferredLocation = 4, + cudaMemAdviseSetAccessedBy = 5, + cudaMemAdviseUnsetAccessedBy = 6 +}; + + + + +enum __attribute__((device_builtin)) cudaMemRangeAttribute +{ + cudaMemRangeAttributeReadMostly = 1, + cudaMemRangeAttributePreferredLocation = 2, + cudaMemRangeAttributeAccessedBy = 3, + cudaMemRangeAttributeLastPrefetchLocation = 4 +}; + + + + +enum __attribute__((device_builtin)) cudaOutputMode +{ + cudaKeyValuePair = 0x00, + cudaCSV = 0x01 +}; + + + + +enum __attribute__((device_builtin)) cudaFlushGPUDirectRDMAWritesOptions { + cudaFlushGPUDirectRDMAWritesOptionHost = 1<<0, + cudaFlushGPUDirectRDMAWritesOptionMemOps = 1<<1 +}; + + + + +enum __attribute__((device_builtin)) cudaGPUDirectRDMAWritesOrdering { + cudaGPUDirectRDMAWritesOrderingNone = 0, + cudaGPUDirectRDMAWritesOrderingOwner = 100, + cudaGPUDirectRDMAWritesOrderingAllDevices = 200 +}; + + + + +enum __attribute__((device_builtin)) cudaFlushGPUDirectRDMAWritesScope { + cudaFlushGPUDirectRDMAWritesToOwner = 100, + cudaFlushGPUDirectRDMAWritesToAllDevices = 200 +}; + + + + +enum __attribute__((device_builtin)) cudaFlushGPUDirectRDMAWritesTarget { + cudaFlushGPUDirectRDMAWritesTargetCurrentDevice +}; + + + + + +enum __attribute__((device_builtin)) cudaDeviceAttr +{ + cudaDevAttrMaxThreadsPerBlock = 1, + cudaDevAttrMaxBlockDimX = 2, + cudaDevAttrMaxBlockDimY = 3, + cudaDevAttrMaxBlockDimZ = 4, + cudaDevAttrMaxGridDimX = 5, + cudaDevAttrMaxGridDimY = 6, + cudaDevAttrMaxGridDimZ = 7, + cudaDevAttrMaxSharedMemoryPerBlock = 8, + cudaDevAttrTotalConstantMemory = 9, + cudaDevAttrWarpSize = 10, + cudaDevAttrMaxPitch = 11, + cudaDevAttrMaxRegistersPerBlock = 12, + cudaDevAttrClockRate = 13, + cudaDevAttrTextureAlignment = 14, + cudaDevAttrGpuOverlap = 15, + cudaDevAttrMultiProcessorCount = 16, + cudaDevAttrKernelExecTimeout = 17, + cudaDevAttrIntegrated = 18, + cudaDevAttrCanMapHostMemory = 19, + cudaDevAttrComputeMode = 20, + cudaDevAttrMaxTexture1DWidth = 21, + cudaDevAttrMaxTexture2DWidth = 22, + cudaDevAttrMaxTexture2DHeight = 23, + cudaDevAttrMaxTexture3DWidth = 24, + cudaDevAttrMaxTexture3DHeight = 25, + cudaDevAttrMaxTexture3DDepth = 26, + cudaDevAttrMaxTexture2DLayeredWidth = 27, + cudaDevAttrMaxTexture2DLayeredHeight = 28, + cudaDevAttrMaxTexture2DLayeredLayers = 29, + cudaDevAttrSurfaceAlignment = 30, + cudaDevAttrConcurrentKernels = 31, + cudaDevAttrEccEnabled = 32, + cudaDevAttrPciBusId = 33, + cudaDevAttrPciDeviceId = 34, + cudaDevAttrTccDriver = 35, + cudaDevAttrMemoryClockRate = 36, + cudaDevAttrGlobalMemoryBusWidth = 37, + cudaDevAttrL2CacheSize = 38, + cudaDevAttrMaxThreadsPerMultiProcessor = 39, + cudaDevAttrAsyncEngineCount = 40, + cudaDevAttrUnifiedAddressing = 41, + cudaDevAttrMaxTexture1DLayeredWidth = 42, + cudaDevAttrMaxTexture1DLayeredLayers = 43, + cudaDevAttrMaxTexture2DGatherWidth = 45, + cudaDevAttrMaxTexture2DGatherHeight = 46, + cudaDevAttrMaxTexture3DWidthAlt = 47, + cudaDevAttrMaxTexture3DHeightAlt = 48, + cudaDevAttrMaxTexture3DDepthAlt = 49, + cudaDevAttrPciDomainId = 50, + cudaDevAttrTexturePitchAlignment = 51, + cudaDevAttrMaxTextureCubemapWidth = 52, + cudaDevAttrMaxTextureCubemapLayeredWidth = 53, + cudaDevAttrMaxTextureCubemapLayeredLayers = 54, + cudaDevAttrMaxSurface1DWidth = 55, + cudaDevAttrMaxSurface2DWidth = 56, + cudaDevAttrMaxSurface2DHeight = 57, + cudaDevAttrMaxSurface3DWidth = 58, + cudaDevAttrMaxSurface3DHeight = 59, + cudaDevAttrMaxSurface3DDepth = 60, + cudaDevAttrMaxSurface1DLayeredWidth = 61, + cudaDevAttrMaxSurface1DLayeredLayers = 62, + cudaDevAttrMaxSurface2DLayeredWidth = 63, + cudaDevAttrMaxSurface2DLayeredHeight = 64, + cudaDevAttrMaxSurface2DLayeredLayers = 65, + cudaDevAttrMaxSurfaceCubemapWidth = 66, + cudaDevAttrMaxSurfaceCubemapLayeredWidth = 67, + cudaDevAttrMaxSurfaceCubemapLayeredLayers = 68, + cudaDevAttrMaxTexture1DLinearWidth = 69, + cudaDevAttrMaxTexture2DLinearWidth = 70, + cudaDevAttrMaxTexture2DLinearHeight = 71, + cudaDevAttrMaxTexture2DLinearPitch = 72, + cudaDevAttrMaxTexture2DMipmappedWidth = 73, + cudaDevAttrMaxTexture2DMipmappedHeight = 74, + cudaDevAttrComputeCapabilityMajor = 75, + cudaDevAttrComputeCapabilityMinor = 76, + cudaDevAttrMaxTexture1DMipmappedWidth = 77, + cudaDevAttrStreamPrioritiesSupported = 78, + cudaDevAttrGlobalL1CacheSupported = 79, + cudaDevAttrLocalL1CacheSupported = 80, + cudaDevAttrMaxSharedMemoryPerMultiprocessor = 81, + cudaDevAttrMaxRegistersPerMultiprocessor = 82, + cudaDevAttrManagedMemory = 83, + cudaDevAttrIsMultiGpuBoard = 84, + cudaDevAttrMultiGpuBoardGroupID = 85, + cudaDevAttrHostNativeAtomicSupported = 86, + cudaDevAttrSingleToDoublePrecisionPerfRatio = 87, + cudaDevAttrPageableMemoryAccess = 88, + cudaDevAttrConcurrentManagedAccess = 89, + cudaDevAttrComputePreemptionSupported = 90, + cudaDevAttrCanUseHostPointerForRegisteredMem = 91, + cudaDevAttrReserved92 = 92, + cudaDevAttrReserved93 = 93, + cudaDevAttrReserved94 = 94, + cudaDevAttrCooperativeLaunch = 95, + cudaDevAttrCooperativeMultiDeviceLaunch = 96, + cudaDevAttrMaxSharedMemoryPerBlockOptin = 97, + cudaDevAttrCanFlushRemoteWrites = 98, + cudaDevAttrHostRegisterSupported = 99, + cudaDevAttrPageableMemoryAccessUsesHostPageTables = 100, + cudaDevAttrDirectManagedMemAccessFromHost = 101, + cudaDevAttrMaxBlocksPerMultiprocessor = 106, + cudaDevAttrMaxPersistingL2CacheSize = 108, + cudaDevAttrMaxAccessPolicyWindowSize = 109, + cudaDevAttrReservedSharedMemoryPerBlock = 111, + cudaDevAttrSparseCudaArraySupported = 112, + cudaDevAttrHostRegisterReadOnlySupported = 113, + cudaDevAttrTimelineSemaphoreInteropSupported = 114, + cudaDevAttrMaxTimelineSemaphoreInteropSupported = 114, + cudaDevAttrMemoryPoolsSupported = 115, + cudaDevAttrGPUDirectRDMASupported = 116, + cudaDevAttrGPUDirectRDMAFlushWritesOptions = 117, + cudaDevAttrGPUDirectRDMAWritesOrdering = 118, + cudaDevAttrMemoryPoolSupportedHandleTypes = 119, + + + + + cudaDevAttrDeferredMappingCudaArraySupported = 121, + + cudaDevAttrMax +}; + + + + +enum __attribute__((device_builtin)) cudaMemPoolAttr +{ +# 1973 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaMemPoolReuseFollowEventDependencies = 0x1, + + + + + + + cudaMemPoolReuseAllowOpportunistic = 0x2, + + + + + + + + cudaMemPoolReuseAllowInternalDependencies = 0x3, +# 1999 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + cudaMemPoolAttrReleaseThreshold = 0x4, + + + + + + cudaMemPoolAttrReservedMemCurrent = 0x5, + + + + + + + cudaMemPoolAttrReservedMemHigh = 0x6, + + + + + + cudaMemPoolAttrUsedMemCurrent = 0x7, + + + + + + + cudaMemPoolAttrUsedMemHigh = 0x8 +}; + + + + +enum __attribute__((device_builtin)) cudaMemLocationType { + cudaMemLocationTypeInvalid = 0, + cudaMemLocationTypeDevice = 1 +}; + + + + + + +struct __attribute__((device_builtin)) cudaMemLocation { + enum cudaMemLocationType type; + int id; +}; + + + + +enum __attribute__((device_builtin)) cudaMemAccessFlags { + cudaMemAccessFlagsProtNone = 0, + cudaMemAccessFlagsProtRead = 1, + cudaMemAccessFlagsProtReadWrite = 3 +}; + + + + +struct __attribute__((device_builtin)) cudaMemAccessDesc { + struct cudaMemLocation location; + enum cudaMemAccessFlags flags; +}; + + + + +enum __attribute__((device_builtin)) cudaMemAllocationType { + cudaMemAllocationTypeInvalid = 0x0, + + + + cudaMemAllocationTypePinned = 0x1, + cudaMemAllocationTypeMax = 0x7FFFFFFF +}; + + + + +enum __attribute__((device_builtin)) cudaMemAllocationHandleType { + cudaMemHandleTypeNone = 0x0, + cudaMemHandleTypePosixFileDescriptor = 0x1, + cudaMemHandleTypeWin32 = 0x2, + cudaMemHandleTypeWin32Kmt = 0x4 +}; + + + + +struct __attribute__((device_builtin)) cudaMemPoolProps { + enum cudaMemAllocationType allocType; + enum cudaMemAllocationHandleType handleTypes; + struct cudaMemLocation location; + + + + + + + void *win32SecurityAttributes; + unsigned char reserved[64]; +}; + + + + +struct __attribute__((device_builtin)) cudaMemPoolPtrExportData { + unsigned char reserved[64]; +}; + + + + +struct __attribute__((device_builtin)) cudaMemAllocNodeParams { + + + + + struct cudaMemPoolProps poolProps; + const struct cudaMemAccessDesc *accessDescs; + size_t accessDescCount; + size_t bytesize; + void *dptr; +}; + + + + +enum __attribute__((device_builtin)) cudaGraphMemAttributeType { + + + + + cudaGraphMemAttrUsedMemCurrent = 0x0, + + + + + + + cudaGraphMemAttrUsedMemHigh = 0x1, + + + + + + + cudaGraphMemAttrReservedMemCurrent = 0x2, + + + + + + + cudaGraphMemAttrReservedMemHigh = 0x3 +}; + + + + + +enum __attribute__((device_builtin)) cudaDeviceP2PAttr { + cudaDevP2PAttrPerformanceRank = 1, + cudaDevP2PAttrAccessSupported = 2, + cudaDevP2PAttrNativeAtomicSupported = 3, + cudaDevP2PAttrCudaArrayAccessSupported = 4 +}; + + + + + + +struct __attribute__((device_builtin)) CUuuid_st { + char bytes[16]; +}; +typedef __attribute__((device_builtin)) struct CUuuid_st CUuuid; + +typedef __attribute__((device_builtin)) struct CUuuid_st cudaUUID_t; + + + + +struct __attribute__((device_builtin)) cudaDeviceProp +{ + char name[256]; + cudaUUID_t uuid; + char luid[8]; + unsigned int luidDeviceNodeMask; + size_t totalGlobalMem; + size_t sharedMemPerBlock; + int regsPerBlock; + int warpSize; + size_t memPitch; + int maxThreadsPerBlock; + int maxThreadsDim[3]; + int maxGridSize[3]; + int clockRate; + size_t totalConstMem; + int major; + int minor; + size_t textureAlignment; + size_t texturePitchAlignment; + int deviceOverlap; + int multiProcessorCount; + int kernelExecTimeoutEnabled; + int integrated; + int canMapHostMemory; + int computeMode; + int maxTexture1D; + int maxTexture1DMipmap; + int maxTexture1DLinear; + int maxTexture2D[2]; + int maxTexture2DMipmap[2]; + int maxTexture2DLinear[3]; + int maxTexture2DGather[2]; + int maxTexture3D[3]; + int maxTexture3DAlt[3]; + int maxTextureCubemap; + int maxTexture1DLayered[2]; + int maxTexture2DLayered[3]; + int maxTextureCubemapLayered[2]; + int maxSurface1D; + int maxSurface2D[2]; + int maxSurface3D[3]; + int maxSurface1DLayered[2]; + int maxSurface2DLayered[3]; + int maxSurfaceCubemap; + int maxSurfaceCubemapLayered[2]; + size_t surfaceAlignment; + int concurrentKernels; + int ECCEnabled; + int pciBusID; + int pciDeviceID; + int pciDomainID; + int tccDriver; + int asyncEngineCount; + int unifiedAddressing; + int memoryClockRate; + int memoryBusWidth; + int l2CacheSize; + int persistingL2CacheMaxSize; + int maxThreadsPerMultiProcessor; + int streamPrioritiesSupported; + int globalL1CacheSupported; + int localL1CacheSupported; + size_t sharedMemPerMultiprocessor; + int regsPerMultiprocessor; + int managedMemory; + int isMultiGpuBoard; + int multiGpuBoardGroupID; + int hostNativeAtomicSupported; + int singleToDoublePrecisionPerfRatio; + int pageableMemoryAccess; + int concurrentManagedAccess; + int computePreemptionSupported; + int canUseHostPointerForRegisteredMem; + int cooperativeLaunch; + int cooperativeMultiDeviceLaunch; + size_t sharedMemPerBlockOptin; + int pageableMemoryAccessUsesHostPageTables; + int directManagedMemAccessFromHost; + int maxBlocksPerMultiProcessor; + int accessPolicyMaxWindowSize; + size_t reservedSharedMemPerBlock; +}; +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) struct __attribute__((device_builtin)) cudaIpcEventHandle_st +{ + char reserved[64]; +}cudaIpcEventHandle_t; + + + + +typedef __attribute__((device_builtin)) struct __attribute__((device_builtin)) cudaIpcMemHandle_st +{ + char reserved[64]; +}cudaIpcMemHandle_t; + + + + +enum __attribute__((device_builtin)) cudaExternalMemoryHandleType { + + + + cudaExternalMemoryHandleTypeOpaqueFd = 1, + + + + cudaExternalMemoryHandleTypeOpaqueWin32 = 2, + + + + cudaExternalMemoryHandleTypeOpaqueWin32Kmt = 3, + + + + cudaExternalMemoryHandleTypeD3D12Heap = 4, + + + + cudaExternalMemoryHandleTypeD3D12Resource = 5, + + + + cudaExternalMemoryHandleTypeD3D11Resource = 6, + + + + cudaExternalMemoryHandleTypeD3D11ResourceKmt = 7, + + + + cudaExternalMemoryHandleTypeNvSciBuf = 8 +}; +# 2453 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct __attribute__((device_builtin)) cudaExternalMemoryHandleDesc { + + + + enum cudaExternalMemoryHandleType type; + union { + + + + + + int fd; +# 2480 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + struct { + + + + void *handle; + + + + + const void *name; + } win32; + + + + + const void *nvSciBufObject; + } handle; + + + + unsigned long long size; + + + + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalMemoryBufferDesc { + + + + unsigned long long offset; + + + + unsigned long long size; + + + + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalMemoryMipmappedArrayDesc { + + + + + unsigned long long offset; + + + + struct cudaChannelFormatDesc formatDesc; + + + + struct cudaExtent extent; + + + + + unsigned int flags; + + + + unsigned int numLevels; +}; + + + + +enum __attribute__((device_builtin)) cudaExternalSemaphoreHandleType { + + + + cudaExternalSemaphoreHandleTypeOpaqueFd = 1, + + + + cudaExternalSemaphoreHandleTypeOpaqueWin32 = 2, + + + + cudaExternalSemaphoreHandleTypeOpaqueWin32Kmt = 3, + + + + cudaExternalSemaphoreHandleTypeD3D12Fence = 4, + + + + cudaExternalSemaphoreHandleTypeD3D11Fence = 5, + + + + cudaExternalSemaphoreHandleTypeNvSciSync = 6, + + + + cudaExternalSemaphoreHandleTypeKeyedMutex = 7, + + + + cudaExternalSemaphoreHandleTypeKeyedMutexKmt = 8, + + + + cudaExternalSemaphoreHandleTypeTimelineSemaphoreFd = 9, + + + + cudaExternalSemaphoreHandleTypeTimelineSemaphoreWin32 = 10 +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreHandleDesc { + + + + enum cudaExternalSemaphoreHandleType type; + union { + + + + + + + int fd; +# 2630 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + struct { + + + + void *handle; + + + + + const void *name; + } win32; + + + + const void* nvSciSyncObj; + } handle; + + + + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreSignalParams_v1 { + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + } keyedMutex; + } params; +# 2694 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreWaitParams_v1 { + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + + + + unsigned int timeoutMs; + } keyedMutex; + } params; +# 2743 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreSignalParams{ + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + } keyedMutex; + unsigned int reserved[12]; + } params; +# 2789 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; + unsigned int reserved[16]; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreWaitParams { + struct { + + + + struct { + + + + unsigned long long value; + } fence; + union { + + + + + void *fence; + unsigned long long reserved; + } nvSciSync; + + + + struct { + + + + unsigned long long key; + + + + unsigned int timeoutMs; + } keyedMutex; + unsigned int reserved[10]; + } params; +# 2840 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" + unsigned int flags; + unsigned int reserved[16]; +}; +# 2853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) enum cudaError cudaError_t; + + + + +typedef __attribute__((device_builtin)) struct CUstream_st *cudaStream_t; + + + + +typedef __attribute__((device_builtin)) struct CUevent_st *cudaEvent_t; + + + + +typedef __attribute__((device_builtin)) struct cudaGraphicsResource *cudaGraphicsResource_t; + + + + +typedef __attribute__((device_builtin)) enum cudaOutputMode cudaOutputMode_t; + + + + +typedef __attribute__((device_builtin)) struct CUexternalMemory_st *cudaExternalMemory_t; + + + + +typedef __attribute__((device_builtin)) struct CUexternalSemaphore_st *cudaExternalSemaphore_t; + + + + +typedef __attribute__((device_builtin)) struct CUgraph_st *cudaGraph_t; + + + + +typedef __attribute__((device_builtin)) struct CUgraphNode_st *cudaGraphNode_t; + + + + +typedef __attribute__((device_builtin)) struct CUuserObject_st *cudaUserObject_t; + + + + +typedef __attribute__((device_builtin)) struct CUfunc_st *cudaFunction_t; + + + + +typedef __attribute__((device_builtin)) struct CUmemPoolHandle_st *cudaMemPool_t; + + + + +enum __attribute__((device_builtin)) cudaCGScope { + cudaCGScopeInvalid = 0, + cudaCGScopeGrid = 1, + cudaCGScopeMultiGrid = 2 +}; + + + + +struct __attribute__((device_builtin)) cudaLaunchParams +{ + void *func; + dim3 gridDim; + dim3 blockDim; + void **args; + size_t sharedMem; + cudaStream_t stream; +}; + + + + +struct __attribute__((device_builtin)) cudaKernelNodeParams { + void* func; + dim3 gridDim; + dim3 blockDim; + unsigned int sharedMemBytes; + void **kernelParams; + void **extra; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreSignalNodeParams { + cudaExternalSemaphore_t* extSemArray; + const struct cudaExternalSemaphoreSignalParams* paramsArray; + unsigned int numExtSems; +}; + + + + +struct __attribute__((device_builtin)) cudaExternalSemaphoreWaitNodeParams { + cudaExternalSemaphore_t* extSemArray; + const struct cudaExternalSemaphoreWaitParams* paramsArray; + unsigned int numExtSems; +}; + + + + +enum __attribute__((device_builtin)) cudaGraphNodeType { + cudaGraphNodeTypeKernel = 0x00, + cudaGraphNodeTypeMemcpy = 0x01, + cudaGraphNodeTypeMemset = 0x02, + cudaGraphNodeTypeHost = 0x03, + cudaGraphNodeTypeGraph = 0x04, + cudaGraphNodeTypeEmpty = 0x05, + cudaGraphNodeTypeWaitEvent = 0x06, + cudaGraphNodeTypeEventRecord = 0x07, + cudaGraphNodeTypeExtSemaphoreSignal = 0x08, + cudaGraphNodeTypeExtSemaphoreWait = 0x09, + cudaGraphNodeTypeMemAlloc = 0x0a, + cudaGraphNodeTypeMemFree = 0x0b, + cudaGraphNodeTypeCount +}; + + + + +typedef struct CUgraphExec_st* cudaGraphExec_t; + + + + +enum __attribute__((device_builtin)) cudaGraphExecUpdateResult { + cudaGraphExecUpdateSuccess = 0x0, + cudaGraphExecUpdateError = 0x1, + cudaGraphExecUpdateErrorTopologyChanged = 0x2, + cudaGraphExecUpdateErrorNodeTypeChanged = 0x3, + cudaGraphExecUpdateErrorFunctionChanged = 0x4, + cudaGraphExecUpdateErrorParametersChanged = 0x5, + cudaGraphExecUpdateErrorNotSupported = 0x6, + cudaGraphExecUpdateErrorUnsupportedFunctionChange = 0x7, + cudaGraphExecUpdateErrorAttributesChanged = 0x8 +}; + + + + + +enum __attribute__((device_builtin)) cudaGetDriverEntryPointFlags { + cudaEnableDefault = 0x0, + cudaEnableLegacyStream = 0x1, + cudaEnablePerThreadDefaultStream = 0x2 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphDebugDotFlags { + cudaGraphDebugDotFlagsVerbose = 1<<0, + cudaGraphDebugDotFlagsKernelNodeParams = 1<<2, + cudaGraphDebugDotFlagsMemcpyNodeParams = 1<<3, + cudaGraphDebugDotFlagsMemsetNodeParams = 1<<4, + cudaGraphDebugDotFlagsHostNodeParams = 1<<5, + cudaGraphDebugDotFlagsEventNodeParams = 1<<6, + cudaGraphDebugDotFlagsExtSemasSignalNodeParams = 1<<7, + cudaGraphDebugDotFlagsExtSemasWaitNodeParams = 1<<8, + cudaGraphDebugDotFlagsKernelNodeAttributes = 1<<9, + cudaGraphDebugDotFlagsHandles = 1<<10 +}; + + + + +enum __attribute__((device_builtin)) cudaGraphInstantiateFlags { + cudaGraphInstantiateFlagAutoFreeOnLaunch = 1 + + , cudaGraphInstantiateFlagUseNodePriority = 8 + + +}; +# 3126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) enum cudaStreamAttrID { + cudaStreamAttributeAccessPolicyWindow = 1, + cudaStreamAttributeSynchronizationPolicy = 3 +} cudaStreamAttrID; +# 3140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) union cudaStreamAttrValue { + struct cudaAccessPolicyWindow accessPolicyWindow; + enum cudaSynchronizationPolicy syncPolicy; +} cudaStreamAttrValue; +# 3152 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) enum cudaKernelNodeAttrID { + cudaKernelNodeAttributeAccessPolicyWindow = 1 + , cudaKernelNodeAttributeCooperative = 2 + + , cudaKernelNodeAttributePriority = 8 + +} cudaKernelNodeAttrID; +# 3170 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef __attribute__((device_builtin)) union cudaKernelNodeAttrValue { + struct cudaAccessPolicyWindow accessPolicyWindow; + int cooperative; + + int priority; + +} cudaKernelNodeAttrValue; +# 60 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" +enum __attribute__((device_builtin)) cudaSurfaceBoundaryMode +{ + cudaBoundaryModeZero = 0, + cudaBoundaryModeClamp = 1, + cudaBoundaryModeTrap = 2 +}; + + + + +enum __attribute__((device_builtin)) cudaSurfaceFormatMode +{ + cudaFormatModeForced = 0, + cudaFormatModeAuto = 1 +}; + + + + +struct __attribute__((device_builtin)) surfaceReference +{ + + + + struct cudaChannelFormatDesc channelDesc; +}; + + + + +typedef __attribute__((device_builtin)) unsigned long long cudaSurfaceObject_t; +# 63 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +enum __attribute__((device_builtin)) cudaTextureAddressMode +{ + cudaAddressModeWrap = 0, + cudaAddressModeClamp = 1, + cudaAddressModeMirror = 2, + cudaAddressModeBorder = 3 +}; + + + + +enum __attribute__((device_builtin)) cudaTextureFilterMode +{ + cudaFilterModePoint = 0, + cudaFilterModeLinear = 1 +}; + + + + +enum __attribute__((device_builtin)) cudaTextureReadMode +{ + cudaReadModeElementType = 0, + cudaReadModeNormalizedFloat = 1 +}; + + + + +struct __attribute__((device_builtin)) textureReference +{ + + + + int normalized; + + + + enum cudaTextureFilterMode filterMode; + + + + enum cudaTextureAddressMode addressMode[3]; + + + + struct cudaChannelFormatDesc channelDesc; + + + + int sRGB; + + + + unsigned int maxAnisotropy; + + + + enum cudaTextureFilterMode mipmapFilterMode; + + + + float mipmapLevelBias; + + + + float minMipmapLevelClamp; + + + + float maxMipmapLevelClamp; + + + + int disableTrilinearOptimization; + int __cudaReserved[14]; +}; + + + + +struct __attribute__((device_builtin)) cudaTextureDesc +{ + + + + enum cudaTextureAddressMode addressMode[3]; + + + + enum cudaTextureFilterMode filterMode; + + + + enum cudaTextureReadMode readMode; + + + + int sRGB; + + + + float borderColor[4]; + + + + int normalizedCoords; + + + + unsigned int maxAnisotropy; + + + + enum cudaTextureFilterMode mipmapFilterMode; + + + + float mipmapLevelBias; + + + + float minMipmapLevelClamp; + + + + float maxMipmapLevelClamp; + + + + int disableTrilinearOptimization; + + + + int seamlessCubemap; +}; + + + + +typedef __attribute__((device_builtin)) unsigned long long cudaTextureObject_t; +# 64 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 2 +# 92 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/library_types.h" 1 +# 55 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/library_types.h" +typedef enum cudaDataType_t +{ + CUDA_R_16F = 2, + CUDA_C_16F = 6, + CUDA_R_16BF = 14, + CUDA_C_16BF = 15, + CUDA_R_32F = 0, + CUDA_C_32F = 4, + CUDA_R_64F = 1, + CUDA_C_64F = 5, + CUDA_R_4I = 16, + CUDA_C_4I = 17, + CUDA_R_4U = 18, + CUDA_C_4U = 19, + CUDA_R_8I = 3, + CUDA_C_8I = 7, + CUDA_R_8U = 8, + CUDA_C_8U = 9, + CUDA_R_16I = 20, + CUDA_C_16I = 21, + CUDA_R_16U = 22, + CUDA_C_16U = 23, + CUDA_R_32I = 10, + CUDA_C_32I = 11, + CUDA_R_32U = 12, + CUDA_C_32U = 13, + CUDA_R_64I = 24, + CUDA_C_64I = 25, + CUDA_R_64U = 26, + CUDA_C_64U = 27, + + + + +} cudaDataType; + + +typedef enum libraryPropertyType_t +{ + MAJOR_VERSION, + MINOR_VERSION, + PATCH_LEVEL +} libraryPropertyType; +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" 1 +# 61 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 1 +# 147 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 150 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" 1 +# 129 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" 2 + + + + + + +extern "C" +{ +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetAttribute(int *value, enum cudaDeviceAttr attr, int device); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetLimit(size_t *pValue, enum cudaLimit limit); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetCacheConfig(enum cudaFuncCache *pCacheConfig); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetSharedMemConfig(enum cudaSharedMemConfig *pConfig); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceSynchronize(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t __cudaDeviceSynchronizeDeprecationAvoidance(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaGetLastError(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaPeekAtLastError(void); +extern __attribute__((device)) __attribute__((cudart_builtin)) const char* cudaGetErrorString(cudaError_t error); +extern __attribute__((device)) __attribute__((cudart_builtin)) const char* cudaGetErrorName(cudaError_t error); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaGetDeviceCount(int *count); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaGetDevice(int *device); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCreateWithFlags(cudaStream_t *pStream, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamDestroy(cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaStreamWaitEvent_ptsz(cudaStream_t stream, cudaEvent_t event, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventCreateWithFlags(cudaEvent_t *event, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecord_ptsz(cudaEvent_t event, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecordWithFlags_ptsz(cudaEvent_t event, cudaStream_t stream, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaEventDestroy(cudaEvent_t event); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaFuncGetAttributes(struct cudaFuncAttributes *attr, const void *func); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaFree(void *devPtr); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMalloc(void **devPtr, size_t size); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpyAsync(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpyAsync_ptsz(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy2DAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy2DAsync_ptsz(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy3DAsync(const struct cudaMemcpy3DParms *p, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy3DAsync_ptsz(const struct cudaMemcpy3DParms *p, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemsetAsync(void *devPtr, int value, size_t count, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemsetAsync_ptsz(void *devPtr, int value, size_t count, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset2DAsync(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset2DAsync_ptsz(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset3DAsync(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMemset3DAsync_ptsz(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaRuntimeGetVersion(int *runtimeVersion); +# 196 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +extern __attribute__((device)) __attribute__((cudart_builtin)) void * cudaGetParameterBuffer(size_t alignment, size_t size); +# 224 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +extern __attribute__((device)) __attribute__((cudart_builtin)) void * cudaGetParameterBufferV2(void *func, dim3 gridDimension, dim3 blockDimension, unsigned int sharedMemSize); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDevice_ptsz(void *func, void *parameterBuffer, dim3 gridDimension, dim3 blockDimension, unsigned int sharedMemSize, cudaStream_t stream); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDeviceV2_ptsz(void *parameterBuffer, cudaStream_t stream); +# 244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" + extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDevice(void *func, void *parameterBuffer, dim3 gridDimension, dim3 blockDimension, unsigned int sharedMemSize, cudaStream_t stream); + extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaLaunchDeviceV2(void *parameterBuffer, cudaStream_t stream); + + +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, const void *func, int blockSize, size_t dynamicSmemSize); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, const void *func, int blockSize, size_t dynamicSmemSize, unsigned int flags); + +extern __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long cudaCGGetIntrinsicHandle(enum cudaCGScope scope); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGSynchronize(unsigned long long handle, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGSynchronizeGrid(unsigned long long handle, unsigned int flags); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGGetSize(unsigned int *numThreads, unsigned int *numGrids, unsigned long long handle); +extern __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaCGGetRank(unsigned int *threadRank, unsigned int *gridRank, unsigned long long handle); +} + +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaMalloc(T **devPtr, size_t size); +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaFuncGetAttributes(struct cudaFuncAttributes *attr, T *entry); +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, T func, int blockSize, size_t dynamicSmemSize); +template static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, T func, int blockSize, size_t dynamicSmemSize, unsigned int flags); +# 152 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 2 +# 269 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern "C" { +# 309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceReset(void); +# 331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceSynchronize(void); +# 418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetLimit(enum cudaLimit limit, size_t value); +# 453 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetLimit(size_t *pValue, enum cudaLimit limit); +# 476 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetTexture1DLinearMaxWidth(size_t *maxWidthInElements, const struct cudaChannelFormatDesc *fmtDesc, int device); +# 510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetCacheConfig(enum cudaFuncCache *pCacheConfig); +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetStreamPriorityRange(int *leastPriority, int *greatestPriority); +# 591 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetCacheConfig(enum cudaFuncCache cacheConfig); +# 622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetSharedMemConfig(enum cudaSharedMemConfig *pConfig); +# 666 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetSharedMemConfig(enum cudaSharedMemConfig config); +# 693 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetByPCIBusId(int *device, const char *pciBusId); +# 723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetPCIBusId(char *pciBusId, int len, int device); +# 771 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcGetEventHandle(cudaIpcEventHandle_t *handle, cudaEvent_t event); +# 812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcOpenEventHandle(cudaEvent_t *event, cudaIpcEventHandle_t handle); +# 855 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcGetMemHandle(cudaIpcMemHandle_t *handle, void *devPtr); +# 919 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcOpenMemHandle(void **devPtr, cudaIpcMemHandle_t handle, unsigned int flags); +# 955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaIpcCloseMemHandle(void *devPtr); +# 987 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceFlushGPUDirectRDMAWrites(enum cudaFlushGPUDirectRDMAWritesTarget target, enum cudaFlushGPUDirectRDMAWritesScope scope); +# 1031 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadExit(void); +# 1057 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadSynchronize(void); +# 1106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadSetLimit(enum cudaLimit limit, size_t value); +# 1139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadGetLimit(size_t *pValue, enum cudaLimit limit); +# 1175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadGetCacheConfig(enum cudaFuncCache *pCacheConfig); +# 1222 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaThreadSetCacheConfig(enum cudaFuncCache cacheConfig); +# 1285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetLastError(void); +# 1333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaPeekAtLastError(void); +# 1349 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) const char* cudaGetErrorName(cudaError_t error); +# 1365 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) const char* cudaGetErrorString(cudaError_t error); +# 1393 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetDeviceCount(int *count); +# 1666 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetDeviceProperties(struct cudaDeviceProp *prop, int device); +# 1868 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetAttribute(int *value, enum cudaDeviceAttr attr, int device); +# 1886 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetDefaultMemPool(cudaMemPool_t *memPool, int device); +# 1910 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetMemPool(int device, cudaMemPool_t memPool); +# 1930 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetMemPool(cudaMemPool_t *memPool, int device); +# 1978 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetNvSciSyncAttributes(void *nvSciSyncAttrList, int device, int flags); +# 2018 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaDeviceGetP2PAttribute(int *value, enum cudaDeviceP2PAttr attr, int srcDevice, int dstDevice); +# 2039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaChooseDevice(int *device, const struct cudaDeviceProp *prop); +# 2083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSetDevice(int device); +# 2104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaGetDevice(int *device); +# 2135 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSetValidDevices(int *device_arr, int len); +# 2200 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSetDeviceFlags( unsigned int flags ); +# 2244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetDeviceFlags( unsigned int *flags ); +# 2284 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamCreate(cudaStream_t *pStream); +# 2316 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCreateWithFlags(cudaStream_t *pStream, unsigned int flags); +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCreateWithPriority(cudaStream_t *pStream, unsigned int flags, int priority); +# 2389 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamGetPriority(cudaStream_t hStream, int *priority); +# 2414 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamGetFlags(cudaStream_t hStream, unsigned int *flags); +# 2429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaCtxResetPersistingL2Cache(void); +# 2449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamCopyAttributes(cudaStream_t dst, cudaStream_t src); +# 2470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamGetAttribute( + cudaStream_t hStream, cudaStreamAttrID attr, + cudaStreamAttrValue *value_out); +# 2494 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamSetAttribute( + cudaStream_t hStream, cudaStreamAttrID attr, + const cudaStreamAttrValue *value); +# 2528 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamDestroy(cudaStream_t stream); +# 2559 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags = 0); + + + + + + + +typedef void ( *cudaStreamCallback_t)(cudaStream_t stream, cudaError_t status, void *userData); +# 2634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamAddCallback(cudaStream_t stream, + cudaStreamCallback_t callback, void *userData, unsigned int flags); +# 2658 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamSynchronize(cudaStream_t stream); +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamQuery(cudaStream_t stream); +# 2767 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaStreamAttachMemAsync(cudaStream_t stream, void *devPtr, size_t length = 0, unsigned int flags = 0x04); +# 2806 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamBeginCapture(cudaStream_t stream, enum cudaStreamCaptureMode mode); +# 2857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaThreadExchangeStreamCaptureMode(enum cudaStreamCaptureMode *mode); +# 2885 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamEndCapture(cudaStream_t stream, cudaGraph_t *pGraph); +# 2923 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamIsCapturing(cudaStream_t stream, enum cudaStreamCaptureStatus *pCaptureStatus); +# 2955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamGetCaptureInfo(cudaStream_t stream, enum cudaStreamCaptureStatus *pCaptureStatus, unsigned long long *pId); +# 3010 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamGetCaptureInfo_v2(cudaStream_t stream, enum cudaStreamCaptureStatus *captureStatus_out, unsigned long long *id_out = 0, cudaGraph_t *graph_out = 0, const cudaGraphNode_t **dependencies_out = 0, size_t *numDependencies_out = 0); +# 3043 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaStreamUpdateCaptureDependencies(cudaStream_t stream, cudaGraphNode_t *dependencies, size_t numDependencies, unsigned int flags = 0); +# 3080 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventCreate(cudaEvent_t *event); +# 3117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventCreateWithFlags(cudaEvent_t *event, unsigned int flags); +# 3157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream = 0); +# 3204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream = 0, unsigned int flags = 0); +# 3236 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventQuery(cudaEvent_t event); +# 3266 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventSynchronize(cudaEvent_t event); +# 3295 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaEventDestroy(cudaEvent_t event); +# 3338 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaEventElapsedTime(float *ms, cudaEvent_t start, cudaEvent_t end); +# 3518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaImportExternalMemory(cudaExternalMemory_t *extMem_out, const struct cudaExternalMemoryHandleDesc *memHandleDesc); +# 3573 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaExternalMemoryGetMappedBuffer(void **devPtr, cudaExternalMemory_t extMem, const struct cudaExternalMemoryBufferDesc *bufferDesc); +# 3635 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaExternalMemoryGetMappedMipmappedArray(cudaMipmappedArray_t *mipmap, cudaExternalMemory_t extMem, const struct cudaExternalMemoryMipmappedArrayDesc *mipmapDesc); +# 3659 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroyExternalMemory(cudaExternalMemory_t extMem); +# 3812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaImportExternalSemaphore(cudaExternalSemaphore_t *extSem_out, const struct cudaExternalSemaphoreHandleDesc *semHandleDesc); +# 3879 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaSignalExternalSemaphoresAsync_v2(const cudaExternalSemaphore_t *extSemArray, const struct cudaExternalSemaphoreSignalParams *paramsArray, unsigned int numExtSems, cudaStream_t stream = 0); +# 3955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaWaitExternalSemaphoresAsync_v2(const cudaExternalSemaphore_t *extSemArray, const struct cudaExternalSemaphoreWaitParams *paramsArray, unsigned int numExtSems, cudaStream_t stream = 0); +# 3978 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroyExternalSemaphore(cudaExternalSemaphore_t extSem); +# 4045 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaLaunchKernel(const void *func, dim3 gridDim, dim3 blockDim, void **args, size_t sharedMem, cudaStream_t stream); +# 4106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaLaunchCooperativeKernel(const void *func, dim3 gridDim, dim3 blockDim, void **args, size_t sharedMem, cudaStream_t stream); +# 4207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaLaunchCooperativeKernelMultiDevice(struct cudaLaunchParams *launchParamsList, unsigned int numDevices, unsigned int flags = 0); +# 4254 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFuncSetCacheConfig(const void *func, enum cudaFuncCache cacheConfig); +# 4309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFuncSetSharedMemConfig(const void *func, enum cudaSharedMemConfig config); +# 4342 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaFuncGetAttributes(struct cudaFuncAttributes *attr, const void *func); +# 4379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaFuncSetAttribute(const void *func, enum cudaFuncAttribute attr, int value); +# 4405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaSetDoubleForDevice(double *d); +# 4429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaSetDoubleForHost(double *d); +# 4497 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaLaunchHostFunc(cudaStream_t stream, cudaHostFn_t fn, void *userData); +# 4554 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, const void *func, int blockSize, size_t dynamicSMemSize); +# 4583 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyAvailableDynamicSMemPerBlock(size_t *dynamicSmemSize, const void *func, int numBlocks, int blockSize); +# 4628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, const void *func, int blockSize, size_t dynamicSMemSize, unsigned int flags); +# 4749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMallocManaged(void **devPtr, size_t size, unsigned int flags = 0x01); +# 4782 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMalloc(void **devPtr, size_t size); +# 4815 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocHost(void **ptr, size_t size); +# 4858 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocPitch(void **devPtr, size_t *pitch, size_t width, size_t height); +# 4912 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocArray(cudaArray_t *array, const struct cudaChannelFormatDesc *desc, size_t width, size_t height = 0, unsigned int flags = 0); +# 4950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaFree(void *devPtr); +# 4973 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeHost(void *ptr); +# 4996 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeArray(cudaArray_t array); +# 5019 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray); +# 5085 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostAlloc(void **pHost, size_t size, unsigned int flags); +# 5178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostRegister(void *ptr, size_t size, unsigned int flags); +# 5201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostUnregister(void *ptr); +# 5246 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostGetDevicePointer(void **pDevice, void *pHost, unsigned int flags); +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaHostGetFlags(unsigned int *pFlags, void *pHost); +# 5307 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMalloc3D(struct cudaPitchedPtr* pitchedDevPtr, struct cudaExtent extent); +# 5454 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMalloc3DArray(cudaArray_t *array, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int flags = 0); +# 5601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocMipmappedArray(cudaMipmappedArray_t *mipmappedArray, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int numLevels, unsigned int flags = 0); +# 5634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetMipmappedArrayLevel(cudaArray_t *levelArray, cudaMipmappedArray_const_t mipmappedArray, unsigned int level); +# 5739 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy3D(const struct cudaMemcpy3DParms *p); +# 5770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy3DPeer(const struct cudaMemcpy3DPeerParms *p); +# 5888 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy3DAsync(const struct cudaMemcpy3DParms *p, cudaStream_t stream = 0); +# 5914 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy3DPeerAsync(const struct cudaMemcpy3DPeerParms *p, cudaStream_t stream = 0); +# 5948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemGetInfo(size_t *free, size_t *total); +# 5974 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaArrayGetInfo(struct cudaChannelFormatDesc *desc, struct cudaExtent *extent, unsigned int *flags, cudaArray_t array); +# 6003 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaArrayGetPlane(cudaArray_t *pPlaneArray, cudaArray_t hArray, unsigned int planeIdx); +# 6027 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaArrayGetMemoryRequirements(struct cudaArrayMemoryRequirements *memoryRequirements, cudaArray_t array, int device); +# 6051 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMipmappedArrayGetMemoryRequirements(struct cudaArrayMemoryRequirements *memoryRequirements, cudaMipmappedArray_t mipmap, int device); +# 6080 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaArrayGetSparseProperties(struct cudaArraySparseProperties *sparseProperties, cudaArray_t array); +# 6110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaMipmappedArrayGetSparseProperties(struct cudaArraySparseProperties *sparseProperties, cudaMipmappedArray_t mipmap); +# 6155 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind); +# 6190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyPeer(void *dst, int dstDevice, const void *src, int srcDevice, size_t count); +# 6239 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2D(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); +# 6289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); +# 6339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DFromArray(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind); +# 6386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, enum cudaMemcpyKind kind = cudaMemcpyDeviceToDevice); +# 6429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyToSymbol(const void *symbol, const void *src, size_t count, size_t offset = 0, enum cudaMemcpyKind kind = cudaMemcpyHostToDevice); +# 6472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyFromSymbol(void *dst, const void *symbol, size_t count, size_t offset = 0, enum cudaMemcpyKind kind = cudaMemcpyDeviceToHost); +# 6529 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpyAsync(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6564 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t count, cudaStream_t stream = 0); +# 6627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemcpy2DAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6685 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6742 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpy2DFromArrayAsync(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6793 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyToSymbolAsync(const void *symbol, const void *src, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6844 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemcpyFromSymbolAsync(void *dst, const void *symbol, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemset(void *devPtr, int value, size_t count); +# 6907 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemset2D(void *devPtr, size_t pitch, int value, size_t width, size_t height); +# 6953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemset3D(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent); +# 6989 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemsetAsync(void *devPtr, int value, size_t count, cudaStream_t stream = 0); +# 7030 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemset2DAsync(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream = 0); +# 7083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaMemset3DAsync(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream = 0); +# 7111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetSymbolAddress(void **devPtr, const void *symbol); +# 7138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetSymbolSize(size_t *size, const void *symbol); +# 7208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPrefetchAsync(const void *devPtr, size_t count, int dstDevice, cudaStream_t stream = 0); +# 7324 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemAdvise(const void *devPtr, size_t count, enum cudaMemoryAdvise advice, int device); +# 7383 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemRangeGetAttribute(void *data, size_t dataSize, enum cudaMemRangeAttribute attribute, const void *devPtr, size_t count); +# 7422 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemRangeGetAttributes(void **data, size_t *dataSizes, enum cudaMemRangeAttribute *attributes, size_t numAttributes, const void *devPtr, size_t count); +# 7482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind); +# 7524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyFromArray(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind); +# 7567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, enum cudaMemcpyKind kind = cudaMemcpyDeviceToDevice); +# 7618 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 7668 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaMemcpyFromArrayAsync(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream = 0); +# 7737 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocAsync(void **devPtr, size_t size, cudaStream_t hStream); +# 7763 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaFreeAsync(void *devPtr, cudaStream_t hStream); +# 7788 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolTrimTo(cudaMemPool_t memPool, size_t minBytesToKeep); +# 7832 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolSetAttribute(cudaMemPool_t memPool, enum cudaMemPoolAttr attr, void *value ); +# 7880 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolGetAttribute(cudaMemPool_t memPool, enum cudaMemPoolAttr attr, void *value ); +# 7895 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolSetAccess(cudaMemPool_t memPool, const struct cudaMemAccessDesc *descList, size_t count); +# 7908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolGetAccess(enum cudaMemAccessFlags *flags, cudaMemPool_t memPool, struct cudaMemLocation *location); +# 7928 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolCreate(cudaMemPool_t *memPool, const struct cudaMemPoolProps *poolProps); +# 7950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolDestroy(cudaMemPool_t memPool); +# 7986 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMallocFromPoolAsync(void **ptr, size_t size, cudaMemPool_t memPool, cudaStream_t stream); +# 8011 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolExportToShareableHandle( + void *shareableHandle, + cudaMemPool_t memPool, + enum cudaMemAllocationHandleType handleType, + unsigned int flags); +# 8038 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolImportFromShareableHandle( + cudaMemPool_t *memPool, + void *shareableHandle, + enum cudaMemAllocationHandleType handleType, + unsigned int flags); +# 8061 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolExportPointer(struct cudaMemPoolPtrExportData *exportData, void *ptr); +# 8090 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaMemPoolImportPointer(void **ptr, cudaMemPool_t memPool, struct cudaMemPoolPtrExportData *exportData); +# 8242 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaPointerGetAttributes(struct cudaPointerAttributes *attributes, const void *ptr); +# 8283 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceCanAccessPeer(int *canAccessPeer, int device, int peerDevice); +# 8325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceEnablePeerAccess(int peerDevice, unsigned int flags); +# 8347 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceDisablePeerAccess(int peerDevice); +# 8411 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsUnregisterResource(cudaGraphicsResource_t resource); +# 8446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsResourceSetMapFlags(cudaGraphicsResource_t resource, unsigned int flags); +# 8485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsMapResources(int count, cudaGraphicsResource_t *resources, cudaStream_t stream = 0); +# 8520 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsUnmapResources(int count, cudaGraphicsResource_t *resources, cudaStream_t stream = 0); +# 8552 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsResourceGetMappedPointer(void **devPtr, size_t *size, cudaGraphicsResource_t resource); +# 8590 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsSubResourceGetMappedArray(cudaArray_t *array, cudaGraphicsResource_t resource, unsigned int arrayIndex, unsigned int mipLevel); +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphicsResourceGetMappedMipmappedArray(cudaMipmappedArray_t *mipmappedArray, cudaGraphicsResource_t resource); +# 8690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTexture(size_t *offset, const struct textureReference *texref, const void *devPtr, const struct cudaChannelFormatDesc *desc, size_t size = +# 8690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" 3 4 + (0x7fffffff * 2U + 1U) +# 8690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + ); +# 8749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTexture2D(size_t *offset, const struct textureReference *texref, const void *devPtr, const struct cudaChannelFormatDesc *desc, size_t width, size_t height, size_t pitch); +# 8787 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTextureToArray(const struct textureReference *texref, cudaArray_const_t array, const struct cudaChannelFormatDesc *desc); +# 8827 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindTextureToMipmappedArray(const struct textureReference *texref, cudaMipmappedArray_const_t mipmappedArray, const struct cudaChannelFormatDesc *desc); +# 8853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaUnbindTexture(const struct textureReference *texref); +# 8882 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaGetTextureAlignmentOffset(size_t *offset, const struct textureReference *texref); +# 8912 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaGetTextureReference(const struct textureReference **texref, const void *symbol); +# 8957 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaBindSurfaceToArray(const struct surfaceReference *surfref, cudaArray_const_t array, const struct cudaChannelFormatDesc *desc); +# 8982 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((deprecated)) __attribute__((host)) cudaError_t cudaGetSurfaceReference(const struct surfaceReference **surfref, const void *symbol); +# 9017 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetChannelDesc(struct cudaChannelFormatDesc *desc, cudaArray_const_t array); +# 9047 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) struct cudaChannelFormatDesc cudaCreateChannelDesc(int x, int y, int z, int w, enum cudaChannelFormatKind f); +# 9271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaCreateTextureObject(cudaTextureObject_t *pTexObject, const struct cudaResourceDesc *pResDesc, const struct cudaTextureDesc *pTexDesc, const struct cudaResourceViewDesc *pResViewDesc); +# 9291 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroyTextureObject(cudaTextureObject_t texObject); +# 9311 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetTextureObjectResourceDesc(struct cudaResourceDesc *pResDesc, cudaTextureObject_t texObject); +# 9331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetTextureObjectTextureDesc(struct cudaTextureDesc *pTexDesc, cudaTextureObject_t texObject); +# 9352 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetTextureObjectResourceViewDesc(struct cudaResourceViewDesc *pResViewDesc, cudaTextureObject_t texObject); +# 9397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaCreateSurfaceObject(cudaSurfaceObject_t *pSurfObject, const struct cudaResourceDesc *pResDesc); +# 9417 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject); +# 9436 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetSurfaceObjectResourceDesc(struct cudaResourceDesc *pResDesc, cudaSurfaceObject_t surfObject); +# 9470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDriverGetVersion(int *driverVersion); +# 9495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) __attribute__((cudart_builtin)) cudaError_t cudaRuntimeGetVersion(int *runtimeVersion); +# 9542 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphCreate(cudaGraph_t *pGraph, unsigned int flags); +# 9639 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddKernelNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaKernelNodeParams *pNodeParams); +# 9672 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeGetParams(cudaGraphNode_t node, struct cudaKernelNodeParams *pNodeParams); +# 9697 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeSetParams(cudaGraphNode_t node, const struct cudaKernelNodeParams *pNodeParams); +# 9717 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeCopyAttributes( + cudaGraphNode_t hSrc, + cudaGraphNode_t hDst); +# 9740 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeGetAttribute( + cudaGraphNode_t hNode, + cudaKernelNodeAttrID attr, + cudaKernelNodeAttrValue *value_out); +# 9764 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphKernelNodeSetAttribute( + cudaGraphNode_t hNode, + cudaKernelNodeAttrID attr, + const cudaKernelNodeAttrValue *value); +# 9814 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaMemcpy3DParms *pCopyParams); +# 9873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeToSymbol( + cudaGraphNode_t *pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t *pDependencies, + size_t numDependencies, + const void* symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 9942 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeFromSymbol( + cudaGraphNode_t* pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t* pDependencies, + size_t numDependencies, + void* dst, + const void* symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 10010 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddMemcpyNode1D( + cudaGraphNode_t *pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t *pDependencies, + size_t numDependencies, + void* dst, + const void* src, + size_t count, + enum cudaMemcpyKind kind); +# 10042 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeGetParams(cudaGraphNode_t node, struct cudaMemcpy3DParms *pNodeParams); +# 10068 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParams(cudaGraphNode_t node, const struct cudaMemcpy3DParms *pNodeParams); +# 10107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsToSymbol( + cudaGraphNode_t node, + const void* symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 10153 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsFromSymbol( + cudaGraphNode_t node, + void* dst, + const void* symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 10199 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParams1D( + cudaGraphNode_t node, + void* dst, + const void* src, + size_t count, + enum cudaMemcpyKind kind); +# 10246 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemsetNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaMemsetParams *pMemsetParams); +# 10269 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemsetNodeGetParams(cudaGraphNode_t node, struct cudaMemsetParams *pNodeParams); +# 10292 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemsetNodeSetParams(cudaGraphNode_t node, const struct cudaMemsetParams *pNodeParams); +# 10333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddHostNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaHostNodeParams *pNodeParams); +# 10356 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphHostNodeGetParams(cudaGraphNode_t node, struct cudaHostNodeParams *pNodeParams); +# 10379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphHostNodeSetParams(cudaGraphNode_t node, const struct cudaHostNodeParams *pNodeParams); +# 10419 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddChildGraphNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, cudaGraph_t childGraph); +# 10446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphChildGraphNodeGetGraph(cudaGraphNode_t node, cudaGraph_t *pGraph); +# 10483 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddEmptyNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies); +# 10526 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddEventRecordNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, cudaEvent_t event); +# 10553 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventRecordNodeGetEvent(cudaGraphNode_t node, cudaEvent_t *event_out); +# 10580 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventRecordNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event); +# 10626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphAddEventWaitNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, cudaEvent_t event); +# 10653 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventWaitNodeGetEvent(cudaGraphNode_t node, cudaEvent_t *event_out); +# 10680 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphEventWaitNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event); +# 10729 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddExternalSemaphoresSignalNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaExternalSemaphoreSignalNodeParams *nodeParams); +# 10762 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresSignalNodeGetParams(cudaGraphNode_t hNode, struct cudaExternalSemaphoreSignalNodeParams *params_out); +# 10789 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresSignalNodeSetParams(cudaGraphNode_t hNode, const struct cudaExternalSemaphoreSignalNodeParams *nodeParams); +# 10838 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddExternalSemaphoresWaitNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, const struct cudaExternalSemaphoreWaitNodeParams *nodeParams); +# 10871 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresWaitNodeGetParams(cudaGraphNode_t hNode, struct cudaExternalSemaphoreWaitNodeParams *params_out); +# 10898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExternalSemaphoresWaitNodeSetParams(cudaGraphNode_t hNode, const struct cudaExternalSemaphoreWaitNodeParams *nodeParams); +# 10975 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemAllocNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, struct cudaMemAllocNodeParams *nodeParams); +# 11002 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemAllocNodeGetParams(cudaGraphNode_t node, struct cudaMemAllocNodeParams *params_out); +# 11062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddMemFreeNode(cudaGraphNode_t *pGraphNode, cudaGraph_t graph, const cudaGraphNode_t *pDependencies, size_t numDependencies, void *dptr); +# 11086 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphMemFreeNodeGetParams(cudaGraphNode_t node, void *dptr_out); +# 11114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGraphMemTrim(int device); +# 11151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceGetGraphMemAttribute(int device, enum cudaGraphMemAttributeType attr, void* value); +# 11185 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaDeviceSetGraphMemAttribute(int device, enum cudaGraphMemAttributeType attr, void* value); +# 11213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphClone(cudaGraph_t *pGraphClone, cudaGraph_t originalGraph); +# 11241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeFindInClone(cudaGraphNode_t *pNode, cudaGraphNode_t originalNode, cudaGraph_t clonedGraph); +# 11272 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetType(cudaGraphNode_t node, enum cudaGraphNodeType *pType); +# 11303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphGetNodes(cudaGraph_t graph, cudaGraphNode_t *nodes, size_t *numNodes); +# 11334 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphGetRootNodes(cudaGraph_t graph, cudaGraphNode_t *pRootNodes, size_t *pNumRootNodes); +# 11368 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphGetEdges(cudaGraph_t graph, cudaGraphNode_t *from, cudaGraphNode_t *to, size_t *numEdges); +# 11399 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetDependencies(cudaGraphNode_t node, cudaGraphNode_t *pDependencies, size_t *pNumDependencies); +# 11431 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetDependentNodes(cudaGraphNode_t node, cudaGraphNode_t *pDependentNodes, size_t *pNumDependentNodes); +# 11462 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphAddDependencies(cudaGraph_t graph, const cudaGraphNode_t *from, const cudaGraphNode_t *to, size_t numDependencies); +# 11493 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphRemoveDependencies(cudaGraph_t graph, const cudaGraphNode_t *from, const cudaGraphNode_t *to, size_t numDependencies); +# 11523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphDestroyNode(cudaGraphNode_t node); +# 11561 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphInstantiate(cudaGraphExec_t *pGraphExec, cudaGraph_t graph, cudaGraphNode_t *pErrorNode, char *pLogBuffer, size_t bufferSize); +# 11611 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphInstantiateWithFlags(cudaGraphExec_t *pGraphExec, cudaGraph_t graph, unsigned long long flags); +# 11655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecKernelNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaKernelNodeParams *pNodeParams); +# 11705 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaMemcpy3DParms *pNodeParams); +# 11760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsToSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + const void* symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 11823 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsFromSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + void* dst, + const void* symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind); +# 11884 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParams1D( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + void* dst, + const void* src, + size_t count, + enum cudaMemcpyKind kind); +# 11938 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecMemsetNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaMemsetParams *pNodeParams); +# 11977 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecHostNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const struct cudaHostNodeParams *pNodeParams); +# 12023 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecChildGraphNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, cudaGraph_t childGraph); +# 12067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecEventRecordNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event); +# 12111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphExecEventWaitNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event); +# 12158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecExternalSemaphoresSignalNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const struct cudaExternalSemaphoreSignalNodeParams *nodeParams); +# 12205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecExternalSemaphoresWaitNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const struct cudaExternalSemaphoreWaitNodeParams *nodeParams); +# 12284 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeSetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int isEnabled); +# 12351 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphNodeGetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int *isEnabled); +# 12510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecUpdate(cudaGraphExec_t hGraphExec, cudaGraph_t hGraph, cudaGraphNode_t *hErrorNode_out, enum cudaGraphExecUpdateResult *updateResult_out); +# 12535 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" + extern __attribute__((host)) cudaError_t cudaGraphUpload(cudaGraphExec_t graphExec, cudaStream_t stream); +# 12566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphLaunch(cudaGraphExec_t graphExec, cudaStream_t stream); +# 12589 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphExecDestroy(cudaGraphExec_t graphExec); +# 12610 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphDestroy(cudaGraph_t graph); +# 12629 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphDebugDotPrint(cudaGraph_t graph, const char *path, unsigned int flags); +# 12665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaUserObjectCreate(cudaUserObject_t *object_out, void *ptr, cudaHostFn_t destroy, unsigned int initialRefcount, unsigned int flags); +# 12689 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaUserObjectRetain(cudaUserObject_t object, unsigned int count = 1); +# 12717 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaUserObjectRelease(cudaUserObject_t object, unsigned int count = 1); +# 12745 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphRetainUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count = 1, unsigned int flags = 0); +# 12770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGraphReleaseUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count = 1); +# 12836 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetDriverEntryPoint(const char *symbol, void **funcPtr, unsigned long long flags); + + + + +extern __attribute__((host)) cudaError_t cudaGetExportTable(const void **ppExportTable, const cudaUUID_t *pExportTableId); +# 13017 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern __attribute__((host)) cudaError_t cudaGetFuncBySymbol(cudaFunction_t* functionPtr, const void* symbolPtr); +# 13175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +} +# 62 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" 2 +# 124 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +template __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(0, 0, 0, 0, cudaChannelFormatKindNone); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf1(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf2(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescHalf4(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(char) * 8; + + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); + + + +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(signed char) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned char) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(short) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned short) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(int) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(unsigned int) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +} +# 396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindFloat); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + int e = (int)sizeof(float) * 8; + + return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindFloat); +} + +static __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDescNV12(void) +{ + int e = (int)sizeof(char) * 8; + + return cudaCreateChannelDesc(e, e, e, 0, cudaChannelFormatKindNV12); +} + +template __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(0, 0, 0, 0, cudaChannelFormatKindNone); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindSignedNormalized8X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindSignedNormalized8X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindSignedNormalized8X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindUnsignedNormalized8X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindUnsignedNormalized8X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedNormalized8X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 0, 0, 0, cudaChannelFormatKindSignedNormalized16X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 0, 0, cudaChannelFormatKindSignedNormalized16X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 16, cudaChannelFormatKindSignedNormalized16X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 0, 0, 0, cudaChannelFormatKindUnsignedNormalized16X1); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 0, 0, cudaChannelFormatKindUnsignedNormalized16X2); +} + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 16, cudaChannelFormatKindUnsignedNormalized16X4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 0, cudaChannelFormatKindNV12); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed1); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed1SRGB); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed2); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed2SRGB); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed3); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed3SRGB); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindUnsignedBlockCompressed4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindSignedBlockCompressed4); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindUnsignedBlockCompressed5); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindSignedBlockCompressed5); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 0, cudaChannelFormatKindUnsignedBlockCompressed6H); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(16, 16, 16, 0, cudaChannelFormatKindSignedBlockCompressed6H); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed7); +} + + +template<> __inline__ __attribute__((host)) cudaChannelFormatDesc cudaCreateChannelDesc(void) +{ + return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed7SRGB); +} +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" 1 +# 53 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 54 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 55 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" 2 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static __inline__ __attribute__((host)) struct cudaPitchedPtr make_cudaPitchedPtr(void *d, size_t p, size_t xsz, size_t ysz) +{ + struct cudaPitchedPtr s; + + s.ptr = d; + s.pitch = p; + s.xsize = xsz; + s.ysize = ysz; + + return s; +} +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static __inline__ __attribute__((host)) struct cudaPos make_cudaPos(size_t x, size_t y, size_t z) +{ + struct cudaPos p; + + p.x = x; + p.y = y; + p.z = z; + + return p; +} +# 132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static __inline__ __attribute__((host)) struct cudaExtent make_cudaExtent(size_t w, size_t h, size_t d) +{ + struct cudaExtent e; + + e.width = w; + e.height = h; + e.depth = d; + + return e; +} +# 98 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.h" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.h" +static __inline__ __attribute__((host)) __attribute__((device)) char1 make_char1(signed char x); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar1 make_uchar1(unsigned char x); + +static __inline__ __attribute__((host)) __attribute__((device)) char2 make_char2(signed char x, signed char y); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar2 make_uchar2(unsigned char x, unsigned char y); + +static __inline__ __attribute__((host)) __attribute__((device)) char3 make_char3(signed char x, signed char y, signed char z); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar3 make_uchar3(unsigned char x, unsigned char y, unsigned char z); + +static __inline__ __attribute__((host)) __attribute__((device)) char4 make_char4(signed char x, signed char y, signed char z, signed char w); + +static __inline__ __attribute__((host)) __attribute__((device)) uchar4 make_uchar4(unsigned char x, unsigned char y, unsigned char z, unsigned char w); + +static __inline__ __attribute__((host)) __attribute__((device)) short1 make_short1(short x); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort1 make_ushort1(unsigned short x); + +static __inline__ __attribute__((host)) __attribute__((device)) short2 make_short2(short x, short y); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort2 make_ushort2(unsigned short x, unsigned short y); + +static __inline__ __attribute__((host)) __attribute__((device)) short3 make_short3(short x,short y, short z); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort3 make_ushort3(unsigned short x, unsigned short y, unsigned short z); + +static __inline__ __attribute__((host)) __attribute__((device)) short4 make_short4(short x, short y, short z, short w); + +static __inline__ __attribute__((host)) __attribute__((device)) ushort4 make_ushort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w); + +static __inline__ __attribute__((host)) __attribute__((device)) int1 make_int1(int x); + +static __inline__ __attribute__((host)) __attribute__((device)) uint1 make_uint1(unsigned int x); + +static __inline__ __attribute__((host)) __attribute__((device)) int2 make_int2(int x, int y); + +static __inline__ __attribute__((host)) __attribute__((device)) uint2 make_uint2(unsigned int x, unsigned int y); + +static __inline__ __attribute__((host)) __attribute__((device)) int3 make_int3(int x, int y, int z); + +static __inline__ __attribute__((host)) __attribute__((device)) uint3 make_uint3(unsigned int x, unsigned int y, unsigned int z); + +static __inline__ __attribute__((host)) __attribute__((device)) int4 make_int4(int x, int y, int z, int w); + +static __inline__ __attribute__((host)) __attribute__((device)) uint4 make_uint4(unsigned int x, unsigned int y, unsigned int z, unsigned int w); + +static __inline__ __attribute__((host)) __attribute__((device)) long1 make_long1(long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong1 make_ulong1(unsigned long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) long2 make_long2(long int x, long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong2 make_ulong2(unsigned long int x, unsigned long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) long3 make_long3(long int x, long int y, long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong3 make_ulong3(unsigned long int x, unsigned long int y, unsigned long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) long4 make_long4(long int x, long int y, long int z, long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) ulong4 make_ulong4(unsigned long int x, unsigned long int y, unsigned long int z, unsigned long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) float1 make_float1(float x); + +static __inline__ __attribute__((host)) __attribute__((device)) float2 make_float2(float x, float y); + +static __inline__ __attribute__((host)) __attribute__((device)) float3 make_float3(float x, float y, float z); + +static __inline__ __attribute__((host)) __attribute__((device)) float4 make_float4(float x, float y, float z, float w); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong1 make_longlong1(long long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong1 make_ulonglong1(unsigned long long int x); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong2 make_longlong2(long long int x, long long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong2 make_ulonglong2(unsigned long long int x, unsigned long long int y); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong3 make_longlong3(long long int x, long long int y, long long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong3 make_ulonglong3(unsigned long long int x, unsigned long long int y, unsigned long long int z); + +static __inline__ __attribute__((host)) __attribute__((device)) longlong4 make_longlong4(long long int x, long long int y, long long int z, long long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong4 make_ulonglong4(unsigned long long int x, unsigned long long int y, unsigned long long int z, unsigned long long int w); + +static __inline__ __attribute__((host)) __attribute__((device)) double1 make_double1(double x); + +static __inline__ __attribute__((host)) __attribute__((device)) double2 make_double2(double x, double y); + +static __inline__ __attribute__((host)) __attribute__((device)) double3 make_double3(double x, double y, double z); + +static __inline__ __attribute__((host)) __attribute__((device)) double4 make_double4(double x, double y, double z, double w); + + + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.hpp" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.hpp" +static __inline__ __attribute__((host)) __attribute__((device)) char1 make_char1(signed char x) +{ + char1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar1 make_uchar1(unsigned char x) +{ + uchar1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) char2 make_char2(signed char x, signed char y) +{ + char2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar2 make_uchar2(unsigned char x, unsigned char y) +{ + uchar2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) char3 make_char3(signed char x, signed char y, signed char z) +{ + char3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar3 make_uchar3(unsigned char x, unsigned char y, unsigned char z) +{ + uchar3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) char4 make_char4(signed char x, signed char y, signed char z, signed char w) +{ + char4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uchar4 make_uchar4(unsigned char x, unsigned char y, unsigned char z, unsigned char w) +{ + uchar4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short1 make_short1(short x) +{ + short1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort1 make_ushort1(unsigned short x) +{ + ushort1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short2 make_short2(short x, short y) +{ + short2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort2 make_ushort2(unsigned short x, unsigned short y) +{ + ushort2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short3 make_short3(short x,short y, short z) +{ + short3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort3 make_ushort3(unsigned short x, unsigned short y, unsigned short z) +{ + ushort3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) short4 make_short4(short x, short y, short z, short w) +{ + short4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ushort4 make_ushort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w) +{ + ushort4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int1 make_int1(int x) +{ + int1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint1 make_uint1(unsigned int x) +{ + uint1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int2 make_int2(int x, int y) +{ + int2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint2 make_uint2(unsigned int x, unsigned int y) +{ + uint2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int3 make_int3(int x, int y, int z) +{ + int3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint3 make_uint3(unsigned int x, unsigned int y, unsigned int z) +{ + uint3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) int4 make_int4(int x, int y, int z, int w) +{ + int4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) uint4 make_uint4(unsigned int x, unsigned int y, unsigned int z, unsigned int w) +{ + uint4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long1 make_long1(long int x) +{ + long1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong1 make_ulong1(unsigned long int x) +{ + ulong1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long2 make_long2(long int x, long int y) +{ + long2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong2 make_ulong2(unsigned long int x, unsigned long int y) +{ + ulong2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long3 make_long3(long int x, long int y, long int z) +{ + long3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong3 make_ulong3(unsigned long int x, unsigned long int y, unsigned long int z) +{ + ulong3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) long4 make_long4(long int x, long int y, long int z, long int w) +{ + long4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulong4 make_ulong4(unsigned long int x, unsigned long int y, unsigned long int z, unsigned long int w) +{ + ulong4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float1 make_float1(float x) +{ + float1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float2 make_float2(float x, float y) +{ + float2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float3 make_float3(float x, float y, float z) +{ + float3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) float4 make_float4(float x, float y, float z, float w) +{ + float4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong1 make_longlong1(long long int x) +{ + longlong1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong1 make_ulonglong1(unsigned long long int x) +{ + ulonglong1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong2 make_longlong2(long long int x, long long int y) +{ + longlong2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong2 make_ulonglong2(unsigned long long int x, unsigned long long int y) +{ + ulonglong2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong3 make_longlong3(long long int x, long long int y, long long int z) +{ + longlong3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong3 make_ulonglong3(unsigned long long int x, unsigned long long int y, unsigned long long int z) +{ + ulonglong3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) longlong4 make_longlong4(long long int x, long long int y, long long int z, long long int w) +{ + longlong4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) ulonglong4 make_ulonglong4(unsigned long long int x, unsigned long long int y, unsigned long long int z, unsigned long long int w) +{ + ulonglong4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double1 make_double1(double x) +{ + double1 t; t.x = x; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double2 make_double2(double x, double y) +{ + double2 t; t.x = x; t.y = y; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double3 make_double3(double x, double y, double z) +{ + double3 t; t.x = x; t.y = y; t.z = z; return t; +} + +static __inline__ __attribute__((host)) __attribute__((device)) double4 make_double4(double x, double y, double z, double w) +{ + double4 t; t.x = x; t.y = y; t.z = z; t.w = w; return t; +} +# 173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.h" 2 +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 1 +# 71 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 72 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 85 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +# 1 "/usr/include/string.h" 1 3 4 +# 26 "/usr/include/string.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 27 "/usr/include/string.h" 2 3 4 + + +# 28 "/usr/include/string.h" 3 4 +extern "C" { + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 34 "/usr/include/string.h" 2 3 4 +# 43 "/usr/include/string.h" 3 4 +extern void *memcpy (void *__restrict __dest, const void *__restrict __src, + size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memmove (void *__dest, const void *__src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern void *memccpy (void *__restrict __dest, const void *__restrict __src, + int __c, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + +extern int memcmp (const void *__s1, const void *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern "C++" +{ +extern void *memchr (void *__s, int __c, size_t __n) + throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const void *memchr (const void *__s, int __c, size_t __n) + throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 89 "/usr/include/string.h" 3 4 +} +# 99 "/usr/include/string.h" 3 4 +extern "C++" void *rawmemchr (void *__s, int __c) + throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const void *rawmemchr (const void *__s, int __c) + throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern "C++" void *memrchr (void *__s, int __c, size_t __n) + throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) + throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 122 "/usr/include/string.h" 3 4 +extern char *strcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strcat (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncat (char *__restrict __dest, const char *__restrict __src, + size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int strncmp (const char *__s1, const char *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcoll (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern size_t strxfrm (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (2))); + + + +# 1 "/usr/include/bits/types/locale_t.h" 1 3 4 +# 22 "/usr/include/bits/types/locale_t.h" 3 4 +# 1 "/usr/include/bits/types/__locale_t.h" 1 3 4 +# 28 "/usr/include/bits/types/__locale_t.h" 3 4 +struct __locale_struct +{ + + struct __locale_data *__locales[13]; + + + const unsigned short int *__ctype_b; + const int *__ctype_tolower; + const int *__ctype_toupper; + + + const char *__names[13]; +}; + +typedef struct __locale_struct *__locale_t; +# 23 "/usr/include/bits/types/locale_t.h" 2 3 4 + +typedef __locale_t locale_t; +# 154 "/usr/include/string.h" 2 3 4 + + +extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + +extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, + locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); + + + + + +extern char *strdup (const char *__s) + throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *strndup (const char *__string, size_t __n) + throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +# 204 "/usr/include/string.h" 3 4 +extern "C++" +{ +extern char *strchr (char *__s, int __c) + throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *strchr (const char *__s, int __c) + throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 224 "/usr/include/string.h" 3 4 +} + + + + + + +extern "C++" +{ +extern char *strrchr (char *__s, int __c) + throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *strrchr (const char *__s, int __c) + throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 251 "/usr/include/string.h" 3 4 +} +# 261 "/usr/include/string.h" 3 4 +extern "C++" char *strchrnul (char *__s, int __c) + throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const char *strchrnul (const char *__s, int __c) + throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 273 "/usr/include/string.h" 3 4 +extern size_t strcspn (const char *__s, const char *__reject) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern size_t strspn (const char *__s, const char *__accept) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern "C++" +{ +extern char *strpbrk (char *__s, const char *__accept) + throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern const char *strpbrk (const char *__s, const char *__accept) + throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 301 "/usr/include/string.h" 3 4 +} + + + + + + +extern "C++" +{ +extern char *strstr (char *__haystack, const char *__needle) + throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern const char *strstr (const char *__haystack, const char *__needle) + throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 328 "/usr/include/string.h" 3 4 +} + + + + + + + +extern char *strtok (char *__restrict __s, const char *__restrict __delim) + throw () __attribute__ ((__nonnull__ (2))); + + + +extern char *__strtok_r (char *__restrict __s, + const char *__restrict __delim, + char **__restrict __save_ptr) + throw () __attribute__ ((__nonnull__ (2, 3))); + +extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, + char **__restrict __save_ptr) + throw () __attribute__ ((__nonnull__ (2, 3))); + + + + + +extern "C++" char *strcasestr (char *__haystack, const char *__needle) + throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern "C++" const char *strcasestr (const char *__haystack, + const char *__needle) + throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 369 "/usr/include/string.h" 3 4 +extern void *memmem (const void *__haystack, size_t __haystacklen, + const void *__needle, size_t __needlelen) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); + + + +extern void *__mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern void *mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern size_t strlen (const char *__s) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + +extern size_t strnlen (const char *__string, size_t __maxlen) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + +extern char *strerror (int __errnum) throw (); +# 421 "/usr/include/string.h" 3 4 +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) + throw () __attribute__ ((__nonnull__ (2))) ; + + + + + +extern char *strerror_l (int __errnum, locale_t __l) throw (); + + + +# 1 "/usr/include/strings.h" 1 3 4 +# 23 "/usr/include/strings.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 24 "/usr/include/strings.h" 2 3 4 + + + + + + +extern "C" { + + + +extern int bcmp (const void *__s1, const void *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void bcopy (const void *__src, void *__dest, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + +extern "C++" +{ +extern char *index (char *__s, int __c) + throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *index (const char *__s, int __c) + throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 66 "/usr/include/strings.h" 3 4 +} + + + + + + + +extern "C++" +{ +extern char *rindex (char *__s, int __c) + throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *rindex (const char *__s, int __c) + throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 94 "/usr/include/strings.h" 3 4 +} +# 104 "/usr/include/strings.h" 3 4 +extern int ffs (int __i) throw () __attribute__ ((__const__)); + + + + + +extern int ffsl (long int __l) throw () __attribute__ ((__const__)); +__extension__ extern int ffsll (long long int __ll) + throw () __attribute__ ((__const__)); + + + +extern int strcasecmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + + +extern int strncasecmp_l (const char *__s1, const char *__s2, + size_t __n, locale_t __loc) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); + + +} +# 433 "/usr/include/string.h" 2 3 4 + + + +extern void explicit_bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + +extern char *strsep (char **__restrict __stringp, + const char *__restrict __delim) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern char *strsignal (int __sig) throw (); + + +extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *__stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern char *stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int strverscmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); + + +extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +extern "C++" char *basename (char *__filename) + throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); +extern "C++" const char *basename (const char *__filename) + throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); +# 499 "/usr/include/string.h" 3 4 +} +# 86 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 1 "/usr/include/time.h" 1 3 4 +# 29 "/usr/include/time.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 30 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/time.h" 1 3 4 +# 26 "/usr/include/bits/time.h" 3 4 +# 1 "/usr/include/bits/types.h" 1 3 4 +# 27 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/bits/types.h" 2 3 4 + + +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + + +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; + +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; + + + + + + +typedef __int8_t __int_least8_t; +typedef __uint8_t __uint_least8_t; +typedef __int16_t __int_least16_t; +typedef __uint16_t __uint_least16_t; +typedef __int32_t __int_least32_t; +typedef __uint32_t __uint_least32_t; +typedef __int64_t __int_least64_t; +typedef __uint64_t __uint_least64_t; + + + +typedef long int __quad_t; +typedef unsigned long int __u_quad_t; + + + + + + + +typedef long int __intmax_t; +typedef unsigned long int __uintmax_t; +# 140 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/typesizes.h" 1 3 4 +# 141 "/usr/include/bits/types.h" 2 3 4 + + +typedef unsigned long int __dev_t; +typedef unsigned int __uid_t; +typedef unsigned int __gid_t; +typedef unsigned long int __ino_t; +typedef unsigned long int __ino64_t; +typedef unsigned int __mode_t; +typedef unsigned long int __nlink_t; +typedef long int __off_t; +typedef long int __off64_t; +typedef int __pid_t; +typedef struct { int __val[2]; } __fsid_t; +typedef long int __clock_t; +typedef unsigned long int __rlim_t; +typedef unsigned long int __rlim64_t; +typedef unsigned int __id_t; +typedef long int __time_t; +typedef unsigned int __useconds_t; +typedef long int __suseconds_t; + +typedef int __daddr_t; +typedef int __key_t; + + +typedef int __clockid_t; + + +typedef void * __timer_t; + + +typedef long int __blksize_t; + + + + +typedef long int __blkcnt_t; +typedef long int __blkcnt64_t; + + +typedef unsigned long int __fsblkcnt_t; +typedef unsigned long int __fsblkcnt64_t; + + +typedef unsigned long int __fsfilcnt_t; +typedef unsigned long int __fsfilcnt64_t; + + +typedef long int __fsword_t; + +typedef long int __ssize_t; + + +typedef long int __syscall_slong_t; + +typedef unsigned long int __syscall_ulong_t; + + + +typedef __off64_t __loff_t; +typedef char *__caddr_t; + + +typedef long int __intptr_t; + + +typedef unsigned int __socklen_t; + + + + +typedef int __sig_atomic_t; +# 27 "/usr/include/bits/time.h" 2 3 4 +# 73 "/usr/include/bits/time.h" 3 4 +# 1 "/usr/include/bits/timex.h" 1 3 4 +# 22 "/usr/include/bits/timex.h" 3 4 +# 1 "/usr/include/bits/types/struct_timeval.h" 1 3 4 + + + + + + + +struct timeval +{ + __time_t tv_sec; + __suseconds_t tv_usec; +}; +# 23 "/usr/include/bits/timex.h" 2 3 4 + + + +struct timex +{ + unsigned int modes; + __syscall_slong_t offset; + __syscall_slong_t freq; + __syscall_slong_t maxerror; + __syscall_slong_t esterror; + int status; + __syscall_slong_t constant; + __syscall_slong_t precision; + __syscall_slong_t tolerance; + struct timeval time; + __syscall_slong_t tick; + __syscall_slong_t ppsfreq; + __syscall_slong_t jitter; + int shift; + __syscall_slong_t stabil; + __syscall_slong_t jitcnt; + __syscall_slong_t calcnt; + __syscall_slong_t errcnt; + __syscall_slong_t stbcnt; + + int tai; + + + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; +}; +# 74 "/usr/include/bits/time.h" 2 3 4 + +extern "C" { + + +extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); + +} +# 34 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/types/clock_t.h" 1 3 4 + + + + + + +typedef __clock_t clock_t; +# 38 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/time_t.h" 1 3 4 + + + + + + +typedef __time_t time_t; +# 39 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/struct_tm.h" 1 3 4 + + + + + + +struct tm +{ + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + + + long int tm_gmtoff; + const char *tm_zone; + + + + +}; +# 40 "/usr/include/time.h" 2 3 4 + + +# 1 "/usr/include/bits/types/struct_timespec.h" 1 3 4 +# 9 "/usr/include/bits/types/struct_timespec.h" 3 4 +struct timespec +{ + __time_t tv_sec; + __syscall_slong_t tv_nsec; +}; +# 43 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/types/clockid_t.h" 1 3 4 + + + + + + +typedef __clockid_t clockid_t; +# 47 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/timer_t.h" 1 3 4 + + + + + + +typedef __timer_t timer_t; +# 48 "/usr/include/time.h" 2 3 4 +# 1 "/usr/include/bits/types/struct_itimerspec.h" 1 3 4 + + + + + + + +struct itimerspec + { + struct timespec it_interval; + struct timespec it_value; + }; +# 49 "/usr/include/time.h" 2 3 4 +struct sigevent; + + + + +typedef __pid_t pid_t; +# 68 "/usr/include/time.h" 3 4 +extern "C" { + + + +extern clock_t clock (void) throw (); + + +extern time_t time (time_t *__timer) throw (); + + +extern double difftime (time_t __time1, time_t __time0) + throw () __attribute__ ((__const__)); + + +extern time_t mktime (struct tm *__tp) throw (); + + + + + +extern size_t strftime (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp) throw (); + + + + +extern char *strptime (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp) + throw (); + + + + + + +extern size_t strftime_l (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp, + locale_t __loc) throw (); + + + +extern char *strptime_l (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp, + locale_t __loc) throw (); + + + + + +extern struct tm *gmtime (const time_t *__timer) throw (); + + + +extern struct tm *localtime (const time_t *__timer) throw (); + + + + +extern struct tm *gmtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) throw (); + + + +extern struct tm *localtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) throw (); + + + + +extern char *asctime (const struct tm *__tp) throw (); + + +extern char *ctime (const time_t *__timer) throw (); + + + + + + +extern char *asctime_r (const struct tm *__restrict __tp, + char *__restrict __buf) throw (); + + +extern char *ctime_r (const time_t *__restrict __timer, + char *__restrict __buf) throw (); + + + + +extern char *__tzname[2]; +extern int __daylight; +extern long int __timezone; + + + + +extern char *tzname[2]; + + + +extern void tzset (void) throw (); + + + +extern int daylight; +extern long int timezone; + + + + + +extern int stime (const time_t *__when) throw (); +# 196 "/usr/include/time.h" 3 4 +extern time_t timegm (struct tm *__tp) throw (); + + +extern time_t timelocal (struct tm *__tp) throw (); + + +extern int dysize (int __year) throw () __attribute__ ((__const__)); +# 211 "/usr/include/time.h" 3 4 +extern int nanosleep (const struct timespec *__requested_time, + struct timespec *__remaining); + + + +extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); + + +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); + + +extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) + throw (); + + + + + + +extern int clock_nanosleep (clockid_t __clock_id, int __flags, + const struct timespec *__req, + struct timespec *__rem); + + +extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); + + + + +extern int timer_create (clockid_t __clock_id, + struct sigevent *__restrict __evp, + timer_t *__restrict __timerid) throw (); + + +extern int timer_delete (timer_t __timerid) throw (); + + +extern int timer_settime (timer_t __timerid, int __flags, + const struct itimerspec *__restrict __value, + struct itimerspec *__restrict __ovalue) throw (); + + +extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) + throw (); + + +extern int timer_getoverrun (timer_t __timerid) throw (); + + + + + +extern int timespec_get (struct timespec *__ts, int __base) + throw () __attribute__ ((__nonnull__ (1))); +# 280 "/usr/include/time.h" 3 4 +extern int getdate_err; +# 289 "/usr/include/time.h" 3 4 +extern struct tm *getdate (const char *__string); +# 303 "/usr/include/time.h" 3 4 +extern int getdate_r (const char *__restrict __string, + struct tm *__restrict __resbufp); + + +} +# 87 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 + + +# 88 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern "C" +{ + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) clock_t clock(void) + + + + +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 +throw () +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) void* memset(void*, int, size_t) +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 + throw () +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) void* memcpy(void*, const void*, size_t) +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 3 4 + throw () +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" + ; + +} +# 303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 1 +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 + + + + + + + +extern "C" +{ +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) int abs(int a) +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) long int labs(long int a) +# 221 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 221 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) long long int llabs(long long int a) +# 229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fabs(double x) +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fabsf(float x) +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 332 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int min(const int a, const int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned int umin(const unsigned int a, const unsigned int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llmin(const long long int a, const long long int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned long long int ullmin(const unsigned long long int a, const unsigned long long int b); +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fminf(float x, float y) +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fmin(double x, double y) +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int max(const int a, const int b); + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned int umax(const unsigned int a, const unsigned int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llmax(const long long int a, const long long int b); + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) unsigned long long int ullmax(const unsigned long long int a, const unsigned long long int b); +# 450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fmaxf(float x, float y) +# 450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fmax(double, double) +# 470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sin(double x) +# 514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cos(double x) +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincos(double x, double *sptr, double *cptr) +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 582 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincosf(float x, float *sptr, float *cptr) +# 582 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 582 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double tan(double x) +# 627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sqrt(double x) +# 696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 768 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double rsqrt(double x); +# 838 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float rsqrtf(float x); +# 894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log2(double x) +# 894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double exp2(double x) +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1024 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float exp2f(float x) +# 1024 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1024 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1091 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double exp10(double x) +# 1091 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1091 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float exp10f(float x) +# 1154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double expm1(double x) +# 1247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float expm1f(float x) +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float log2f(float x) +# 1395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log10(double x) +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log(double x) +# 1519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1615 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double log1p(double x) +# 1615 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1615 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float log1pf(float x) +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1778 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double floor(double x) +# 1778 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1778 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double exp(double x) +# 1857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cosh(double x) +# 1898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sinh(double x) +# 1948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 1998 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double tanh(double x) +# 1998 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 1998 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2053 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double acosh(double x) +# 2053 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2053 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float acoshf(float x) +# 2111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double asinh(double x) +# 2164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float asinhf(float x) +# 2217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double atanh(double x) +# 2271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float atanhf(float x) +# 2325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double ldexp(double x, int exp) +# 2374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float ldexpf(float x, int exp) +# 2420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double logb(double x) +# 2472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float logbf(float x) +# 2527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int ilogb(double x) +# 2567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int ilogbf(float x) +# 2607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double scalbn(double x, int n) +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float scalbnf(float x, int n) +# 2759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2835 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double scalbln(double x, long int n) +# 2835 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2835 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float scalblnf(float x, long int n) +# 2911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 2988 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double frexp(double x, int *nptr) +# 2988 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 2988 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float frexpf(float x, int *nptr) +# 3062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double round(double x) +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float roundf(float x) +# 3169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lround(double x) +# 3187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lroundf(float x) +# 3205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llround(double x) +# 3223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llroundf(float x) +# 3241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float rintf(float x) +# 3369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lrint(double x) +# 3386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long int lrintf(float x) +# 3403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llrint(double x) +# 3420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) long long int llrintf(float x) +# 3437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double nearbyint(double x) +# 3490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float nearbyintf(float x) +# 3543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double ceil(double x) +# 3605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double trunc(double x) +# 3655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float truncf(float x) +# 3708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fdim(double x, double y) +# 3734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 3760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fdimf(float x, float y) +# 3760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 3760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4060 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double atan2(double y, double x) +# 4060 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4060 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double atan(double x) +# 4131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double acos(double x) +# 4154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double asin(double x) +# 4205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double hypot(double x, double y) +# 4273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rhypot(double x, double y) +# 4328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float hypotf(float x, float y) +# 4396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rhypotf(float x, float y) +# 4451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double norm3d(double a, double b, double c) +# 4495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rnorm3d(double a, double b, double c) +# 4546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4595 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double norm4d(double a, double b, double c, double d) +# 4595 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4595 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4651 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rnorm4d(double a, double b, double c, double d) +# 4651 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4651 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C++" __attribute__((device)) __attribute__((device_builtin)) double norm(int dim, double const * p) +# 4708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4772 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double rnorm(int dim, double const * p) +# 4772 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4772 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4837 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rnormf(int dim, float const * p) +# 4837 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4837 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C++" __attribute__((device)) __attribute__((device_builtin)) float normf(int dim, float const * p) +# 4894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float norm3df(float a, float b, float c) +# 4939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 4990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rnorm3df(float a, float b, float c) +# 4990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 4990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float norm4df(float a, float b, float c, float d) +# 5039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5095 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float rnorm4df(float a, float b, float c, float d) +# 5095 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5095 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cbrt(double x) +# 5182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float cbrtf(float x) +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 5323 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double rcbrt(double x); +# 5373 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float rcbrtf(float x); +# 5433 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double sinpi(double x); +# 5493 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sinpif(float x); +# 5545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double cospi(double x); +# 5597 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float cospif(float x); +# 5627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincospi(double x, double *sptr, double *cptr); +# 5657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) void sincospif(float x, float *sptr, float *cptr); +# 5990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double pow(double x, double y) +# 5990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 5990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6046 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double modf(double x, double *iptr) +# 6046 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6046 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fmod(double x, double y) +# 6105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double remainder(double x, double y) +# 6201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float remainderf(float x, float y) +# 6300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double remquo(double x, double y, int *quo) +# 6372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float remquof(float x, float y, int *quo) +# 6444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double j0(double x) +# 6485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float j0f(float x) +# 6527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6596 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double j1(double x) +# 6596 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6596 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float j1f(float x) +# 6665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double jn(int n, double x) +# 6708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6751 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float jnf(int n, float x) +# 6751 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6751 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double y0(double x) +# 6812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float y0f(float x) +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6934 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double y1(double x) +# 6934 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6934 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 6995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float y1f(float x) +# 6995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 6995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double yn(int n, double x) +# 7058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float ynf(int n, float x) +# 7121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double cyl_bessel_i0(double x) +# 7148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float cyl_bessel_i0f(float x) +# 7174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double cyl_bessel_i1(double x) +# 7201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float cyl_bessel_i1f(float x) +# 7227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erf(double x) +# 7310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erff(float x) +# 7392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7464 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfinv(double x); +# 7529 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfinvf(float x); +# 7568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfc(double x) +# 7568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7606 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfcf(float x) +# 7606 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7606 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double lgamma(double x) +# 7723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 7723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 7785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfcinv(double x); +# 7840 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfcinvf(float x); +# 7908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double normcdfinv(double x); +# 7976 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float normcdfinvf(float x); +# 8019 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double normcdf(double x); +# 8062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float normcdff(float x); +# 8126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double erfcx(double x); +# 8190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float erfcxf(float x); +# 8309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float lgammaf(float x) +# 8309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double tgamma(double x) +# 8407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8505 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float tgammaf(float x) +# 8505 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8505 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double copysign(double x, double y) +# 8518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float copysignf(float x, float y) +# 8531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double nextafter(double x, double y) +# 8550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float nextafterf(float x, float y) +# 8569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8585 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double nan(const char *tagp) +# 8585 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8585 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float nanf(const char *tagp) +# 8601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isinff(float) +# 8608 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8608 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isnanf(float) +# 8609 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8609 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __finite(double) +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __finitef(float) +# 8620 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8620 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __signbit(double) +# 8621 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8621 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isnan(double) +# 8622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isinf(double) +# 8623 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8623 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __signbitf(float) +# 8626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) double fma(double x, double y, double z) +# 8785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8943 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fmaf(float x, float y, float z) +# 8943 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8943 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 8954 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __signbitl(long double) +# 8954 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8954 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __finitel(long double) +# 8960 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8960 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isinfl(long double) +# 8961 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8961 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) int __isnanl(long double) +# 8962 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 8962 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9012 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float acosf(float x) +# 9012 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9012 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9071 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float asinf(float x) +# 9071 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9071 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float atanf(float x) +# 9151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float atan2f(float y, float x) +# 9448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float cosf(float x) +# 9482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sinf(float x) +# 9524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float tanf(float x) +# 9566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float coshf(float x) +# 9607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sinhf(float x) +# 9657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9707 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float tanhf(float x) +# 9707 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9707 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float logf(float x) +# 9759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float expf(float x) +# 9839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9891 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float log10f(float x) +# 9891 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9891 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 9946 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float modff(float x, float *iptr) +# 9946 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 9946 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float powf(float x, float y) +# 10276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float sqrtf(float x) +# 10345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float ceilf(float x) +# 10404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float floorf(float x) +# 10465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((device_builtin)) float fmodf(float x, float y) +# 10523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 3 4 + throw () +# 10523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + ; +# 10538 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +} + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h" 1 3 +# 36 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h" 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 1 3 +# 252 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 + +# 252 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std +{ + typedef long unsigned int size_t; + typedef long int ptrdiff_t; + + + typedef decltype(nullptr) nullptr_t; + +} +# 274 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# 417 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# 524 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/os_defines.h" 1 3 +# 525 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 2 3 + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/cpu_defines.h" 1 3 +# 528 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 2 3 +# 42 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 1 3 +# 35 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + +# 36 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +# 67 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +extern "C++" { + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + struct __true_type { }; + struct __false_type { }; + + template + struct __truth_type + { typedef __false_type __type; }; + + template<> + struct __truth_type + { typedef __true_type __type; }; + + + + template + struct __traitor + { + enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; + typedef typename __truth_type<__value>::__type __type; + }; + + + template + struct __are_same + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __are_same<_Tp, _Tp> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template + struct __is_void + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_void + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_integer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + + + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# 184 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# 270 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +template<> struct __is_integer<__int128> { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; +# 287 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + template + struct __is_floating + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_pointer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __is_pointer<_Tp*> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_arithmetic + : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > + { }; + + + + + template + struct __is_scalar + : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > + { }; + + + + + template + struct __is_char + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template + struct __is_byte + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# 417 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 + template + struct __is_move_iterator + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + + template + inline _Iterator + __miter_base(_Iterator __it) + { return __it; } + + +} +} +# 43 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h" 1 3 +# 32 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h" 3 + +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h" 3 + + + + +extern "C++" { + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + template + struct __enable_if + { }; + + template + struct __enable_if + { typedef _Tp __type; }; + + + + template + struct __conditional_type + { typedef _Iftrue __type; }; + + template + struct __conditional_type + { typedef _Iffalse __type; }; + + + + template + struct __add_unsigned + { + private: + typedef __enable_if::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __add_unsigned + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned + { typedef unsigned short __type; }; + + template<> + struct __add_unsigned + { typedef unsigned int __type; }; + + template<> + struct __add_unsigned + { typedef unsigned long __type; }; + + template<> + struct __add_unsigned + { typedef unsigned long long __type; }; + + + template<> + struct __add_unsigned; + + template<> + struct __add_unsigned; + + + + template + struct __remove_unsigned + { + private: + typedef __enable_if::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __remove_unsigned + { typedef signed char __type; }; + + template<> + struct __remove_unsigned + { typedef signed char __type; }; + + template<> + struct __remove_unsigned + { typedef short __type; }; + + template<> + struct __remove_unsigned + { typedef int __type; }; + + template<> + struct __remove_unsigned + { typedef long __type; }; + + template<> + struct __remove_unsigned + { typedef long long __type; }; + + + template<> + struct __remove_unsigned; + + template<> + struct __remove_unsigned; + + + + template + inline bool + __is_null_pointer(_Type* __ptr) + { return __ptr == 0; } + + template + inline bool + __is_null_pointer(_Type) + { return false; } + + + inline bool + __is_null_pointer(std::nullptr_t) + { return true; } + + + + template::__value> + struct __promote + { typedef double __type; }; + + + + + template + struct __promote<_Tp, false> + { }; + + template<> + struct __promote + { typedef long double __type; }; + + template<> + struct __promote + { typedef double __type; }; + + template<> + struct __promote + { typedef float __type; }; + + template::__type, + typename _Up2 = typename __promote<_Up>::__type> + struct __promote_2 + { + typedef __typeof__(_Tp2() + _Up2()) __type; + }; + + template::__type, + typename _Up2 = typename __promote<_Up>::__type, + typename _Vp2 = typename __promote<_Vp>::__type> + struct __promote_3 + { + typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; + }; + + template::__type, + typename _Up2 = typename __promote<_Up>::__type, + typename _Vp2 = typename __promote<_Vp>::__type, + typename _Wp2 = typename __promote<_Wp>::__type> + struct __promote_4 + { + typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; + }; + + +} +} +# 44 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 + +# 1 "/usr/include/math.h" 1 3 4 +# 27 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 28 "/usr/include/math.h" 2 3 4 + + + + + + +extern "C" { + + + + + +# 1 "/usr/include/bits/math-vector.h" 1 3 4 +# 27 "/usr/include/bits/math-vector.h" 3 4 +# 1 "/usr/include/bits/libm-simd-decl-stubs.h" 1 3 4 +# 27 "/usr/include/bits/math-vector.h" 2 3 4 +# 41 "/usr/include/math.h" 2 3 4 + + +# 1 "/usr/include/bits/floatn.h" 1 3 4 +# 23 "/usr/include/bits/floatn.h" 3 4 +# 1 "/usr/include/bits/long-double.h" 1 3 4 +# 24 "/usr/include/bits/floatn.h" 2 3 4 +# 79 "/usr/include/bits/floatn.h" 3 4 +typedef __ieee128 _Float128; + + +typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__))); +# 120 "/usr/include/bits/floatn.h" 3 4 +# 1 "/usr/include/bits/floatn-common.h" 1 3 4 +# 24 "/usr/include/bits/floatn-common.h" 3 4 +# 1 "/usr/include/bits/long-double.h" 1 3 4 +# 25 "/usr/include/bits/floatn-common.h" 2 3 4 +# 214 "/usr/include/bits/floatn-common.h" 3 4 +typedef float _Float32; +# 251 "/usr/include/bits/floatn-common.h" 3 4 +typedef double _Float64; +# 268 "/usr/include/bits/floatn-common.h" 3 4 +typedef double _Float32x; +# 298 "/usr/include/bits/floatn-common.h" 3 4 +typedef _Float128 _Float64x; +# 121 "/usr/include/bits/floatn.h" 2 3 4 +# 44 "/usr/include/math.h" 2 3 4 +# 138 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/flt-eval-method.h" 1 3 4 +# 139 "/usr/include/math.h" 2 3 4 +# 149 "/usr/include/math.h" 3 4 +typedef float float_t; +typedef double double_t; +# 190 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/fp-logb.h" 1 3 4 +# 191 "/usr/include/math.h" 2 3 4 +# 233 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/fp-fast.h" 1 3 4 +# 234 "/usr/include/math.h" 2 3 4 + + + +enum + { + FP_INT_UPWARD = + + 0, + FP_INT_DOWNWARD = + + 1, + FP_INT_TOWARDZERO = + + 2, + FP_INT_TONEARESTFROMZERO = + + 3, + FP_INT_TONEAREST = + + 4, + }; +# 289 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassify (double __value) throw () + __attribute__ ((__const__)); + + +extern int __signbit (double __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinf (double __value) throw () __attribute__ ((__const__)); + + +extern int __finite (double __value) throw () __attribute__ ((__const__)); + + +extern int __isnan (double __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsig (double __x, double __y) throw (); + + +extern int __issignaling (double __value) throw () + __attribute__ ((__const__)); +# 290 "/usr/include/math.h" 2 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern double acos (double __x) throw (); extern double __acos (double __x) throw (); + +extern double asin (double __x) throw (); extern double __asin (double __x) throw (); + +extern double atan (double __x) throw (); extern double __atan (double __x) throw (); + +extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); + + + extern double cos (double __x) throw (); extern double __cos (double __x) throw (); + + extern double sin (double __x) throw (); extern double __sin (double __x) throw (); + +extern double tan (double __x) throw (); extern double __tan (double __x) throw (); + + + + +extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); + +extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); + +extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); + + + + extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw () + ; + + + + +extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); + +extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); + +extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); + + + + + + extern double exp (double __x) throw (); extern double __exp (double __x) throw (); + + +extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); + + +extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); + + + extern double log (double __x) throw (); extern double __log (double __x) throw (); + + +extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); + + +extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); + + + + +extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); + + +extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); + + +extern double logb (double __x) throw (); extern double __logb (double __x) throw (); + + + + +extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); + + +extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); + + + + + + + extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); + + +extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); + + + +extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); + + + + +extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); + + + + + + +extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); + + +extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); + + +extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); + + +extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); +# 182 "/usr/include/bits/mathcalls.h" 3 4 +extern int finite (double __value) throw () __attribute__ ((__const__)); + + +extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); + + + +extern double significand (double __x) throw (); extern double __significand (double __x) throw (); + + + + + + +extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); + + + + +extern double nan (const char *__tagb) throw (); extern double __nan (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern double j0 (double) throw (); extern double __j0 (double) throw (); +extern double j1 (double) throw (); extern double __j1 (double) throw (); +extern double jn (int, double) throw (); extern double __jn (int, double) throw (); +extern double y0 (double) throw (); extern double __y0 (double) throw (); +extern double y1 (double) throw (); extern double __y1 (double) throw (); +extern double yn (int, double) throw (); extern double __yn (int, double) throw (); + + + + + +extern double erf (double) throw (); extern double __erf (double) throw (); +extern double erfc (double) throw (); extern double __erfc (double) throw (); +extern double lgamma (double) throw (); extern double __lgamma (double) throw (); + + + + +extern double tgamma (double) throw (); extern double __tgamma (double) throw (); + + + + + +extern double gamma (double) throw (); extern double __gamma (double) throw (); + + + + + + + +extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); + + + + + + +extern double rint (double __x) throw (); extern double __rint (double __x) throw (); + + +extern double nextafter (double __x, double __y) throw (); extern double __nextafter (double __x, double __y) throw (); + +extern double nexttoward (double __x, long double __y) throw (); extern double __nexttoward (double __x, long double __y) throw (); + + + + +extern double nextdown (double __x) throw (); extern double __nextdown (double __x) throw (); + +extern double nextup (double __x) throw (); extern double __nextup (double __x) throw (); + + + +extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); + + + +extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); + + + +extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); + + + + +extern long int llogb (double __x) throw (); extern long int __llogb (double __x) throw (); + + + + +extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); + + + +extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); + + + +extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); + + + +extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); + + + + +extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); + + + + + + +extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); +__extension__ +extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); + + + +extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); +__extension__ +extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); + + + +extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); + + +extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); + + + + +extern double roundeven (double __x) throw () __attribute__ ((__const__)); extern double __roundeven (double __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfp (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) throw () + ; + + +extern double fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern double fminmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern int totalorder (double __x, double __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermag (double __x, double __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalize (double *__cx, const double *__x) throw (); + + +extern double getpayload (const double *__x) throw (); extern double __getpayload (const double *__x) throw (); + + +extern int setpayload (double *__x, double __payload) throw (); + + +extern int setpayloadsig (double *__x, double __payload) throw (); + + + + + + + +extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); +# 291 "/usr/include/math.h" 2 3 4 +# 306 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassifyf (float __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitf (float __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinff (float __value) throw () __attribute__ ((__const__)); + + +extern int __finitef (float __value) throw () __attribute__ ((__const__)); + + +extern int __isnanf (float __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsigf (float __x, float __y) throw (); + + +extern int __issignalingf (float __value) throw () + __attribute__ ((__const__)); +# 307 "/usr/include/math.h" 2 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); + +extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); + +extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); + +extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); + + + extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); + + extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); + +extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); + + + + +extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); + +extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); + +extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); + + + + extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw () + ; + + + + +extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); + +extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); + +extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); + + + + + + extern float expf (float __x) throw (); extern float __expf (float __x) throw (); + + +extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); + + +extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); + + + extern float logf (float __x) throw (); extern float __logf (float __x) throw (); + + +extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); + + +extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); + + + + +extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); + + +extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); + + +extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); + + + + +extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); + + +extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); + + + + + + + extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); + + +extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); + + + +extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); + + + + +extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); + + + + + + +extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); + + +extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); + + +extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); + + +extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); +# 177 "/usr/include/bits/mathcalls.h" 3 4 +extern int isinff (float __value) throw () __attribute__ ((__const__)); + + + + +extern int finitef (float __value) throw () __attribute__ ((__const__)); + + +extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); + + + +extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); + + + + + + +extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); + + + + +extern float nanf (const char *__tagb) throw (); extern float __nanf (const char *__tagb) throw (); +# 211 "/usr/include/bits/mathcalls.h" 3 4 +extern int isnanf (float __value) throw () __attribute__ ((__const__)); + + + + + +extern float j0f (float) throw (); extern float __j0f (float) throw (); +extern float j1f (float) throw (); extern float __j1f (float) throw (); +extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); +extern float y0f (float) throw (); extern float __y0f (float) throw (); +extern float y1f (float) throw (); extern float __y1f (float) throw (); +extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); + + + + + +extern float erff (float) throw (); extern float __erff (float) throw (); +extern float erfcf (float) throw (); extern float __erfcf (float) throw (); +extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); + + + + +extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); + + + + + +extern float gammaf (float) throw (); extern float __gammaf (float) throw (); + + + + + + + +extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); + + + + + + +extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); + + +extern float nextafterf (float __x, float __y) throw (); extern float __nextafterf (float __x, float __y) throw (); + +extern float nexttowardf (float __x, long double __y) throw (); extern float __nexttowardf (float __x, long double __y) throw (); + + + + +extern float nextdownf (float __x) throw (); extern float __nextdownf (float __x) throw (); + +extern float nextupf (float __x) throw (); extern float __nextupf (float __x) throw (); + + + +extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); + + + +extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); + + + +extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); + + + + +extern long int llogbf (float __x) throw (); extern long int __llogbf (float __x) throw (); + + + + +extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); + + + +extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); + + + +extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); + + + +extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); + + + + +extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); + + + + + + +extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); +__extension__ +extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); + + + +extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); +__extension__ +extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); + + + +extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); + + +extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); + + + + +extern float roundevenf (float __x) throw () __attribute__ ((__const__)); extern float __roundevenf (float __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) throw () + ; + + +extern float fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern float fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf (float __x, float __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf (float __x, float __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef (float *__cx, const float *__x) throw (); + + +extern float getpayloadf (const float *__x) throw (); extern float __getpayloadf (const float *__x) throw (); + + +extern int setpayloadf (float *__x, float __payload) throw (); + + +extern int setpayloadsigf (float *__x, float __payload) throw (); + + + + + + + +extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); +# 308 "/usr/include/math.h" 2 3 4 +# 349 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassifyl (long double __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitl (long double __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); + + +extern int __finitel (long double __value) throw () __attribute__ ((__const__)); + + +extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsigl (long double __x, long double __y) throw (); + + +extern int __issignalingl (long double __value) throw () + __attribute__ ((__const__)); +# 350 "/usr/include/math.h" 2 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); + +extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); + +extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); + +extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); + + + extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); + + extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); + +extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); + + + + +extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); + +extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); + +extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); + + + + extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw () + ; + + + + +extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); + +extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); + +extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); + + + + + + extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); + + +extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); + + +extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); + + + extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); + + +extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); + + +extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); + + + + +extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); + + +extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); + + +extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); + + + + +extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); + + +extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); + + + + + + + extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); + + +extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); + + + +extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); + + + + +extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); + + + + + + +extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); + + +extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); + + +extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); + + +extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); +# 177 "/usr/include/bits/mathcalls.h" 3 4 +extern int isinfl (long double __value) throw () __attribute__ ((__const__)); + + + + +extern int finitel (long double __value) throw () __attribute__ ((__const__)); + + +extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); + + + +extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); + + + + + + +extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + + + +extern long double nanl (const char *__tagb) throw (); extern long double __nanl (const char *__tagb) throw (); +# 211 "/usr/include/bits/mathcalls.h" 3 4 +extern int isnanl (long double __value) throw () __attribute__ ((__const__)); + + + + + +extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); +extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); +extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); +extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); +extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); +extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); + + + + + +extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); +extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); +extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); + + + + +extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); + + + + + +extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); + + + + + + + +extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); + + + + + + +extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); + + +extern long double nextafterl (long double __x, long double __y) throw (); extern long double __nextafterl (long double __x, long double __y) throw (); + +extern long double nexttowardl (long double __x, long double __y) throw (); extern long double __nexttowardl (long double __x, long double __y) throw (); + + + + +extern long double nextdownl (long double __x) throw (); extern long double __nextdownl (long double __x) throw (); + +extern long double nextupl (long double __x) throw (); extern long double __nextupl (long double __x) throw (); + + + +extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); + + + +extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); + + + +extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); + + + + +extern long int llogbl (long double __x) throw (); extern long int __llogbl (long double __x) throw (); + + + + +extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); + + + +extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); + + + +extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); + + + +extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); + + + + +extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw (); + + + + + + +extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); +__extension__ +extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); + + + +extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); +__extension__ +extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); + + + +extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); + + +extern long double fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern long double fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw (); + + + + +extern long double roundevenl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundevenl (long double __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) throw () + ; + + +extern long double fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern long double fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern int totalorderl (long double __x, long double __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagl (long double __x, long double __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizel (long double *__cx, const long double *__x) throw (); + + +extern long double getpayloadl (const long double *__x) throw (); extern long double __getpayloadl (const long double *__x) throw (); + + +extern int setpayloadl (long double *__x, long double __payload) throw (); + + +extern int setpayloadsigl (long double *__x, long double __payload) throw (); + + + + + + + +extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); +# 351 "/usr/include/math.h" 2 3 4 +# 389 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 acosf32 (_Float32 __x) throw (); extern _Float32 __acosf32 (_Float32 __x) throw (); + +extern _Float32 asinf32 (_Float32 __x) throw (); extern _Float32 __asinf32 (_Float32 __x) throw (); + +extern _Float32 atanf32 (_Float32 __x) throw (); extern _Float32 __atanf32 (_Float32 __x) throw (); + +extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) throw (); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) throw (); + + + extern _Float32 cosf32 (_Float32 __x) throw (); extern _Float32 __cosf32 (_Float32 __x) throw (); + + extern _Float32 sinf32 (_Float32 __x) throw (); extern _Float32 __sinf32 (_Float32 __x) throw (); + +extern _Float32 tanf32 (_Float32 __x) throw (); extern _Float32 __tanf32 (_Float32 __x) throw (); + + + + +extern _Float32 coshf32 (_Float32 __x) throw (); extern _Float32 __coshf32 (_Float32 __x) throw (); + +extern _Float32 sinhf32 (_Float32 __x) throw (); extern _Float32 __sinhf32 (_Float32 __x) throw (); + +extern _Float32 tanhf32 (_Float32 __x) throw (); extern _Float32 __tanhf32 (_Float32 __x) throw (); + + + + extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw (); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw () + ; + + + + +extern _Float32 acoshf32 (_Float32 __x) throw (); extern _Float32 __acoshf32 (_Float32 __x) throw (); + +extern _Float32 asinhf32 (_Float32 __x) throw (); extern _Float32 __asinhf32 (_Float32 __x) throw (); + +extern _Float32 atanhf32 (_Float32 __x) throw (); extern _Float32 __atanhf32 (_Float32 __x) throw (); + + + + + + extern _Float32 expf32 (_Float32 __x) throw (); extern _Float32 __expf32 (_Float32 __x) throw (); + + +extern _Float32 frexpf32 (_Float32 __x, int *__exponent) throw (); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) throw (); + + +extern _Float32 ldexpf32 (_Float32 __x, int __exponent) throw (); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) throw (); + + + extern _Float32 logf32 (_Float32 __x) throw (); extern _Float32 __logf32 (_Float32 __x) throw (); + + +extern _Float32 log10f32 (_Float32 __x) throw (); extern _Float32 __log10f32 (_Float32 __x) throw (); + + +extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) throw (); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float32 exp10f32 (_Float32 __x) throw (); extern _Float32 __exp10f32 (_Float32 __x) throw (); + + + + +extern _Float32 expm1f32 (_Float32 __x) throw (); extern _Float32 __expm1f32 (_Float32 __x) throw (); + + +extern _Float32 log1pf32 (_Float32 __x) throw (); extern _Float32 __log1pf32 (_Float32 __x) throw (); + + +extern _Float32 logbf32 (_Float32 __x) throw (); extern _Float32 __logbf32 (_Float32 __x) throw (); + + + + +extern _Float32 exp2f32 (_Float32 __x) throw (); extern _Float32 __exp2f32 (_Float32 __x) throw (); + + +extern _Float32 log2f32 (_Float32 __x) throw (); extern _Float32 __log2f32 (_Float32 __x) throw (); + + + + + + + extern _Float32 powf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) throw (); + + +extern _Float32 sqrtf32 (_Float32 __x) throw (); extern _Float32 __sqrtf32 (_Float32 __x) throw (); + + + +extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) throw (); + + + + +extern _Float32 cbrtf32 (_Float32 __x) throw (); extern _Float32 __cbrtf32 (_Float32 __x) throw (); + + + + + + +extern _Float32 ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + +extern _Float32 fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + +extern _Float32 floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + +extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + + + +extern _Float32 nanf32 (const char *__tagb) throw (); extern _Float32 __nanf32 (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 j0f32 (_Float32) throw (); extern _Float32 __j0f32 (_Float32) throw (); +extern _Float32 j1f32 (_Float32) throw (); extern _Float32 __j1f32 (_Float32) throw (); +extern _Float32 jnf32 (int, _Float32) throw (); extern _Float32 __jnf32 (int, _Float32) throw (); +extern _Float32 y0f32 (_Float32) throw (); extern _Float32 __y0f32 (_Float32) throw (); +extern _Float32 y1f32 (_Float32) throw (); extern _Float32 __y1f32 (_Float32) throw (); +extern _Float32 ynf32 (int, _Float32) throw (); extern _Float32 __ynf32 (int, _Float32) throw (); + + + + + +extern _Float32 erff32 (_Float32) throw (); extern _Float32 __erff32 (_Float32) throw (); +extern _Float32 erfcf32 (_Float32) throw (); extern _Float32 __erfcf32 (_Float32) throw (); +extern _Float32 lgammaf32 (_Float32) throw (); extern _Float32 __lgammaf32 (_Float32) throw (); + + + + +extern _Float32 tgammaf32 (_Float32) throw (); extern _Float32 __tgammaf32 (_Float32) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32 lgammaf32_r (_Float32, int *__signgamp) throw (); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) throw (); + + + + + + +extern _Float32 rintf32 (_Float32 __x) throw (); extern _Float32 __rintf32 (_Float32 __x) throw (); + + +extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) throw (); + + + + + + +extern _Float32 nextdownf32 (_Float32 __x) throw (); extern _Float32 __nextdownf32 (_Float32 __x) throw (); + +extern _Float32 nextupf32 (_Float32 __x) throw (); extern _Float32 __nextupf32 (_Float32 __x) throw (); + + + +extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) throw (); + + + +extern _Float32 scalbnf32 (_Float32 __x, int __n) throw (); extern _Float32 __scalbnf32 (_Float32 __x, int __n) throw (); + + + +extern int ilogbf32 (_Float32 __x) throw (); extern int __ilogbf32 (_Float32 __x) throw (); + + + + +extern long int llogbf32 (_Float32 __x) throw (); extern long int __llogbf32 (_Float32 __x) throw (); + + + + +extern _Float32 scalblnf32 (_Float32 __x, long int __n) throw (); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) throw (); + + + +extern _Float32 nearbyintf32 (_Float32 __x) throw (); extern _Float32 __nearbyintf32 (_Float32 __x) throw (); + + + +extern _Float32 roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + + +extern _Float32 truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + + + +extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); + + + + + + +extern long int lrintf32 (_Float32 __x) throw (); extern long int __lrintf32 (_Float32 __x) throw (); +__extension__ +extern long long int llrintf32 (_Float32 __x) throw (); extern long long int __llrintf32 (_Float32 __x) throw (); + + + +extern long int lroundf32 (_Float32 __x) throw (); extern long int __lroundf32 (_Float32 __x) throw (); +__extension__ +extern long long int llroundf32 (_Float32 __x) throw (); extern long long int __llroundf32 (_Float32 __x) throw (); + + + +extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) throw (); + + +extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern _Float32 fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); + + + + +extern _Float32 roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () + ; + + +extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf32 (_Float32 __x, _Float32 __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf32 (_Float32 __x, _Float32 __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) throw (); + + +extern _Float32 getpayloadf32 (const _Float32 *__x) throw (); extern _Float32 __getpayloadf32 (const _Float32 *__x) throw (); + + +extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) throw (); + + +extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) throw (); +# 390 "/usr/include/math.h" 2 3 4 +# 406 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 acosf64 (_Float64 __x) throw (); extern _Float64 __acosf64 (_Float64 __x) throw (); + +extern _Float64 asinf64 (_Float64 __x) throw (); extern _Float64 __asinf64 (_Float64 __x) throw (); + +extern _Float64 atanf64 (_Float64 __x) throw (); extern _Float64 __atanf64 (_Float64 __x) throw (); + +extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) throw (); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) throw (); + + + extern _Float64 cosf64 (_Float64 __x) throw (); extern _Float64 __cosf64 (_Float64 __x) throw (); + + extern _Float64 sinf64 (_Float64 __x) throw (); extern _Float64 __sinf64 (_Float64 __x) throw (); + +extern _Float64 tanf64 (_Float64 __x) throw (); extern _Float64 __tanf64 (_Float64 __x) throw (); + + + + +extern _Float64 coshf64 (_Float64 __x) throw (); extern _Float64 __coshf64 (_Float64 __x) throw (); + +extern _Float64 sinhf64 (_Float64 __x) throw (); extern _Float64 __sinhf64 (_Float64 __x) throw (); + +extern _Float64 tanhf64 (_Float64 __x) throw (); extern _Float64 __tanhf64 (_Float64 __x) throw (); + + + + extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw (); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw () + ; + + + + +extern _Float64 acoshf64 (_Float64 __x) throw (); extern _Float64 __acoshf64 (_Float64 __x) throw (); + +extern _Float64 asinhf64 (_Float64 __x) throw (); extern _Float64 __asinhf64 (_Float64 __x) throw (); + +extern _Float64 atanhf64 (_Float64 __x) throw (); extern _Float64 __atanhf64 (_Float64 __x) throw (); + + + + + + extern _Float64 expf64 (_Float64 __x) throw (); extern _Float64 __expf64 (_Float64 __x) throw (); + + +extern _Float64 frexpf64 (_Float64 __x, int *__exponent) throw (); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) throw (); + + +extern _Float64 ldexpf64 (_Float64 __x, int __exponent) throw (); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) throw (); + + + extern _Float64 logf64 (_Float64 __x) throw (); extern _Float64 __logf64 (_Float64 __x) throw (); + + +extern _Float64 log10f64 (_Float64 __x) throw (); extern _Float64 __log10f64 (_Float64 __x) throw (); + + +extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) throw (); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float64 exp10f64 (_Float64 __x) throw (); extern _Float64 __exp10f64 (_Float64 __x) throw (); + + + + +extern _Float64 expm1f64 (_Float64 __x) throw (); extern _Float64 __expm1f64 (_Float64 __x) throw (); + + +extern _Float64 log1pf64 (_Float64 __x) throw (); extern _Float64 __log1pf64 (_Float64 __x) throw (); + + +extern _Float64 logbf64 (_Float64 __x) throw (); extern _Float64 __logbf64 (_Float64 __x) throw (); + + + + +extern _Float64 exp2f64 (_Float64 __x) throw (); extern _Float64 __exp2f64 (_Float64 __x) throw (); + + +extern _Float64 log2f64 (_Float64 __x) throw (); extern _Float64 __log2f64 (_Float64 __x) throw (); + + + + + + + extern _Float64 powf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float64 sqrtf64 (_Float64 __x) throw (); extern _Float64 __sqrtf64 (_Float64 __x) throw (); + + + +extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) throw (); + + + + +extern _Float64 cbrtf64 (_Float64 __x) throw (); extern _Float64 __cbrtf64 (_Float64 __x) throw (); + + + + + + +extern _Float64 ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + +extern _Float64 fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + +extern _Float64 floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + +extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + + + +extern _Float64 nanf64 (const char *__tagb) throw (); extern _Float64 __nanf64 (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 j0f64 (_Float64) throw (); extern _Float64 __j0f64 (_Float64) throw (); +extern _Float64 j1f64 (_Float64) throw (); extern _Float64 __j1f64 (_Float64) throw (); +extern _Float64 jnf64 (int, _Float64) throw (); extern _Float64 __jnf64 (int, _Float64) throw (); +extern _Float64 y0f64 (_Float64) throw (); extern _Float64 __y0f64 (_Float64) throw (); +extern _Float64 y1f64 (_Float64) throw (); extern _Float64 __y1f64 (_Float64) throw (); +extern _Float64 ynf64 (int, _Float64) throw (); extern _Float64 __ynf64 (int, _Float64) throw (); + + + + + +extern _Float64 erff64 (_Float64) throw (); extern _Float64 __erff64 (_Float64) throw (); +extern _Float64 erfcf64 (_Float64) throw (); extern _Float64 __erfcf64 (_Float64) throw (); +extern _Float64 lgammaf64 (_Float64) throw (); extern _Float64 __lgammaf64 (_Float64) throw (); + + + + +extern _Float64 tgammaf64 (_Float64) throw (); extern _Float64 __tgammaf64 (_Float64) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64 lgammaf64_r (_Float64, int *__signgamp) throw (); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) throw (); + + + + + + +extern _Float64 rintf64 (_Float64 __x) throw (); extern _Float64 __rintf64 (_Float64 __x) throw (); + + +extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) throw (); + + + + + + +extern _Float64 nextdownf64 (_Float64 __x) throw (); extern _Float64 __nextdownf64 (_Float64 __x) throw (); + +extern _Float64 nextupf64 (_Float64 __x) throw (); extern _Float64 __nextupf64 (_Float64 __x) throw (); + + + +extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) throw (); + + + +extern _Float64 scalbnf64 (_Float64 __x, int __n) throw (); extern _Float64 __scalbnf64 (_Float64 __x, int __n) throw (); + + + +extern int ilogbf64 (_Float64 __x) throw (); extern int __ilogbf64 (_Float64 __x) throw (); + + + + +extern long int llogbf64 (_Float64 __x) throw (); extern long int __llogbf64 (_Float64 __x) throw (); + + + + +extern _Float64 scalblnf64 (_Float64 __x, long int __n) throw (); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) throw (); + + + +extern _Float64 nearbyintf64 (_Float64 __x) throw (); extern _Float64 __nearbyintf64 (_Float64 __x) throw (); + + + +extern _Float64 roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + + +extern _Float64 truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + + + +extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); + + + + + + +extern long int lrintf64 (_Float64 __x) throw (); extern long int __lrintf64 (_Float64 __x) throw (); +__extension__ +extern long long int llrintf64 (_Float64 __x) throw (); extern long long int __llrintf64 (_Float64 __x) throw (); + + + +extern long int lroundf64 (_Float64 __x) throw (); extern long int __lroundf64 (_Float64 __x) throw (); +__extension__ +extern long long int llroundf64 (_Float64 __x) throw (); extern long long int __llroundf64 (_Float64 __x) throw (); + + + +extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern _Float64 fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); + + + + +extern _Float64 roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () + ; + + +extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf64 (_Float64 __x, _Float64 __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf64 (_Float64 __x, _Float64 __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) throw (); + + +extern _Float64 getpayloadf64 (const _Float64 *__x) throw (); extern _Float64 __getpayloadf64 (const _Float64 *__x) throw (); + + +extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) throw (); + + +extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) throw (); +# 407 "/usr/include/math.h" 2 3 4 +# 420 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 4 +extern int __fpclassifyf128 (_Float128 __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitf128 (_Float128 __value) throw () + __attribute__ ((__const__)); + + + +extern int __isinff128 (_Float128 __value) throw () __attribute__ ((__const__)); + + +extern int __finitef128 (_Float128 __value) throw () __attribute__ ((__const__)); + + +extern int __isnanf128 (_Float128 __value) throw () __attribute__ ((__const__)); + + +extern int __iseqsigf128 (_Float128 __x, _Float128 __y) throw (); + + +extern int __issignalingf128 (_Float128 __value) throw () + __attribute__ ((__const__)); +# 421 "/usr/include/math.h" 2 3 4 + + +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 acosf128 (_Float128 __x) throw (); extern _Float128 __acosf128 (_Float128 __x) throw (); + +extern _Float128 asinf128 (_Float128 __x) throw (); extern _Float128 __asinf128 (_Float128 __x) throw (); + +extern _Float128 atanf128 (_Float128 __x) throw (); extern _Float128 __atanf128 (_Float128 __x) throw (); + +extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) throw (); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) throw (); + + + extern _Float128 cosf128 (_Float128 __x) throw (); extern _Float128 __cosf128 (_Float128 __x) throw (); + + extern _Float128 sinf128 (_Float128 __x) throw (); extern _Float128 __sinf128 (_Float128 __x) throw (); + +extern _Float128 tanf128 (_Float128 __x) throw (); extern _Float128 __tanf128 (_Float128 __x) throw (); + + + + +extern _Float128 coshf128 (_Float128 __x) throw (); extern _Float128 __coshf128 (_Float128 __x) throw (); + +extern _Float128 sinhf128 (_Float128 __x) throw (); extern _Float128 __sinhf128 (_Float128 __x) throw (); + +extern _Float128 tanhf128 (_Float128 __x) throw (); extern _Float128 __tanhf128 (_Float128 __x) throw (); + + + + extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw (); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw () + ; + + + + +extern _Float128 acoshf128 (_Float128 __x) throw (); extern _Float128 __acoshf128 (_Float128 __x) throw (); + +extern _Float128 asinhf128 (_Float128 __x) throw (); extern _Float128 __asinhf128 (_Float128 __x) throw (); + +extern _Float128 atanhf128 (_Float128 __x) throw (); extern _Float128 __atanhf128 (_Float128 __x) throw (); + + + + + + extern _Float128 expf128 (_Float128 __x) throw (); extern _Float128 __expf128 (_Float128 __x) throw (); + + +extern _Float128 frexpf128 (_Float128 __x, int *__exponent) throw (); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) throw (); + + +extern _Float128 ldexpf128 (_Float128 __x, int __exponent) throw (); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) throw (); + + + extern _Float128 logf128 (_Float128 __x) throw (); extern _Float128 __logf128 (_Float128 __x) throw (); + + +extern _Float128 log10f128 (_Float128 __x) throw (); extern _Float128 __log10f128 (_Float128 __x) throw (); + + +extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) throw (); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float128 exp10f128 (_Float128 __x) throw (); extern _Float128 __exp10f128 (_Float128 __x) throw (); + + + + +extern _Float128 expm1f128 (_Float128 __x) throw (); extern _Float128 __expm1f128 (_Float128 __x) throw (); + + +extern _Float128 log1pf128 (_Float128 __x) throw (); extern _Float128 __log1pf128 (_Float128 __x) throw (); + + +extern _Float128 logbf128 (_Float128 __x) throw (); extern _Float128 __logbf128 (_Float128 __x) throw (); + + + + +extern _Float128 exp2f128 (_Float128 __x) throw (); extern _Float128 __exp2f128 (_Float128 __x) throw (); + + +extern _Float128 log2f128 (_Float128 __x) throw (); extern _Float128 __log2f128 (_Float128 __x) throw (); + + + + + + + extern _Float128 powf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float128 sqrtf128 (_Float128 __x) throw (); extern _Float128 __sqrtf128 (_Float128 __x) throw (); + + + +extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) throw (); + + + + +extern _Float128 cbrtf128 (_Float128 __x) throw (); extern _Float128 __cbrtf128 (_Float128 __x) throw (); + + + + + + +extern _Float128 ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + +extern _Float128 fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + +extern _Float128 floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + +extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + + + +extern _Float128 nanf128 (const char *__tagb) throw (); extern _Float128 __nanf128 (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 j0f128 (_Float128) throw (); extern _Float128 __j0f128 (_Float128) throw (); +extern _Float128 j1f128 (_Float128) throw (); extern _Float128 __j1f128 (_Float128) throw (); +extern _Float128 jnf128 (int, _Float128) throw (); extern _Float128 __jnf128 (int, _Float128) throw (); +extern _Float128 y0f128 (_Float128) throw (); extern _Float128 __y0f128 (_Float128) throw (); +extern _Float128 y1f128 (_Float128) throw (); extern _Float128 __y1f128 (_Float128) throw (); +extern _Float128 ynf128 (int, _Float128) throw (); extern _Float128 __ynf128 (int, _Float128) throw (); + + + + + +extern _Float128 erff128 (_Float128) throw (); extern _Float128 __erff128 (_Float128) throw (); +extern _Float128 erfcf128 (_Float128) throw (); extern _Float128 __erfcf128 (_Float128) throw (); +extern _Float128 lgammaf128 (_Float128) throw (); extern _Float128 __lgammaf128 (_Float128) throw (); + + + + +extern _Float128 tgammaf128 (_Float128) throw (); extern _Float128 __tgammaf128 (_Float128) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float128 lgammaf128_r (_Float128, int *__signgamp) throw (); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) throw (); + + + + + + +extern _Float128 rintf128 (_Float128 __x) throw (); extern _Float128 __rintf128 (_Float128 __x) throw (); + + +extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) throw (); + + + + + + +extern _Float128 nextdownf128 (_Float128 __x) throw (); extern _Float128 __nextdownf128 (_Float128 __x) throw (); + +extern _Float128 nextupf128 (_Float128 __x) throw (); extern _Float128 __nextupf128 (_Float128 __x) throw (); + + + +extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) throw (); + + + +extern _Float128 scalbnf128 (_Float128 __x, int __n) throw (); extern _Float128 __scalbnf128 (_Float128 __x, int __n) throw (); + + + +extern int ilogbf128 (_Float128 __x) throw (); extern int __ilogbf128 (_Float128 __x) throw (); + + + + +extern long int llogbf128 (_Float128 __x) throw (); extern long int __llogbf128 (_Float128 __x) throw (); + + + + +extern _Float128 scalblnf128 (_Float128 __x, long int __n) throw (); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) throw (); + + + +extern _Float128 nearbyintf128 (_Float128 __x) throw (); extern _Float128 __nearbyintf128 (_Float128 __x) throw (); + + + +extern _Float128 roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + + +extern _Float128 truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + + + +extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); + + + + + + +extern long int lrintf128 (_Float128 __x) throw (); extern long int __lrintf128 (_Float128 __x) throw (); +__extension__ +extern long long int llrintf128 (_Float128 __x) throw (); extern long long int __llrintf128 (_Float128 __x) throw (); + + + +extern long int lroundf128 (_Float128 __x) throw (); extern long int __lroundf128 (_Float128 __x) throw (); +__extension__ +extern long long int llroundf128 (_Float128 __x) throw (); extern long long int __llroundf128 (_Float128 __x) throw (); + + + +extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern _Float128 fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); + + + + +extern _Float128 roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () + ; + + +extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf128 (_Float128 __x, _Float128 __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf128 (_Float128 __x, _Float128 __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) throw (); + + +extern _Float128 getpayloadf128 (const _Float128 *__x) throw (); extern _Float128 __getpayloadf128 (const _Float128 *__x) throw (); + + +extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) throw (); + + +extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) throw (); +# 424 "/usr/include/math.h" 2 3 4 +# 440 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x acosf32x (_Float32x __x) throw (); extern _Float32x __acosf32x (_Float32x __x) throw (); + +extern _Float32x asinf32x (_Float32x __x) throw (); extern _Float32x __asinf32x (_Float32x __x) throw (); + +extern _Float32x atanf32x (_Float32x __x) throw (); extern _Float32x __atanf32x (_Float32x __x) throw (); + +extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) throw (); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) throw (); + + + extern _Float32x cosf32x (_Float32x __x) throw (); extern _Float32x __cosf32x (_Float32x __x) throw (); + + extern _Float32x sinf32x (_Float32x __x) throw (); extern _Float32x __sinf32x (_Float32x __x) throw (); + +extern _Float32x tanf32x (_Float32x __x) throw (); extern _Float32x __tanf32x (_Float32x __x) throw (); + + + + +extern _Float32x coshf32x (_Float32x __x) throw (); extern _Float32x __coshf32x (_Float32x __x) throw (); + +extern _Float32x sinhf32x (_Float32x __x) throw (); extern _Float32x __sinhf32x (_Float32x __x) throw (); + +extern _Float32x tanhf32x (_Float32x __x) throw (); extern _Float32x __tanhf32x (_Float32x __x) throw (); + + + + extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw (); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw () + ; + + + + +extern _Float32x acoshf32x (_Float32x __x) throw (); extern _Float32x __acoshf32x (_Float32x __x) throw (); + +extern _Float32x asinhf32x (_Float32x __x) throw (); extern _Float32x __asinhf32x (_Float32x __x) throw (); + +extern _Float32x atanhf32x (_Float32x __x) throw (); extern _Float32x __atanhf32x (_Float32x __x) throw (); + + + + + + extern _Float32x expf32x (_Float32x __x) throw (); extern _Float32x __expf32x (_Float32x __x) throw (); + + +extern _Float32x frexpf32x (_Float32x __x, int *__exponent) throw (); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) throw (); + + +extern _Float32x ldexpf32x (_Float32x __x, int __exponent) throw (); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) throw (); + + + extern _Float32x logf32x (_Float32x __x) throw (); extern _Float32x __logf32x (_Float32x __x) throw (); + + +extern _Float32x log10f32x (_Float32x __x) throw (); extern _Float32x __log10f32x (_Float32x __x) throw (); + + +extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) throw (); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float32x exp10f32x (_Float32x __x) throw (); extern _Float32x __exp10f32x (_Float32x __x) throw (); + + + + +extern _Float32x expm1f32x (_Float32x __x) throw (); extern _Float32x __expm1f32x (_Float32x __x) throw (); + + +extern _Float32x log1pf32x (_Float32x __x) throw (); extern _Float32x __log1pf32x (_Float32x __x) throw (); + + +extern _Float32x logbf32x (_Float32x __x) throw (); extern _Float32x __logbf32x (_Float32x __x) throw (); + + + + +extern _Float32x exp2f32x (_Float32x __x) throw (); extern _Float32x __exp2f32x (_Float32x __x) throw (); + + +extern _Float32x log2f32x (_Float32x __x) throw (); extern _Float32x __log2f32x (_Float32x __x) throw (); + + + + + + + extern _Float32x powf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32x sqrtf32x (_Float32x __x) throw (); extern _Float32x __sqrtf32x (_Float32x __x) throw (); + + + +extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) throw (); + + + + +extern _Float32x cbrtf32x (_Float32x __x) throw (); extern _Float32x __cbrtf32x (_Float32x __x) throw (); + + + + + + +extern _Float32x ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + +extern _Float32x fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + +extern _Float32x floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + +extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + + + +extern _Float32x nanf32x (const char *__tagb) throw (); extern _Float32x __nanf32x (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x j0f32x (_Float32x) throw (); extern _Float32x __j0f32x (_Float32x) throw (); +extern _Float32x j1f32x (_Float32x) throw (); extern _Float32x __j1f32x (_Float32x) throw (); +extern _Float32x jnf32x (int, _Float32x) throw (); extern _Float32x __jnf32x (int, _Float32x) throw (); +extern _Float32x y0f32x (_Float32x) throw (); extern _Float32x __y0f32x (_Float32x) throw (); +extern _Float32x y1f32x (_Float32x) throw (); extern _Float32x __y1f32x (_Float32x) throw (); +extern _Float32x ynf32x (int, _Float32x) throw (); extern _Float32x __ynf32x (int, _Float32x) throw (); + + + + + +extern _Float32x erff32x (_Float32x) throw (); extern _Float32x __erff32x (_Float32x) throw (); +extern _Float32x erfcf32x (_Float32x) throw (); extern _Float32x __erfcf32x (_Float32x) throw (); +extern _Float32x lgammaf32x (_Float32x) throw (); extern _Float32x __lgammaf32x (_Float32x) throw (); + + + + +extern _Float32x tgammaf32x (_Float32x) throw (); extern _Float32x __tgammaf32x (_Float32x) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) throw (); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) throw (); + + + + + + +extern _Float32x rintf32x (_Float32x __x) throw (); extern _Float32x __rintf32x (_Float32x __x) throw (); + + +extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) throw (); + + + + + + +extern _Float32x nextdownf32x (_Float32x __x) throw (); extern _Float32x __nextdownf32x (_Float32x __x) throw (); + +extern _Float32x nextupf32x (_Float32x __x) throw (); extern _Float32x __nextupf32x (_Float32x __x) throw (); + + + +extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) throw (); + + + +extern _Float32x scalbnf32x (_Float32x __x, int __n) throw (); extern _Float32x __scalbnf32x (_Float32x __x, int __n) throw (); + + + +extern int ilogbf32x (_Float32x __x) throw (); extern int __ilogbf32x (_Float32x __x) throw (); + + + + +extern long int llogbf32x (_Float32x __x) throw (); extern long int __llogbf32x (_Float32x __x) throw (); + + + + +extern _Float32x scalblnf32x (_Float32x __x, long int __n) throw (); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) throw (); + + + +extern _Float32x nearbyintf32x (_Float32x __x) throw (); extern _Float32x __nearbyintf32x (_Float32x __x) throw (); + + + +extern _Float32x roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + + +extern _Float32x truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + + + +extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); + + + + + + +extern long int lrintf32x (_Float32x __x) throw (); extern long int __lrintf32x (_Float32x __x) throw (); +__extension__ +extern long long int llrintf32x (_Float32x __x) throw (); extern long long int __llrintf32x (_Float32x __x) throw (); + + + +extern long int lroundf32x (_Float32x __x) throw (); extern long int __lroundf32x (_Float32x __x) throw (); +__extension__ +extern long long int llroundf32x (_Float32x __x) throw (); extern long long int __llroundf32x (_Float32x __x) throw (); + + + +extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern _Float32x fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); + + + + +extern _Float32x roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () + ; + + +extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf32x (_Float32x __x, _Float32x __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf32x (_Float32x __x, _Float32x __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) throw (); + + +extern _Float32x getpayloadf32x (const _Float32x *__x) throw (); extern _Float32x __getpayloadf32x (const _Float32x *__x) throw (); + + +extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) throw (); + + +extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) throw (); +# 441 "/usr/include/math.h" 2 3 4 +# 457 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls.h" 1 3 4 +# 53 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x acosf64x (_Float64x __x) throw (); extern _Float64x __acosf64x (_Float64x __x) throw (); + +extern _Float64x asinf64x (_Float64x __x) throw (); extern _Float64x __asinf64x (_Float64x __x) throw (); + +extern _Float64x atanf64x (_Float64x __x) throw (); extern _Float64x __atanf64x (_Float64x __x) throw (); + +extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) throw (); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) throw (); + + + extern _Float64x cosf64x (_Float64x __x) throw (); extern _Float64x __cosf64x (_Float64x __x) throw (); + + extern _Float64x sinf64x (_Float64x __x) throw (); extern _Float64x __sinf64x (_Float64x __x) throw (); + +extern _Float64x tanf64x (_Float64x __x) throw (); extern _Float64x __tanf64x (_Float64x __x) throw (); + + + + +extern _Float64x coshf64x (_Float64x __x) throw (); extern _Float64x __coshf64x (_Float64x __x) throw (); + +extern _Float64x sinhf64x (_Float64x __x) throw (); extern _Float64x __sinhf64x (_Float64x __x) throw (); + +extern _Float64x tanhf64x (_Float64x __x) throw (); extern _Float64x __tanhf64x (_Float64x __x) throw (); + + + + extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw (); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw () + ; + + + + +extern _Float64x acoshf64x (_Float64x __x) throw (); extern _Float64x __acoshf64x (_Float64x __x) throw (); + +extern _Float64x asinhf64x (_Float64x __x) throw (); extern _Float64x __asinhf64x (_Float64x __x) throw (); + +extern _Float64x atanhf64x (_Float64x __x) throw (); extern _Float64x __atanhf64x (_Float64x __x) throw (); + + + + + + extern _Float64x expf64x (_Float64x __x) throw (); extern _Float64x __expf64x (_Float64x __x) throw (); + + +extern _Float64x frexpf64x (_Float64x __x, int *__exponent) throw (); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) throw (); + + +extern _Float64x ldexpf64x (_Float64x __x, int __exponent) throw (); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) throw (); + + + extern _Float64x logf64x (_Float64x __x) throw (); extern _Float64x __logf64x (_Float64x __x) throw (); + + +extern _Float64x log10f64x (_Float64x __x) throw (); extern _Float64x __log10f64x (_Float64x __x) throw (); + + +extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) throw (); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + +extern _Float64x exp10f64x (_Float64x __x) throw (); extern _Float64x __exp10f64x (_Float64x __x) throw (); + + + + +extern _Float64x expm1f64x (_Float64x __x) throw (); extern _Float64x __expm1f64x (_Float64x __x) throw (); + + +extern _Float64x log1pf64x (_Float64x __x) throw (); extern _Float64x __log1pf64x (_Float64x __x) throw (); + + +extern _Float64x logbf64x (_Float64x __x) throw (); extern _Float64x __logbf64x (_Float64x __x) throw (); + + + + +extern _Float64x exp2f64x (_Float64x __x) throw (); extern _Float64x __exp2f64x (_Float64x __x) throw (); + + +extern _Float64x log2f64x (_Float64x __x) throw (); extern _Float64x __log2f64x (_Float64x __x) throw (); + + + + + + + extern _Float64x powf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64x sqrtf64x (_Float64x __x) throw (); extern _Float64x __sqrtf64x (_Float64x __x) throw (); + + + +extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) throw (); + + + + +extern _Float64x cbrtf64x (_Float64x __x) throw (); extern _Float64x __cbrtf64x (_Float64x __x) throw (); + + + + + + +extern _Float64x ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + +extern _Float64x fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + +extern _Float64x floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + +extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) throw (); +# 196 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + + + +extern _Float64x nanf64x (const char *__tagb) throw (); extern _Float64x __nanf64x (const char *__tagb) throw (); +# 217 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x j0f64x (_Float64x) throw (); extern _Float64x __j0f64x (_Float64x) throw (); +extern _Float64x j1f64x (_Float64x) throw (); extern _Float64x __j1f64x (_Float64x) throw (); +extern _Float64x jnf64x (int, _Float64x) throw (); extern _Float64x __jnf64x (int, _Float64x) throw (); +extern _Float64x y0f64x (_Float64x) throw (); extern _Float64x __y0f64x (_Float64x) throw (); +extern _Float64x y1f64x (_Float64x) throw (); extern _Float64x __y1f64x (_Float64x) throw (); +extern _Float64x ynf64x (int, _Float64x) throw (); extern _Float64x __ynf64x (int, _Float64x) throw (); + + + + + +extern _Float64x erff64x (_Float64x) throw (); extern _Float64x __erff64x (_Float64x) throw (); +extern _Float64x erfcf64x (_Float64x) throw (); extern _Float64x __erfcf64x (_Float64x) throw (); +extern _Float64x lgammaf64x (_Float64x) throw (); extern _Float64x __lgammaf64x (_Float64x) throw (); + + + + +extern _Float64x tgammaf64x (_Float64x) throw (); extern _Float64x __tgammaf64x (_Float64x) throw (); +# 249 "/usr/include/bits/mathcalls.h" 3 4 +extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) throw (); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) throw (); + + + + + + +extern _Float64x rintf64x (_Float64x __x) throw (); extern _Float64x __rintf64x (_Float64x __x) throw (); + + +extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) throw (); + + + + + + +extern _Float64x nextdownf64x (_Float64x __x) throw (); extern _Float64x __nextdownf64x (_Float64x __x) throw (); + +extern _Float64x nextupf64x (_Float64x __x) throw (); extern _Float64x __nextupf64x (_Float64x __x) throw (); + + + +extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) throw (); + + + +extern _Float64x scalbnf64x (_Float64x __x, int __n) throw (); extern _Float64x __scalbnf64x (_Float64x __x, int __n) throw (); + + + +extern int ilogbf64x (_Float64x __x) throw (); extern int __ilogbf64x (_Float64x __x) throw (); + + + + +extern long int llogbf64x (_Float64x __x) throw (); extern long int __llogbf64x (_Float64x __x) throw (); + + + + +extern _Float64x scalblnf64x (_Float64x __x, long int __n) throw (); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) throw (); + + + +extern _Float64x nearbyintf64x (_Float64x __x) throw (); extern _Float64x __nearbyintf64x (_Float64x __x) throw (); + + + +extern _Float64x roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + + +extern _Float64x truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + + + +extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); + + + + + + +extern long int lrintf64x (_Float64x __x) throw (); extern long int __lrintf64x (_Float64x __x) throw (); +__extension__ +extern long long int llrintf64x (_Float64x __x) throw (); extern long long int __llrintf64x (_Float64x __x) throw (); + + + +extern long int lroundf64x (_Float64x __x) throw (); extern long int __lroundf64x (_Float64x __x) throw (); +__extension__ +extern long long int llroundf64x (_Float64x __x) throw (); extern long long int __llroundf64x (_Float64x __x) throw (); + + + +extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern _Float64x fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); + + + + +extern _Float64x roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); + + + +extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + + +extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + + + +extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () + ; + + +extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); + + +extern int totalorderf64x (_Float64x __x, _Float64x __y) throw () + __attribute__ ((__const__)); + + +extern int totalordermagf64x (_Float64x __x, _Float64x __y) throw () + __attribute__ ((__const__)); + + +extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) throw (); + + +extern _Float64x getpayloadf64x (const _Float64x *__x) throw (); extern _Float64x __getpayloadf64x (const _Float64x *__x) throw (); + + +extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) throw (); + + +extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) throw (); +# 458 "/usr/include/math.h" 2 3 4 +# 503 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern float fadd (double __x, double __y) throw (); + + +extern float fdiv (double __x, double __y) throw (); + + +extern float fmul (double __x, double __y) throw (); + + +extern float fsub (double __x, double __y) throw (); +# 504 "/usr/include/math.h" 2 3 4 +# 517 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern float faddl (long double __x, long double __y) throw (); + + +extern float fdivl (long double __x, long double __y) throw (); + + +extern float fmull (long double __x, long double __y) throw (); + + +extern float fsubl (long double __x, long double __y) throw (); +# 518 "/usr/include/math.h" 2 3 4 +# 537 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern double daddl (long double __x, long double __y) throw (); + + +extern double ddivl (long double __x, long double __y) throw (); + + +extern double dmull (long double __x, long double __y) throw (); + + +extern double dsubl (long double __x, long double __y) throw (); +# 538 "/usr/include/math.h" 2 3 4 +# 616 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) throw (); + + +extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) throw (); +# 617 "/usr/include/math.h" 2 3 4 +# 626 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) throw (); +# 627 "/usr/include/math.h" 2 3 4 +# 636 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) throw (); +# 637 "/usr/include/math.h" 2 3 4 +# 646 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) throw (); +# 647 "/usr/include/math.h" 2 3 4 +# 666 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) throw (); + + +extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) throw (); +# 667 "/usr/include/math.h" 2 3 4 +# 676 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) throw (); +# 677 "/usr/include/math.h" 2 3 4 +# 686 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) throw (); +# 687 "/usr/include/math.h" 2 3 4 +# 706 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) throw (); + + +extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) throw (); +# 707 "/usr/include/math.h" 2 3 4 +# 716 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) throw (); +# 717 "/usr/include/math.h" 2 3 4 +# 736 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/mathcalls-narrow.h" 1 3 4 +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 4 +extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) throw (); + + +extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) throw (); +# 737 "/usr/include/math.h" 2 3 4 +# 773 "/usr/include/math.h" 3 4 +extern int signgam; +# 853 "/usr/include/math.h" 3 4 +enum + { + FP_NAN = + + 0, + FP_INFINITE = + + 1, + FP_ZERO = + + 2, + FP_SUBNORMAL = + + 3, + FP_NORMAL = + + 4 + }; +# 973 "/usr/include/math.h" 3 4 +# 1 "/usr/include/bits/iscanonical.h" 1 3 4 +# 26 "/usr/include/bits/iscanonical.h" 3 4 +extern int __iscanonicall (long double __x) + throw () __attribute__ ((__const__)); +# 49 "/usr/include/bits/iscanonical.h" 3 4 +extern "C++" { +inline int iscanonical (float __val) { return ((void) (__typeof (__val)) (__val), 1); } +inline int iscanonical (double __val) { return ((void) (__typeof (__val)) (__val), 1); } +inline int iscanonical (long double __val) { return __iscanonicall (__val); } + +inline int iscanonical (_Float128 __val) { return ((void) (__typeof (__val)) (__val), 1); } + +} +# 974 "/usr/include/math.h" 2 3 4 +# 985 "/usr/include/math.h" 3 4 +extern "C++" { +inline int issignaling (float __val) { return __issignalingf (__val); } +inline int issignaling (double __val) { return __issignaling (__val); } +inline int +issignaling (long double __val) +{ + + + + return __issignalingl (__val); + +} + + + +inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); } + +} +# 1016 "/usr/include/math.h" 3 4 +extern "C++" { +# 1047 "/usr/include/math.h" 3 4 +template inline bool +iszero (__T __val) +{ + return __val == 0; +} + +} +# 1498 "/usr/include/math.h" 3 4 +extern "C++" { +template struct __iseqsig_type; + +template<> struct __iseqsig_type +{ + static int __call (float __x, float __y) throw () + { + return __iseqsigf (__x, __y); + } +}; + +template<> struct __iseqsig_type +{ + static int __call (double __x, double __y) throw () + { + return __iseqsig (__x, __y); + } +}; + +template<> struct __iseqsig_type +{ + static int __call (long double __x, long double __y) throw () + { + + return __iseqsigl (__x, __y); + + + + } +}; + + + + +template<> struct __iseqsig_type<_Float128> +{ + static int __call (_Float128 __x, _Float128 __y) throw () + { + return __iseqsigf128 (__x, __y); + } +}; + + +template +inline int +iseqsig (_T1 __x, _T2 __y) throw () +{ + + typedef decltype (((__x) + (__y) + 0.0f)) _T3; + + + + return __iseqsig_type<_T3>::__call (__x, __y); +} + +} + + + + +} +# 46 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 1 3 +# 33 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 + +# 34 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 + + + + +# 1 "/usr/include/stdlib.h" 1 3 4 +# 25 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/bits/libc-header-start.h" 1 3 4 +# 26 "/usr/include/stdlib.h" 2 3 4 + + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 32 "/usr/include/stdlib.h" 2 3 4 + +extern "C" { + + + + + +# 1 "/usr/include/bits/waitflags.h" 1 3 4 +# 40 "/usr/include/stdlib.h" 2 3 4 +# 1 "/usr/include/bits/waitstatus.h" 1 3 4 +# 41 "/usr/include/stdlib.h" 2 3 4 +# 58 "/usr/include/stdlib.h" 3 4 +typedef struct + { + int quot; + int rem; + } div_t; + + + +typedef struct + { + long int quot; + long int rem; + } ldiv_t; + + + + + +__extension__ typedef struct + { + long long int quot; + long long int rem; + } lldiv_t; +# 97 "/usr/include/stdlib.h" 3 4 +extern size_t __ctype_get_mb_cur_max (void) throw () ; + + + +extern double atof (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern int atoi (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int atol (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + +__extension__ extern long long int atoll (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern double strtod (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern float strtof (const char *__restrict __nptr, + char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))); + +extern long double strtold (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); +# 140 "/usr/include/stdlib.h" 3 4 +extern _Float32 strtof32 (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float64 strtof64 (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float128 strtof128 (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float32x strtof32x (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern _Float64x strtof64x (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); +# 176 "/usr/include/stdlib.h" 3 4 +extern long int strtol (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +extern unsigned long int strtoul (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + +__extension__ +extern long long int strtoq (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +__extension__ +extern unsigned long long int strtouq (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + + +__extension__ +extern long long int strtoll (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +__extension__ +extern unsigned long long int strtoull (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + + +extern int strfromd (char *__dest, size_t __size, const char *__format, + double __f) + throw () __attribute__ ((__nonnull__ (3))); + +extern int strfromf (char *__dest, size_t __size, const char *__format, + float __f) + throw () __attribute__ ((__nonnull__ (3))); + +extern int strfroml (char *__dest, size_t __size, const char *__format, + long double __f) + throw () __attribute__ ((__nonnull__ (3))); +# 232 "/usr/include/stdlib.h" 3 4 +extern int strfromf32 (char *__dest, size_t __size, const char * __format, + _Float32 __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf64 (char *__dest, size_t __size, const char * __format, + _Float64 __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf128 (char *__dest, size_t __size, const char * __format, + _Float128 __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf32x (char *__dest, size_t __size, const char * __format, + _Float32x __f) + throw () __attribute__ ((__nonnull__ (3))); + + + +extern int strfromf64x (char *__dest, size_t __size, const char * __format, + _Float64x __f) + throw () __attribute__ ((__nonnull__ (3))); +# 274 "/usr/include/stdlib.h" 3 4 +extern long int strtol_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); + +extern unsigned long int strtoul_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern long long int strtoll_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern unsigned long long int strtoull_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +extern double strtod_l (const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + +extern float strtof_l (const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + +extern long double strtold_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); +# 316 "/usr/include/stdlib.h" 3 4 +extern _Float32 strtof32_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float64 strtof64_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float128 strtof128_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float32x strtof32x_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern _Float64x strtof64x_l (const char *__restrict __nptr, + char **__restrict __endptr, + locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); +# 385 "/usr/include/stdlib.h" 3 4 +extern char *l64a (long int __n) throw () ; + + +extern long int a64l (const char *__s) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + +# 1 "/usr/include/sys/types.h" 1 3 4 +# 27 "/usr/include/sys/types.h" 3 4 +extern "C" { + + + + + +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; + + +typedef __loff_t loff_t; + + + + +typedef __ino_t ino_t; + + + + + + +typedef __ino64_t ino64_t; + + + + +typedef __dev_t dev_t; + + + + +typedef __gid_t gid_t; + + + + +typedef __mode_t mode_t; + + + + +typedef __nlink_t nlink_t; + + + + +typedef __uid_t uid_t; + + + + + +typedef __off_t off_t; + + + + + + +typedef __off64_t off64_t; +# 103 "/usr/include/sys/types.h" 3 4 +typedef __id_t id_t; + + + + +typedef __ssize_t ssize_t; + + + + + +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; + + + + + +typedef __key_t key_t; +# 134 "/usr/include/sys/types.h" 3 4 +typedef __useconds_t useconds_t; + + + +typedef __suseconds_t suseconds_t; + + + + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 145 "/usr/include/sys/types.h" 2 3 4 + + + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; + + + + +# 1 "/usr/include/bits/stdint-intn.h" 1 3 4 +# 24 "/usr/include/bits/stdint-intn.h" 3 4 +typedef __int8_t int8_t; +typedef __int16_t int16_t; +typedef __int32_t int32_t; +typedef __int64_t int64_t; +# 156 "/usr/include/sys/types.h" 2 3 4 + + +typedef __uint8_t u_int8_t; +typedef __uint16_t u_int16_t; +typedef __uint32_t u_int32_t; +typedef __uint64_t u_int64_t; + + +typedef int register_t __attribute__ ((__mode__ (__word__))); +# 176 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/endian.h" 1 3 4 +# 36 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/bits/endian.h" 1 3 4 +# 37 "/usr/include/endian.h" 2 3 4 +# 60 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/bits/byteswap.h" 1 3 4 +# 33 "/usr/include/bits/byteswap.h" 3 4 +static __inline __uint16_t +__bswap_16 (__uint16_t __bsx) +{ + + return __builtin_bswap16 (__bsx); + + + +} + + + + + + +static __inline __uint32_t +__bswap_32 (__uint32_t __bsx) +{ + + return __builtin_bswap32 (__bsx); + + + +} +# 69 "/usr/include/bits/byteswap.h" 3 4 +__extension__ static __inline __uint64_t +__bswap_64 (__uint64_t __bsx) +{ + + return __builtin_bswap64 (__bsx); + + + +} +# 61 "/usr/include/endian.h" 2 3 4 +# 1 "/usr/include/bits/uintn-identity.h" 1 3 4 +# 32 "/usr/include/bits/uintn-identity.h" 3 4 +static __inline __uint16_t +__uint16_identity (__uint16_t __x) +{ + return __x; +} + +static __inline __uint32_t +__uint32_identity (__uint32_t __x) +{ + return __x; +} + +static __inline __uint64_t +__uint64_identity (__uint64_t __x) +{ + return __x; +} +# 62 "/usr/include/endian.h" 2 3 4 +# 177 "/usr/include/sys/types.h" 2 3 4 + + +# 1 "/usr/include/sys/select.h" 1 3 4 +# 30 "/usr/include/sys/select.h" 3 4 +# 1 "/usr/include/bits/select.h" 1 3 4 +# 31 "/usr/include/sys/select.h" 2 3 4 + + +# 1 "/usr/include/bits/types/sigset_t.h" 1 3 4 + + + +# 1 "/usr/include/bits/types/__sigset_t.h" 1 3 4 + + + + +typedef struct +{ + unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; +} __sigset_t; +# 5 "/usr/include/bits/types/sigset_t.h" 2 3 4 + + +typedef __sigset_t sigset_t; +# 34 "/usr/include/sys/select.h" 2 3 4 +# 49 "/usr/include/sys/select.h" 3 4 +typedef long int __fd_mask; +# 59 "/usr/include/sys/select.h" 3 4 +typedef struct + { + + + + __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; + + + + + + } fd_set; + + + + + + +typedef __fd_mask fd_mask; +# 91 "/usr/include/sys/select.h" 3 4 +extern "C" { +# 101 "/usr/include/sys/select.h" 3 4 +extern int select (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout); +# 113 "/usr/include/sys/select.h" 3 4 +extern int pselect (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + const struct timespec *__restrict __timeout, + const __sigset_t *__restrict __sigmask); +# 126 "/usr/include/sys/select.h" 3 4 +} +# 180 "/usr/include/sys/types.h" 2 3 4 + + + + + +typedef __blksize_t blksize_t; + + + + + + +typedef __blkcnt_t blkcnt_t; + + + +typedef __fsblkcnt_t fsblkcnt_t; + + + +typedef __fsfilcnt_t fsfilcnt_t; +# 219 "/usr/include/sys/types.h" 3 4 +typedef __blkcnt64_t blkcnt64_t; +typedef __fsblkcnt64_t fsblkcnt64_t; +typedef __fsfilcnt64_t fsfilcnt64_t; + + + + + +# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 +# 23 "/usr/include/bits/pthreadtypes.h" 3 4 +# 1 "/usr/include/bits/thread-shared-types.h" 1 3 4 +# 77 "/usr/include/bits/thread-shared-types.h" 3 4 +# 1 "/usr/include/bits/pthreadtypes-arch.h" 1 3 4 +# 22 "/usr/include/bits/pthreadtypes-arch.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 23 "/usr/include/bits/pthreadtypes-arch.h" 2 3 4 +# 51 "/usr/include/bits/pthreadtypes-arch.h" 3 4 +struct __pthread_rwlock_arch_t +{ + unsigned int __readers; + unsigned int __writers; + unsigned int __wrphase_futex; + unsigned int __writers_futex; + unsigned int __pad3; + unsigned int __pad4; + + int __cur_writer; + int __shared; + unsigned char __rwelision; + unsigned char __pad1[7]; + unsigned long int __pad2; + + + unsigned int __flags; +# 79 "/usr/include/bits/pthreadtypes-arch.h" 3 4 +}; +# 78 "/usr/include/bits/thread-shared-types.h" 2 3 4 + + + + +typedef struct __pthread_internal_list +{ + struct __pthread_internal_list *__prev; + struct __pthread_internal_list *__next; +} __pthread_list_t; +# 118 "/usr/include/bits/thread-shared-types.h" 3 4 +struct __pthread_mutex_s +{ + int __lock ; + unsigned int __count; + int __owner; + + unsigned int __nusers; +# 148 "/usr/include/bits/thread-shared-types.h" 3 4 + int __kind; + + + + + + short __spins; short __elision; + __pthread_list_t __list; +# 165 "/usr/include/bits/thread-shared-types.h" 3 4 + +}; + + + + +struct __pthread_cond_s +{ + __extension__ union + { + __extension__ unsigned long long int __wseq; + struct + { + unsigned int __low; + unsigned int __high; + } __wseq32; + }; + __extension__ union + { + __extension__ unsigned long long int __g1_start; + struct + { + unsigned int __low; + unsigned int __high; + } __g1_start32; + }; + unsigned int __g_refs[2] ; + unsigned int __g_size[2]; + unsigned int __g1_orig_size; + unsigned int __wrefs; + unsigned int __g_signals[2]; +}; +# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4 + + + +typedef unsigned long int pthread_t; + + + + +typedef union +{ + char __size[4]; + int __align; +} pthread_mutexattr_t; + + + + +typedef union +{ + char __size[4]; + int __align; +} pthread_condattr_t; + + + +typedef unsigned int pthread_key_t; + + + +typedef int pthread_once_t; + + +union pthread_attr_t +{ + char __size[56]; + long int __align; +}; + +typedef union pthread_attr_t pthread_attr_t; + + + + +typedef union +{ + struct __pthread_mutex_s __data; + char __size[40]; + long int __align; +} pthread_mutex_t; + + +typedef union +{ + struct __pthread_cond_s __data; + char __size[48]; + __extension__ long long int __align; +} pthread_cond_t; + + + + + +typedef union +{ + struct __pthread_rwlock_arch_t __data; + char __size[56]; + long int __align; +} pthread_rwlock_t; + +typedef union +{ + char __size[8]; + long int __align; +} pthread_rwlockattr_t; + + + + + +typedef volatile int pthread_spinlock_t; + + + + +typedef union +{ + char __size[32]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_barrierattr_t; +# 228 "/usr/include/sys/types.h" 2 3 4 + + +} +# 395 "/usr/include/stdlib.h" 2 3 4 + + + + + + +extern long int random (void) throw (); + + +extern void srandom (unsigned int __seed) throw (); + + + + + +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); + + + +extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +struct random_data + { + int32_t *fptr; + int32_t *rptr; + int32_t *state; + int rand_type; + int rand_deg; + int rand_sep; + int32_t *end_ptr; + }; + +extern int random_r (struct random_data *__restrict __buf, + int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) + throw () __attribute__ ((__nonnull__ (2))); + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) + throw () __attribute__ ((__nonnull__ (2, 4))); + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int rand (void) throw (); + +extern void srand (unsigned int __seed) throw (); + + + +extern int rand_r (unsigned int *__seed) throw (); + + + + + + + +extern double drand48 (void) throw (); +extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); + + +extern long int lrand48 (void) throw (); +extern long int nrand48 (unsigned short int __xsubi[3]) + throw () __attribute__ ((__nonnull__ (1))); + + +extern long int mrand48 (void) throw (); +extern long int jrand48 (unsigned short int __xsubi[3]) + throw () __attribute__ ((__nonnull__ (1))); + + +extern void srand48 (long int __seedval) throw (); +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) + throw () __attribute__ ((__nonnull__ (1))); +extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); + + + + + +struct drand48_data + { + unsigned short int __x[3]; + unsigned short int __old_x[3]; + unsigned short int __c; + unsigned short int __init; + __extension__ unsigned long long int __a; + + }; + + +extern int drand48_r (struct drand48_data *__restrict __buffer, + double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + throw () __attribute__ ((__nonnull__ (2))); + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ; + +extern void *calloc (size_t __nmemb, size_t __size) + throw () __attribute__ ((__malloc__)) ; + + + + + + +extern void *realloc (void *__ptr, size_t __size) + throw () __attribute__ ((__warn_unused_result__)); + + + + + + + +extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) + throw () __attribute__ ((__warn_unused_result__)); + + + +extern void free (void *__ptr) throw (); + + +# 1 "/usr/include/alloca.h" 1 3 4 +# 24 "/usr/include/alloca.h" 3 4 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 1 3 4 +# 25 "/usr/include/alloca.h" 2 3 4 + +extern "C" { + + + + + +extern void *alloca (size_t __size) throw (); + + + + + +} +# 567 "/usr/include/stdlib.h" 2 3 4 + + + + + +extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ; + + + + +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + throw () __attribute__ ((__nonnull__ (1))) ; + + + + +extern void *aligned_alloc (size_t __alignment, size_t __size) + throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) ; + + + +extern void abort (void) throw () __attribute__ ((__noreturn__)); + + + +extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); + + + + +extern "C++" int at_quick_exit (void (*__func) (void)) + throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); +# 607 "/usr/include/stdlib.h" 3 4 +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) + throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern void exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + + +extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + + +extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + +extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) ; + + + + +extern char *secure_getenv (const char *__name) + throw () __attribute__ ((__nonnull__ (1))) ; + + + + + + +extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern int setenv (const char *__name, const char *__value, int __replace) + throw () __attribute__ ((__nonnull__ (2))); + + +extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))); + + + + + + +extern int clearenv (void) throw (); +# 672 "/usr/include/stdlib.h" 3 4 +extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); +# 685 "/usr/include/stdlib.h" 3 4 +extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 695 "/usr/include/stdlib.h" 3 4 +extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 707 "/usr/include/stdlib.h" 3 4 +extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ; +# 717 "/usr/include/stdlib.h" 3 4 +extern int mkstemps64 (char *__template, int __suffixlen) + __attribute__ ((__nonnull__ (1))) ; +# 728 "/usr/include/stdlib.h" 3 4 +extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ; +# 739 "/usr/include/stdlib.h" 3 4 +extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; +# 749 "/usr/include/stdlib.h" 3 4 +extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; +# 759 "/usr/include/stdlib.h" 3 4 +extern int mkostemps (char *__template, int __suffixlen, int __flags) + __attribute__ ((__nonnull__ (1))) ; +# 771 "/usr/include/stdlib.h" 3 4 +extern int mkostemps64 (char *__template, int __suffixlen, int __flags) + __attribute__ ((__nonnull__ (1))) ; +# 781 "/usr/include/stdlib.h" 3 4 +extern int system (const char *__command) ; + + + + + +extern char *canonicalize_file_name (const char *__name) + throw () __attribute__ ((__nonnull__ (1))) ; +# 797 "/usr/include/stdlib.h" 3 4 +extern char *realpath (const char *__restrict __name, + char *__restrict __resolved) throw () ; + + + + + + +typedef int (*__compar_fn_t) (const void *, const void *); + + +typedef __compar_fn_t comparison_fn_t; + + + +typedef int (*__compar_d_fn_t) (const void *, const void *, void *); + + + + +extern void *bsearch (const void *__key, const void *__base, + size_t __nmemb, size_t __size, __compar_fn_t __compar) + __attribute__ ((__nonnull__ (1, 2, 5))) ; + + + + + + + +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); + +extern void qsort_r (void *__base, size_t __nmemb, size_t __size, + __compar_d_fn_t __compar, void *__arg) + __attribute__ ((__nonnull__ (1, 4))); + + + + +extern int abs (int __x) throw () __attribute__ ((__const__)) ; +extern long int labs (long int __x) throw () __attribute__ ((__const__)) ; + + +__extension__ extern long long int llabs (long long int __x) + throw () __attribute__ ((__const__)) ; + + + + + + +extern div_t div (int __numer, int __denom) + throw () __attribute__ ((__const__)) ; +extern ldiv_t ldiv (long int __numer, long int __denom) + throw () __attribute__ ((__const__)) ; + + +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + throw () __attribute__ ((__const__)) ; +# 869 "/usr/include/stdlib.h" 3 4 +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *gcvt (double __value, int __ndigit, char *__buf) + throw () __attribute__ ((__nonnull__ (3))) ; + + + + +extern char *qecvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + throw () __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qfcvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + throw () __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qgcvt (long double __value, int __ndigit, char *__buf) + throw () __attribute__ ((__nonnull__ (3))) ; + + + + +extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); +extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); + +extern int qecvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + throw () __attribute__ ((__nonnull__ (3, 4, 5))); +extern int qfcvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + throw () __attribute__ ((__nonnull__ (3, 4, 5))); + + + + + +extern int mblen (const char *__s, size_t __n) throw (); + + +extern int mbtowc (wchar_t *__restrict __pwc, + const char *__restrict __s, size_t __n) throw (); + + +extern int wctomb (char *__s, wchar_t __wchar) throw (); + + + +extern size_t mbstowcs (wchar_t *__restrict __pwcs, + const char *__restrict __s, size_t __n) throw (); + +extern size_t wcstombs (char *__restrict __s, + const wchar_t *__restrict __pwcs, size_t __n) + throw (); + + + + + + + +extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) ; +# 954 "/usr/include/stdlib.h" 3 4 +extern int getsubopt (char **__restrict __optionp, + char *const *__restrict __tokens, + char **__restrict __valuep) + throw () __attribute__ ((__nonnull__ (1, 2, 3))) ; + + + + + + + +extern int posix_openpt (int __oflag) ; + + + + + + + +extern int grantpt (int __fd) throw (); + + + +extern int unlockpt (int __fd) throw (); + + + + +extern char *ptsname (int __fd) throw () ; + + + + + + +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) + throw () __attribute__ ((__nonnull__ (2))); + + +extern int getpt (void); + + + + + + +extern int getloadavg (double __loadavg[], int __nelem) + throw () __attribute__ ((__nonnull__ (1))); +# 1010 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/bits/stdlib-float.h" 1 3 4 +# 1011 "/usr/include/stdlib.h" 2 3 4 +# 1020 "/usr/include/stdlib.h" 3 4 +} +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 2 3 + + + + + + + +extern "C++" +{ +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + using ::abs; + + + inline long + abs(long __i) { return __builtin_labs(__i); } + + + + inline long long + abs(long long __x) { return __builtin_llabs (__x); } +# 70 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 + inline constexpr double + abs(double __x) + { return __builtin_fabs(__x); } + + inline constexpr float + abs(float __x) + { return __builtin_fabsf(__x); } + + inline constexpr long double + abs(long double __x) + { return __builtin_fabsl(__x); } + + + + inline constexpr __int128 + abs(__int128 __x) { return __x >= 0 ? __x : -__x; } +# 101 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 + inline constexpr + __ieee128 + abs(__ieee128 __x) + { return __x < 0 ? -__x : __x; } + + + +} +} +# 48 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 2 3 +# 77 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +extern "C++" +{ +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + using ::acos; + + + inline constexpr float + acos(float __x) + { return __builtin_acosf(__x); } + + inline constexpr long double + acos(long double __x) + { return __builtin_acosl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acos(_Tp __x) + { return __builtin_acos(__x); } + + using ::asin; + + + inline constexpr float + asin(float __x) + { return __builtin_asinf(__x); } + + inline constexpr long double + asin(long double __x) + { return __builtin_asinl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asin(_Tp __x) + { return __builtin_asin(__x); } + + using ::atan; + + + inline constexpr float + atan(float __x) + { return __builtin_atanf(__x); } + + inline constexpr long double + atan(long double __x) + { return __builtin_atanl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atan(_Tp __x) + { return __builtin_atan(__x); } + + using ::atan2; + + + inline constexpr float + atan2(float __y, float __x) + { return __builtin_atan2f(__y, __x); } + + inline constexpr long double + atan2(long double __y, long double __x) + { return __builtin_atan2l(__y, __x); } + + + template + inline constexpr + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + atan2(_Tp __y, _Up __x) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return atan2(__type(__y), __type(__x)); + } + + using ::ceil; + + + inline constexpr float + ceil(float __x) + { return __builtin_ceilf(__x); } + + inline constexpr long double + ceil(long double __x) + { return __builtin_ceill(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ceil(_Tp __x) + { return __builtin_ceil(__x); } + + using ::cos; + + + inline constexpr float + cos(float __x) + { return __builtin_cosf(__x); } + + inline constexpr long double + cos(long double __x) + { return __builtin_cosl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cos(_Tp __x) + { return __builtin_cos(__x); } + + using ::cosh; + + + inline constexpr float + cosh(float __x) + { return __builtin_coshf(__x); } + + inline constexpr long double + cosh(long double __x) + { return __builtin_coshl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cosh(_Tp __x) + { return __builtin_cosh(__x); } + + using ::exp; + + + inline constexpr float + exp(float __x) + { return __builtin_expf(__x); } + + inline constexpr long double + exp(long double __x) + { return __builtin_expl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp(_Tp __x) + { return __builtin_exp(__x); } + + using ::fabs; + + + inline constexpr float + fabs(float __x) + { return __builtin_fabsf(__x); } + + inline constexpr long double + fabs(long double __x) + { return __builtin_fabsl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + fabs(_Tp __x) + { return __builtin_fabs(__x); } + + using ::floor; + + + inline constexpr float + floor(float __x) + { return __builtin_floorf(__x); } + + inline constexpr long double + floor(long double __x) + { return __builtin_floorl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + floor(_Tp __x) + { return __builtin_floor(__x); } + + using ::fmod; + + + inline constexpr float + fmod(float __x, float __y) + { return __builtin_fmodf(__x, __y); } + + inline constexpr long double + fmod(long double __x, long double __y) + { return __builtin_fmodl(__x, __y); } + + + template + inline constexpr + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmod(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmod(__type(__x), __type(__y)); + } + + using ::frexp; + + + inline float + frexp(float __x, int* __exp) + { return __builtin_frexpf(__x, __exp); } + + inline long double + frexp(long double __x, int* __exp) + { return __builtin_frexpl(__x, __exp); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + frexp(_Tp __x, int* __exp) + { return __builtin_frexp(__x, __exp); } + + using ::ldexp; + + + inline constexpr float + ldexp(float __x, int __exp) + { return __builtin_ldexpf(__x, __exp); } + + inline constexpr long double + ldexp(long double __x, int __exp) + { return __builtin_ldexpl(__x, __exp); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ldexp(_Tp __x, int __exp) + { return __builtin_ldexp(__x, __exp); } + + using ::log; + + + inline constexpr float + log(float __x) + { return __builtin_logf(__x); } + + inline constexpr long double + log(long double __x) + { return __builtin_logl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log(_Tp __x) + { return __builtin_log(__x); } + + using ::log10; + + + inline constexpr float + log10(float __x) + { return __builtin_log10f(__x); } + + inline constexpr long double + log10(long double __x) + { return __builtin_log10l(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log10(_Tp __x) + { return __builtin_log10(__x); } + + using ::modf; + + + inline float + modf(float __x, float* __iptr) + { return __builtin_modff(__x, __iptr); } + + inline long double + modf(long double __x, long double* __iptr) + { return __builtin_modfl(__x, __iptr); } + + + using ::pow; + + + inline constexpr float + pow(float __x, float __y) + { return __builtin_powf(__x, __y); } + + inline constexpr long double + pow(long double __x, long double __y) + { return __builtin_powl(__x, __y); } +# 412 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + template + inline constexpr + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + pow(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return pow(__type(__x), __type(__y)); + } + + using ::sin; + + + inline constexpr float + sin(float __x) + { return __builtin_sinf(__x); } + + inline constexpr long double + sin(long double __x) + { return __builtin_sinl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sin(_Tp __x) + { return __builtin_sin(__x); } + + using ::sinh; + + + inline constexpr float + sinh(float __x) + { return __builtin_sinhf(__x); } + + inline constexpr long double + sinh(long double __x) + { return __builtin_sinhl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sinh(_Tp __x) + { return __builtin_sinh(__x); } + + using ::sqrt; + + + inline constexpr float + sqrt(float __x) + { return __builtin_sqrtf(__x); } + + inline constexpr long double + sqrt(long double __x) + { return __builtin_sqrtl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sqrt(_Tp __x) + { return __builtin_sqrt(__x); } + + using ::tan; + + + inline constexpr float + tan(float __x) + { return __builtin_tanf(__x); } + + inline constexpr long double + tan(long double __x) + { return __builtin_tanl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tan(_Tp __x) + { return __builtin_tan(__x); } + + using ::tanh; + + + inline constexpr float + tanh(float __x) + { return __builtin_tanhf(__x); } + + inline constexpr long double + tanh(long double __x) + { return __builtin_tanhl(__x); } + + + template + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tanh(_Tp __x) + { return __builtin_tanh(__x); } +# 536 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + constexpr int + fpclassify(float __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + constexpr int + fpclassify(double __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + constexpr int + fpclassify(long double __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + fpclassify(_Tp __x) + { return __x != 0 ? 4 : 2; } + + + + constexpr bool + isfinite(float __x) + { return __builtin_isfinite(__x); } + + constexpr bool + isfinite(double __x) + { return __builtin_isfinite(__x); } + + constexpr bool + isfinite(long double __x) + { return __builtin_isfinite(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isfinite(_Tp __x) + { return true; } + + + + constexpr bool + isinf(float __x) + { return __builtin_isinf(__x); } + + + + + + constexpr bool + isinf(double __x) + { return __builtin_isinf(__x); } + + + constexpr bool + isinf(long double __x) + { return __builtin_isinf(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isinf(_Tp __x) + { return false; } + + + + constexpr bool + isnan(float __x) + { return __builtin_isnan(__x); } + + + + + + constexpr bool + isnan(double __x) + { return __builtin_isnan(__x); } + + + constexpr bool + isnan(long double __x) + { return __builtin_isnan(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnan(_Tp __x) + { return false; } + + + + constexpr bool + isnormal(float __x) + { return __builtin_isnormal(__x); } + + constexpr bool + isnormal(double __x) + { return __builtin_isnormal(__x); } + + constexpr bool + isnormal(long double __x) + { return __builtin_isnormal(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnormal(_Tp __x) + { return __x != 0 ? true : false; } + + + + + constexpr bool + signbit(float __x) + { return __builtin_signbit(__x); } + + constexpr bool + signbit(double __x) + { return __builtin_signbit(__x); } + + constexpr bool + signbit(long double __x) + { return __builtin_signbit(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + signbit(_Tp __x) + { return __x < 0 ? true : false; } + + + + constexpr bool + isgreater(float __x, float __y) + { return __builtin_isgreater(__x, __y); } + + constexpr bool + isgreater(double __x, double __y) + { return __builtin_isgreater(__x, __y); } + + constexpr bool + isgreater(long double __x, long double __y) + { return __builtin_isgreater(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isgreater(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isgreater(__type(__x), __type(__y)); + } + + + + constexpr bool + isgreaterequal(float __x, float __y) + { return __builtin_isgreaterequal(__x, __y); } + + constexpr bool + isgreaterequal(double __x, double __y) + { return __builtin_isgreaterequal(__x, __y); } + + constexpr bool + isgreaterequal(long double __x, long double __y) + { return __builtin_isgreaterequal(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isgreaterequal(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isgreaterequal(__type(__x), __type(__y)); + } + + + + constexpr bool + isless(float __x, float __y) + { return __builtin_isless(__x, __y); } + + constexpr bool + isless(double __x, double __y) + { return __builtin_isless(__x, __y); } + + constexpr bool + isless(long double __x, long double __y) + { return __builtin_isless(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isless(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isless(__type(__x), __type(__y)); + } + + + + constexpr bool + islessequal(float __x, float __y) + { return __builtin_islessequal(__x, __y); } + + constexpr bool + islessequal(double __x, double __y) + { return __builtin_islessequal(__x, __y); } + + constexpr bool + islessequal(long double __x, long double __y) + { return __builtin_islessequal(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + islessequal(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_islessequal(__type(__x), __type(__y)); + } + + + + constexpr bool + islessgreater(float __x, float __y) + { return __builtin_islessgreater(__x, __y); } + + constexpr bool + islessgreater(double __x, double __y) + { return __builtin_islessgreater(__x, __y); } + + constexpr bool + islessgreater(long double __x, long double __y) + { return __builtin_islessgreater(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + islessgreater(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_islessgreater(__type(__x), __type(__y)); + } + + + + constexpr bool + isunordered(float __x, float __y) + { return __builtin_isunordered(__x, __y); } + + constexpr bool + isunordered(double __x, double __y) + { return __builtin_isunordered(__x, __y); } + + constexpr bool + isunordered(long double __x, long double __y) + { return __builtin_isunordered(__x, __y); } + + + + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isunordered(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isunordered(__type(__x), __type(__y)); + } +# 1065 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + using ::double_t; + using ::float_t; + + + using ::acosh; + using ::acoshf; + using ::acoshl; + + using ::asinh; + using ::asinhf; + using ::asinhl; + + using ::atanh; + using ::atanhf; + using ::atanhl; + + using ::cbrt; + using ::cbrtf; + using ::cbrtl; + + using ::copysign; + using ::copysignf; + using ::copysignl; + + using ::erf; + using ::erff; + using ::erfl; + + using ::erfc; + using ::erfcf; + using ::erfcl; + + using ::exp2; + using ::exp2f; + using ::exp2l; + + using ::expm1; + using ::expm1f; + using ::expm1l; + + using ::fdim; + using ::fdimf; + using ::fdiml; + + using ::fma; + using ::fmaf; + using ::fmal; + + using ::fmax; + using ::fmaxf; + using ::fmaxl; + + using ::fmin; + using ::fminf; + using ::fminl; + + using ::hypot; + using ::hypotf; + using ::hypotl; + + using ::ilogb; + using ::ilogbf; + using ::ilogbl; + + using ::lgamma; + using ::lgammaf; + using ::lgammal; + + + using ::llrint; + using ::llrintf; + using ::llrintl; + + using ::llround; + using ::llroundf; + using ::llroundl; + + + using ::log1p; + using ::log1pf; + using ::log1pl; + + using ::log2; + using ::log2f; + using ::log2l; + + using ::logb; + using ::logbf; + using ::logbl; + + using ::lrint; + using ::lrintf; + using ::lrintl; + + using ::lround; + using ::lroundf; + using ::lroundl; + + using ::nan; + using ::nanf; + using ::nanl; + + using ::nearbyint; + using ::nearbyintf; + using ::nearbyintl; + + using ::nextafter; + using ::nextafterf; + using ::nextafterl; + + using ::nexttoward; + using ::nexttowardf; + using ::nexttowardl; + + using ::remainder; + using ::remainderf; + using ::remainderl; + + using ::remquo; + using ::remquof; + using ::remquol; + + using ::rint; + using ::rintf; + using ::rintl; + + using ::round; + using ::roundf; + using ::roundl; + + using ::scalbln; + using ::scalblnf; + using ::scalblnl; + + using ::scalbn; + using ::scalbnf; + using ::scalbnl; + + using ::tgamma; + using ::tgammaf; + using ::tgammal; + + using ::trunc; + using ::truncf; + using ::truncl; + + + + constexpr float + acosh(float __x) + { return __builtin_acoshf(__x); } + + constexpr long double + acosh(long double __x) + { return __builtin_acoshl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acosh(_Tp __x) + { return __builtin_acosh(__x); } + + + + constexpr float + asinh(float __x) + { return __builtin_asinhf(__x); } + + constexpr long double + asinh(long double __x) + { return __builtin_asinhl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asinh(_Tp __x) + { return __builtin_asinh(__x); } + + + + constexpr float + atanh(float __x) + { return __builtin_atanhf(__x); } + + constexpr long double + atanh(long double __x) + { return __builtin_atanhl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atanh(_Tp __x) + { return __builtin_atanh(__x); } + + + + constexpr float + cbrt(float __x) + { return __builtin_cbrtf(__x); } + + constexpr long double + cbrt(long double __x) + { return __builtin_cbrtl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cbrt(_Tp __x) + { return __builtin_cbrt(__x); } + + + + constexpr float + copysign(float __x, float __y) + { return __builtin_copysignf(__x, __y); } + + constexpr long double + copysign(long double __x, long double __y) + { return __builtin_copysignl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + copysign(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return copysign(__type(__x), __type(__y)); + } + + + + constexpr float + erf(float __x) + { return __builtin_erff(__x); } + + constexpr long double + erf(long double __x) + { return __builtin_erfl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erf(_Tp __x) + { return __builtin_erf(__x); } + + + + constexpr float + erfc(float __x) + { return __builtin_erfcf(__x); } + + constexpr long double + erfc(long double __x) + { return __builtin_erfcl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erfc(_Tp __x) + { return __builtin_erfc(__x); } + + + + constexpr float + exp2(float __x) + { return __builtin_exp2f(__x); } + + constexpr long double + exp2(long double __x) + { return __builtin_exp2l(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp2(_Tp __x) + { return __builtin_exp2(__x); } + + + + constexpr float + expm1(float __x) + { return __builtin_expm1f(__x); } + + constexpr long double + expm1(long double __x) + { return __builtin_expm1l(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + expm1(_Tp __x) + { return __builtin_expm1(__x); } + + + + constexpr float + fdim(float __x, float __y) + { return __builtin_fdimf(__x, __y); } + + constexpr long double + fdim(long double __x, long double __y) + { return __builtin_fdiml(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fdim(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fdim(__type(__x), __type(__y)); + } + + + + constexpr float + fma(float __x, float __y, float __z) + { return __builtin_fmaf(__x, __y, __z); } + + constexpr long double + fma(long double __x, long double __y, long double __z) + { return __builtin_fmal(__x, __y, __z); } + + + + template + constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type + fma(_Tp __x, _Up __y, _Vp __z) + { + typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; + return fma(__type(__x), __type(__y), __type(__z)); + } + + + + constexpr float + fmax(float __x, float __y) + { return __builtin_fmaxf(__x, __y); } + + constexpr long double + fmax(long double __x, long double __y) + { return __builtin_fmaxl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmax(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmax(__type(__x), __type(__y)); + } + + + + constexpr float + fmin(float __x, float __y) + { return __builtin_fminf(__x, __y); } + + constexpr long double + fmin(long double __x, long double __y) + { return __builtin_fminl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmin(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmin(__type(__x), __type(__y)); + } + + + + constexpr float + hypot(float __x, float __y) + { return __builtin_hypotf(__x, __y); } + + constexpr long double + hypot(long double __x, long double __y) + { return __builtin_hypotl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + hypot(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return hypot(__type(__x), __type(__y)); + } + + + + constexpr int + ilogb(float __x) + { return __builtin_ilogbf(__x); } + + constexpr int + ilogb(long double __x) + { return __builtin_ilogbl(__x); } + + + + template + constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + ilogb(_Tp __x) + { return __builtin_ilogb(__x); } + + + + constexpr float + lgamma(float __x) + { return __builtin_lgammaf(__x); } + + constexpr long double + lgamma(long double __x) + { return __builtin_lgammal(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + lgamma(_Tp __x) + { return __builtin_lgamma(__x); } + + + + constexpr long long + llrint(float __x) + { return __builtin_llrintf(__x); } + + constexpr long long + llrint(long double __x) + { return __builtin_llrintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llrint(_Tp __x) + { return __builtin_llrint(__x); } + + + + constexpr long long + llround(float __x) + { return __builtin_llroundf(__x); } + + constexpr long long + llround(long double __x) + { return __builtin_llroundl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llround(_Tp __x) + { return __builtin_llround(__x); } + + + + constexpr float + log1p(float __x) + { return __builtin_log1pf(__x); } + + constexpr long double + log1p(long double __x) + { return __builtin_log1pl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log1p(_Tp __x) + { return __builtin_log1p(__x); } + + + + + constexpr float + log2(float __x) + { return __builtin_log2f(__x); } + + constexpr long double + log2(long double __x) + { return __builtin_log2l(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log2(_Tp __x) + { return __builtin_log2(__x); } + + + + constexpr float + logb(float __x) + { return __builtin_logbf(__x); } + + constexpr long double + logb(long double __x) + { return __builtin_logbl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + logb(_Tp __x) + { return __builtin_logb(__x); } + + + + constexpr long + lrint(float __x) + { return __builtin_lrintf(__x); } + + constexpr long + lrint(long double __x) + { return __builtin_lrintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lrint(_Tp __x) + { return __builtin_lrint(__x); } + + + + constexpr long + lround(float __x) + { return __builtin_lroundf(__x); } + + constexpr long + lround(long double __x) + { return __builtin_lroundl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lround(_Tp __x) + { return __builtin_lround(__x); } + + + + constexpr float + nearbyint(float __x) + { return __builtin_nearbyintf(__x); } + + constexpr long double + nearbyint(long double __x) + { return __builtin_nearbyintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nearbyint(_Tp __x) + { return __builtin_nearbyint(__x); } + + + + constexpr float + nextafter(float __x, float __y) + { return __builtin_nextafterf(__x, __y); } + + constexpr long double + nextafter(long double __x, long double __y) + { return __builtin_nextafterl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + nextafter(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return nextafter(__type(__x), __type(__y)); + } + + + + constexpr float + nexttoward(float __x, long double __y) + { return __builtin_nexttowardf(__x, __y); } + + constexpr long double + nexttoward(long double __x, long double __y) + { return __builtin_nexttowardl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nexttoward(_Tp __x, long double __y) + { return __builtin_nexttoward(__x, __y); } + + + + constexpr float + remainder(float __x, float __y) + { return __builtin_remainderf(__x, __y); } + + constexpr long double + remainder(long double __x, long double __y) + { return __builtin_remainderl(__x, __y); } + + + + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remainder(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remainder(__type(__x), __type(__y)); + } + + + + inline float + remquo(float __x, float __y, int* __pquo) + { return __builtin_remquof(__x, __y, __pquo); } + + inline long double + remquo(long double __x, long double __y, int* __pquo) + { return __builtin_remquol(__x, __y, __pquo); } + + + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remquo(_Tp __x, _Up __y, int* __pquo) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remquo(__type(__x), __type(__y), __pquo); + } + + + + constexpr float + rint(float __x) + { return __builtin_rintf(__x); } + + constexpr long double + rint(long double __x) + { return __builtin_rintl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + rint(_Tp __x) + { return __builtin_rint(__x); } + + + + constexpr float + round(float __x) + { return __builtin_roundf(__x); } + + constexpr long double + round(long double __x) + { return __builtin_roundl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + round(_Tp __x) + { return __builtin_round(__x); } + + + + constexpr float + scalbln(float __x, long __ex) + { return __builtin_scalblnf(__x, __ex); } + + constexpr long double + scalbln(long double __x, long __ex) + { return __builtin_scalblnl(__x, __ex); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbln(_Tp __x, long __ex) + { return __builtin_scalbln(__x, __ex); } + + + + constexpr float + scalbn(float __x, int __ex) + { return __builtin_scalbnf(__x, __ex); } + + constexpr long double + scalbn(long double __x, int __ex) + { return __builtin_scalbnl(__x, __ex); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbn(_Tp __x, int __ex) + { return __builtin_scalbn(__x, __ex); } + + + + constexpr float + tgamma(float __x) + { return __builtin_tgammaf(__x); } + + constexpr long double + tgamma(long double __x) + { return __builtin_tgammal(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tgamma(_Tp __x) + { return __builtin_tgamma(__x); } + + + + constexpr float + trunc(float __x) + { return __builtin_truncf(__x); } + + constexpr long double + trunc(long double __x) + { return __builtin_truncl(__x); } + + + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + trunc(_Tp __x) + { return __builtin_trunc(__x); } +# 1923 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + +} + + + + + +} +# 37 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h" 2 3 + +using std::abs; +using std::acos; +using std::asin; +using std::atan; +using std::atan2; +using std::cos; +using std::sin; +using std::tan; +using std::cosh; +using std::sinh; +using std::tanh; +using std::exp; +using std::frexp; +using std::ldexp; +using std::log; +using std::log10; +using std::modf; +using std::pow; +using std::sqrt; +using std::ceil; +using std::fabs; +using std::floor; +using std::fmod; + + +using std::fpclassify; +using std::isfinite; +using std::isinf; +using std::isnan; +using std::isnormal; +using std::signbit; +using std::isgreater; +using std::isgreaterequal; +using std::isless; +using std::islessequal; +using std::islessgreater; +using std::isunordered; + + + +using std::acosh; +using std::asinh; +using std::atanh; +using std::cbrt; +using std::copysign; +using std::erf; +using std::erfc; +using std::exp2; +using std::expm1; +using std::fdim; +using std::fma; +using std::fmax; +using std::fmin; +using std::hypot; +using std::ilogb; +using std::lgamma; +using std::llrint; +using std::llround; +using std::log1p; +using std::log2; +using std::logb; +using std::lrint; +using std::lround; +using std::nearbyint; +using std::nextafter; +using std::nexttoward; +using std::remainder; +using std::remquo; +using std::rint; +using std::round; +using std::scalbln; +using std::scalbn; +using std::tgamma; +using std::trunc; +# 10542 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 1 3 +# 36 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 3 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +# 121 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +extern "C++" +{ +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + using ::div_t; + using ::ldiv_t; + + using ::abort; + + + + using ::atexit; + + + using ::at_quick_exit; + + + using ::atof; + using ::atoi; + using ::atol; + using ::bsearch; + using ::calloc; + using ::div; + using ::exit; + using ::free; + using ::getenv; + using ::labs; + using ::ldiv; + using ::malloc; + + using ::mblen; + using ::mbstowcs; + using ::mbtowc; + + using ::qsort; + + + using ::quick_exit; + + + using ::rand; + using ::realloc; + using ::srand; + using ::strtod; + using ::strtol; + using ::strtoul; + using ::system; + + using ::wcstombs; + using ::wctomb; + + + + inline ldiv_t + div(long __i, long __j) { return ldiv(__i, __j); } + + + + +} +# 195 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + using ::lldiv_t; + + + + + + using ::_Exit; + + + + using ::llabs; + + inline lldiv_t + div(long long __n, long long __d) + { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } + + using ::lldiv; +# 227 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 + using ::atoll; + using ::strtoll; + using ::strtoull; + + using ::strtof; + using ::strtold; + + +} + +namespace std +{ + + using ::__gnu_cxx::lldiv_t; + + using ::__gnu_cxx::_Exit; + + using ::__gnu_cxx::llabs; + using ::__gnu_cxx::div; + using ::__gnu_cxx::lldiv; + + using ::__gnu_cxx::atoll; + using ::__gnu_cxx::strtof; + using ::__gnu_cxx::strtoll; + using ::__gnu_cxx::strtoull; + using ::__gnu_cxx::strtold; +} + + + +} +# 37 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 2 3 + +using std::abort; +using std::atexit; +using std::exit; + + + using std::at_quick_exit; + + + using std::quick_exit; + + + + +using std::div_t; +using std::ldiv_t; + +using std::abs; +using std::atof; +using std::atoi; +using std::atol; +using std::bsearch; +using std::calloc; +using std::div; +using std::free; +using std::getenv; +using std::labs; +using std::ldiv; +using std::malloc; + +using std::mblen; +using std::mbstowcs; +using std::mbtowc; + +using std::qsort; +using std::rand; +using std::realloc; +using std::srand; +using std::strtod; +using std::strtol; +using std::strtoul; +using std::system; + +using std::wcstombs; +using std::wctomb; +# 10543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 + + +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +# 10546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 1 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 1 3 +# 39 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 + +# 40 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +# 10547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 10616 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" + +# 10616 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool signbit(float x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool signbit(double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool signbit(long double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isfinite(float x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isfinite(double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isfinite(long double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isnan(float x); + + + + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isnan(double x); + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isnan(long double x); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isinf(float x); + + + + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isinf(double x); + +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr bool isinf(long double x); +} +# 10792 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std +{ + template extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) T __pow_helper(T, int); + template extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) T __cmath_power(T, unsigned int); +} + +using std::abs; +using std::fabs; +using std::ceil; +using std::floor; +using std::sqrt; + +using std::pow; + +using std::log; +using std::log10; +using std::fmod; +using std::modf; +using std::exp; +using std::frexp; +using std::ldexp; +using std::asin; +using std::sin; +using std::sinh; +using std::acos; +using std::cos; +using std::cosh; +using std::atan; +using std::atan2; +using std::tan; +using std::tanh; +# 11193 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +# 11202 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long long int abs(long long int); +# 11212 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long int abs(long int); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float abs(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double abs(double); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float fabs(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float ceil(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float floor(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sqrt(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float pow(float, float); + + + + +template +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) +typename __gnu_cxx::__promote_2<_Tp, _Up>::__type pow(_Tp, _Up); + + + + + + + +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float log(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float log10(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float fmod(float, float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float modf(float, float*); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float exp(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float frexp(float, int*); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float ldexp(float, int); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float asin(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sin(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sinh(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float acos(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float cos(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float cosh(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float atan(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float atan2(float, float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float tan(float); +extern __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float tanh(float); +# 11329 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +} +# 11435 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float logb(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr int ilogb(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float scalbn(float a, int b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float scalbln(float a, long int b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float exp2(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float expm1(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float log2(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float log1p(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float acosh(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float asinh(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float atanh(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float hypot(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float cbrt(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float erf(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float erfc(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float lgamma(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float tgamma(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float copysign(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float nextafter(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float remainder(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float remquo(float a, float b, int *quo); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float round(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long int lround(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long long int llround(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float trunc(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float rint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long int lrint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr long long int llrint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float nearbyint(float a); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fdim(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fma(float a, float b, float c); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fmax(float a, float b); +__attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) constexpr float fmin(float a, float b); +} +# 11574 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float exp10(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float rsqrt(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float rcbrt(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float sinpi(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float cospi(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void sincospi(const float a, float *const sptr, float *const cptr); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) void sincos(const float a, float *const sptr, float *const cptr); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float j0(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float j1(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float jn(const int n, const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float y0(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float y1(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float yn(const int n, const float a); + +static inline __attribute__((device)) __attribute__((cudart_builtin)) float cyl_bessel_i0(const float a); + +static inline __attribute__((device)) __attribute__((cudart_builtin)) float cyl_bessel_i1(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float erfinv(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float erfcinv(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float normcdfinv(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float normcdf(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float erfcx(const float a); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double copysign(const double a, const float b); + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double copysign(const float a, const double b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int min(const unsigned int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int min(const int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int min(const unsigned int a, const int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long int min(const long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int min(const unsigned long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int min(const long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int min(const unsigned long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long long int min(const long long int a, const long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int min(const unsigned long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int min(const long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int min(const unsigned long long int a, const long long int b); +# 11715 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float min(const float a, const float b); +# 11726 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double min(const double a, const double b); +# 11736 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double min(const float a, const double b); +# 11746 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double min(const double a, const float b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int max(const unsigned int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int max(const int a, const unsigned int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned int max(const unsigned int a, const int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long int max(const long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int max(const unsigned long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int max(const long int a, const unsigned long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long int max(const unsigned long int a, const long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) long long int max(const long long int a, const long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int max(const unsigned long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int max(const long long int a, const unsigned long long int b); + + + + + + + +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) unsigned long long int max(const unsigned long long int a, const long long int b); +# 11845 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) float max(const float a, const float b); +# 11856 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double max(const double a, const double b); +# 11866 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double max(const float a, const double b); +# 11876 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline __attribute__((host)) __attribute__((device)) __attribute__((cudart_builtin)) double max(const double a, const float b); +# 11887 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C"{ +inline __attribute__((device)) void *__nv_aligned_device_malloc(size_t size, size_t align) +{ + __attribute__((device)) void *__nv_aligned_device_malloc_impl(size_t, size_t); + return __nv_aligned_device_malloc_impl(size, align); +} +} +# 12173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" 1 +# 77 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 78 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" 2 +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +static inline __attribute__((host)) __attribute__((device)) float exp10(const float a) +{ + return exp10f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float rsqrt(const float a) +{ + return rsqrtf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float rcbrt(const float a) +{ + return rcbrtf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float sinpi(const float a) +{ + return sinpif(a); +} + +static inline __attribute__((host)) __attribute__((device)) float cospi(const float a) +{ + return cospif(a); +} + +static inline __attribute__((host)) __attribute__((device)) void sincospi(const float a, float *const sptr, float *const cptr) +{ + sincospif(a, sptr, cptr); +} + +static inline __attribute__((host)) __attribute__((device)) void sincos(const float a, float *const sptr, float *const cptr) +{ + sincosf(a, sptr, cptr); +} + +static inline __attribute__((host)) __attribute__((device)) float j0(const float a) +{ + return j0f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float j1(const float a) +{ + return j1f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float jn(const int n, const float a) +{ + return jnf(n, a); +} + +static inline __attribute__((host)) __attribute__((device)) float y0(const float a) +{ + return y0f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float y1(const float a) +{ + return y1f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float yn(const int n, const float a) +{ + return ynf(n, a); +} + +static inline __attribute__((device)) float cyl_bessel_i0(const float a) +{ + return cyl_bessel_i0f(a); +} + +static inline __attribute__((device)) float cyl_bessel_i1(const float a) +{ + return cyl_bessel_i1f(a); +} + +static inline __attribute__((host)) __attribute__((device)) float erfinv(const float a) +{ + return erfinvf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float erfcinv(const float a) +{ + return erfcinvf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float normcdfinv(const float a) +{ + return normcdfinvf(a); +} + +static inline __attribute__((host)) __attribute__((device)) float normcdf(const float a) +{ + return normcdff(a); +} + +static inline __attribute__((host)) __attribute__((device)) float erfcx(const float a) +{ + return erfcxf(a); +} + +static inline __attribute__((host)) __attribute__((device)) double copysign(const double a, const float b) +{ + return copysign(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) double copysign(const float a, const double b) +{ + return copysign(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int min(const unsigned int a, const unsigned int b) +{ + return umin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int min(const int a, const unsigned int b) +{ + return umin(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int min(const unsigned int a, const int b) +{ + return umin(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) long int min(const long int a, const long int b) +{ + long int retval; + + + + + + if (sizeof(long int) == sizeof(int)) { + + + + retval = static_cast(min(static_cast(a), static_cast(b))); + } else { + retval = static_cast(llmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int min(const unsigned long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umin(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int min(const long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umin(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int min(const unsigned long int a, const long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umin(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmin(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) long long int min(const long long int a, const long long int b) +{ + return llmin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int min(const unsigned long long int a, const unsigned long long int b) +{ + return ullmin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int min(const long long int a, const unsigned long long int b) +{ + return ullmin(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int min(const unsigned long long int a, const long long int b) +{ + return ullmin(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) float min(const float a, const float b) +{ + return fminf(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double min(const double a, const double b) +{ + return fmin(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double min(const float a, const double b) +{ + return fmin(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) double min(const double a, const float b) +{ + return fmin(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int max(const unsigned int a, const unsigned int b) +{ + return umax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int max(const int a, const unsigned int b) +{ + return umax(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned int max(const unsigned int a, const int b) +{ + return umax(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) long int max(const long int a, const long int b) +{ + long int retval; + + + + + if (sizeof(long int) == sizeof(int)) { + + + + retval = static_cast(max(static_cast(a), static_cast(b))); + } else { + retval = static_cast(llmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int max(const unsigned long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umax(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int max(const long int a, const unsigned long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umax(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long int max(const unsigned long int a, const long int b) +{ + unsigned long int retval; + + + + if (sizeof(unsigned long int) == sizeof(unsigned int)) { + + + + retval = static_cast(umax(static_cast(a), static_cast(b))); + } else { + retval = static_cast(ullmax(static_cast(a), static_cast(b))); + } + return retval; +} + +static inline __attribute__((host)) __attribute__((device)) long long int max(const long long int a, const long long int b) +{ + return llmax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int max(const unsigned long long int a, const unsigned long long int b) +{ + return ullmax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int max(const long long int a, const unsigned long long int b) +{ + return ullmax(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) unsigned long long int max(const unsigned long long int a, const long long int b) +{ + return ullmax(a, static_cast(b)); +} + +static inline __attribute__((host)) __attribute__((device)) float max(const float a, const float b) +{ + return fmaxf(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double max(const double a, const double b) +{ + return fmax(a, b); +} + +static inline __attribute__((host)) __attribute__((device)) double max(const float a, const double b) +{ + return fmax(static_cast(a), b); +} + +static inline __attribute__((host)) __attribute__((device)) double max(const double a, const float b) +{ + return fmax(a, static_cast(b)); +} +# 1126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +inline __attribute__((host)) __attribute__((device)) int min(const int a, const int b) +{ + return (a < b) ? a : b; +} + +inline __attribute__((host)) __attribute__((device)) unsigned int umin(const unsigned int a, const unsigned int b) +{ + return (a < b) ? a : b; +} + +inline __attribute__((host)) __attribute__((device)) long long int llmin(const long long int a, const long long int b) +{ + return (a < b) ? a : b; +} + +inline __attribute__((host)) __attribute__((device)) unsigned long long int ullmin(const unsigned long long int a, + const unsigned long long int b) +{ + return (a < b) ? a : b; +} + +inline __attribute__((host)) __attribute__((device)) int max(const int a, const int b) +{ + return (a > b) ? a : b; +} + +inline __attribute__((host)) __attribute__((device)) unsigned int umax(const unsigned int a, const unsigned int b) +{ + return (a > b) ? a : b; +} + +inline __attribute__((host)) __attribute__((device)) long long int llmax(const long long int a, const long long int b) +{ + return (a > b) ? a : b; +} + +inline __attribute__((host)) __attribute__((device)) unsigned long long int ullmax(const unsigned long long int a, + const unsigned long long int b) +{ + return (a > b) ? a : b; +} +# 12174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" 2 +# 304 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" 2 +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_surface_types.h" 1 +# 74 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_surface_types.h" +template +struct __attribute__((device_builtin_surface_type)) surface : public surfaceReference +{ + + __attribute__((host)) surface(void) + { + channelDesc = cudaCreateChannelDesc(); + } + + __attribute__((host)) surface(struct cudaChannelFormatDesc desc) + { + channelDesc = desc; + } + +}; + +template +struct __attribute__((device_builtin_surface_type)) surface : public surfaceReference +{ + + __attribute__((host)) surface(void) + { + channelDesc = cudaCreateChannelDesc(); + } + +}; +# 117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_texture_types.h" 1 +# 74 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_texture_types.h" +template +struct __attribute__((device_builtin_texture_type)) texture : public textureReference +{ + + __attribute__((host)) texture(int norm = 0, + enum cudaTextureFilterMode fMode = cudaFilterModePoint, + enum cudaTextureAddressMode aMode = cudaAddressModeClamp) + { + normalized = norm; + filterMode = fMode; + addressMode[0] = aMode; + addressMode[1] = aMode; + addressMode[2] = aMode; + channelDesc = cudaCreateChannelDesc(); + sRGB = 0; + } + + __attribute__((host)) texture(int norm, + enum cudaTextureFilterMode fMode, + enum cudaTextureAddressMode aMode, + struct cudaChannelFormatDesc desc) + { + normalized = norm; + filterMode = fMode; + addressMode[0] = aMode; + addressMode[1] = aMode; + addressMode[2] = aMode; + channelDesc = desc; + sRGB = 0; + } + +}; +# 118 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 80 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" 1 +# 81 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 + + + + + + + +extern "C" +{ +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __mulhi(int x, int y); +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __umulhi(unsigned int x, unsigned int y); +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __mul64hi(long long int x, long long int y); +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __umul64hi(unsigned long long int x, unsigned long long int y); +# 139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int_as_float(int x); +# 148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float_as_int(float x); +# 157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint_as_float(unsigned int x); +# 166 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float_as_uint(float x); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __syncthreads(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __prof_trigger(int); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __threadfence(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __threadfence_block(void); +__attribute__((device)) __attribute__((cudart_builtin)) + +__attribute__((__noreturn__)) + + + +__attribute__((device_builtin)) void __trap(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) void __brkpt(); +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __saturatef(float x); +# 270 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __sad(int x, int y, unsigned int z); +# 338 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __usad(unsigned int x, unsigned int y, unsigned int z); +# 348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __mul24(int x, int y); +# 358 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __umul24(unsigned int x, unsigned int y); +# 371 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float fdividef(float x, float y); +# 444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdividef(float x, float y); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) double fdivide(double x, double y); +# 457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __sinf(float x) +# 457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __cosf(float x) +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __tanf(float x) +# 481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 496 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) void __sincosf(float x, float *sptr, float *cptr) +# 496 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 496 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __expf(float x) +# 545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 576 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __exp10f(float x) +# 576 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 576 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __log2f(float x) +# 601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __log10f(float x) +# 628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 671 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __logf(float x) +# 671 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 671 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 713 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) __attribute__((cudart_builtin)) float __powf(float x, float y) +# 713 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 3 4 + throw () +# 713 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" + ; +# 722 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_rn(float x); +# 731 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_rz(float x); +# 740 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_ru(float); +# 749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __float2int_rd(float x); +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_rn(float x); +# 767 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_rz(float x); +# 776 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_ru(float x); +# 785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __float2uint_rd(float x); +# 794 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_rn(int x); +# 803 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_rz(int x); +# 812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_ru(int x); +# 821 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __int2float_rd(int x); +# 830 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_rn(unsigned int x); +# 839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_rz(unsigned int x); +# 848 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_ru(unsigned int x); +# 857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __uint2float_rd(unsigned int x); +# 866 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_rn(float x); +# 875 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_rz(float x); +# 884 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_ru(float x); +# 893 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __float2ll_rd(float x); +# 902 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_rn(float x); +# 911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_rz(float x); +# 920 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_ru(float x); +# 929 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __float2ull_rd(float x); +# 938 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_rn(long long int x); +# 947 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_rz(long long int x); +# 956 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_ru(long long int x); +# 965 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ll2float_rd(long long int x); +# 974 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_rn(unsigned long long int x); +# 983 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_rz(unsigned long long int x); +# 992 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_ru(unsigned long long int x); +# 1001 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __ull2float_rd(unsigned long long int x); +# 1013 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_rn(float x, float y); +# 1025 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_rz(float x, float y); +# 1037 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_ru(float x, float y); +# 1049 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fadd_rd(float x, float y); +# 1061 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_rn(float x, float y); +# 1073 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_rz(float x, float y); +# 1085 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_ru(float x, float y); +# 1097 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsub_rd(float x, float y); +# 1109 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_rn(float x, float y); +# 1121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_rz(float x, float y); +# 1133 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_ru(float x, float y); +# 1145 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmul_rd(float x, float y); +# 1298 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_rn(float x, float y, float z); +# 1451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_rz(float x, float y, float z); +# 1604 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_ru(float x, float y, float z); +# 1757 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fmaf_rd(float x, float y, float z); +# 1790 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_rn(float x); +# 1823 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_rz(float x); +# 1856 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_ru(float x); +# 1889 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frcp_rd(float x); +# 1920 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_rn(float x); +# 1951 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_rz(float x); +# 1982 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_ru(float x); +# 2013 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fsqrt_rd(float x); +# 2052 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __frsqrt_rn(float x); +# 2063 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_rn(float x, float y); +# 2074 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_rz(float x, float y); +# 2085 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_ru(float x, float y); +# 2096 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) float __fdiv_rd(float x, float y); +# 2105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __clz(int x); +# 2116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __ffs(int x); +# 2125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __popc(unsigned int x); +# 2134 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __brev(unsigned int x); +# 2143 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __clzll(long long int x); +# 2154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __ffsll(long long int x); +# 2165 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __popcll(unsigned long long int x); +# 2174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __brevll(unsigned long long int x); +# 2198 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __byte_perm(unsigned int x, unsigned int y, unsigned int s); +# 2210 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __hadd(int x, int y); +# 2223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __rhadd(int x, int y); +# 2235 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __uhadd(unsigned int x, unsigned int y); +# 2248 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __urhadd(unsigned int x, unsigned int y); +# 2258 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) int __double2int_rz(double x); +# 2267 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __double2uint_rz(double x); +# 2276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) long long int __double2ll_rz(double x); +# 2285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned long long int __double2ull_rz(double x); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm0(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm1(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm2(void); +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __pm3(void); +# 2315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabs2(unsigned int a); +# 2326 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsss2(unsigned int a); +# 2337 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vadd2(unsigned int a, unsigned int b); +# 2348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddss2 (unsigned int a, unsigned int b); +# 2358 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddus2 (unsigned int a, unsigned int b); +# 2369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgs2(unsigned int a, unsigned int b); +# 2380 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgu2(unsigned int a, unsigned int b); +# 2391 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vhaddu2(unsigned int a, unsigned int b); +# 2402 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpeq2(unsigned int a, unsigned int b); +# 2413 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpges2(unsigned int a, unsigned int b); +# 2424 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgeu2(unsigned int a, unsigned int b); +# 2435 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgts2(unsigned int a, unsigned int b); +# 2446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgtu2(unsigned int a, unsigned int b); +# 2457 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmples2(unsigned int a, unsigned int b); +# 2469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpleu2(unsigned int a, unsigned int b); +# 2480 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmplts2(unsigned int a, unsigned int b); +# 2491 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpltu2(unsigned int a, unsigned int b); +# 2502 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpne2(unsigned int a, unsigned int b); +# 2513 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffu2(unsigned int a, unsigned int b); +# 2524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxs2(unsigned int a, unsigned int b); +# 2535 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxu2(unsigned int a, unsigned int b); +# 2546 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmins2(unsigned int a, unsigned int b); +# 2557 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vminu2(unsigned int a, unsigned int b); +# 2568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vseteq2(unsigned int a, unsigned int b); +# 2579 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetges2(unsigned int a, unsigned int b); +# 2590 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgeu2(unsigned int a, unsigned int b); +# 2601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgts2(unsigned int a, unsigned int b); +# 2612 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgtu2(unsigned int a, unsigned int b); +# 2623 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetles2(unsigned int a, unsigned int b); +# 2634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetleu2(unsigned int a, unsigned int b); +# 2645 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetlts2(unsigned int a, unsigned int b); +# 2656 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetltu2(unsigned int a, unsigned int b); +# 2667 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetne2(unsigned int a, unsigned int b); +# 2678 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsadu2(unsigned int a, unsigned int b); +# 2689 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsub2(unsigned int a, unsigned int b); +# 2700 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubss2 (unsigned int a, unsigned int b); +# 2711 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubus2 (unsigned int a, unsigned int b); +# 2721 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vneg2(unsigned int a); +# 2731 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vnegss2(unsigned int a); +# 2742 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffs2(unsigned int a, unsigned int b); +# 2753 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsads2(unsigned int a, unsigned int b); +# 2763 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabs4(unsigned int a); +# 2774 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsss4(unsigned int a); +# 2785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vadd4(unsigned int a, unsigned int b); +# 2796 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddss4 (unsigned int a, unsigned int b); +# 2806 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vaddus4 (unsigned int a, unsigned int b); +# 2817 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgs4(unsigned int a, unsigned int b); +# 2828 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vavgu4(unsigned int a, unsigned int b); +# 2839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vhaddu4(unsigned int a, unsigned int b); +# 2850 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpeq4(unsigned int a, unsigned int b); +# 2861 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpges4(unsigned int a, unsigned int b); +# 2872 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgeu4(unsigned int a, unsigned int b); +# 2883 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgts4(unsigned int a, unsigned int b); +# 2894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpgtu4(unsigned int a, unsigned int b); +# 2905 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmples4(unsigned int a, unsigned int b); +# 2916 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpleu4(unsigned int a, unsigned int b); +# 2927 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmplts4(unsigned int a, unsigned int b); +# 2938 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpltu4(unsigned int a, unsigned int b); +# 2949 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vcmpne4(unsigned int a, unsigned int b); +# 2960 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffu4(unsigned int a, unsigned int b); +# 2971 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxs4(unsigned int a, unsigned int b); +# 2982 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmaxu4(unsigned int a, unsigned int b); +# 2993 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vmins4(unsigned int a, unsigned int b); +# 3004 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vminu4(unsigned int a, unsigned int b); +# 3015 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vseteq4(unsigned int a, unsigned int b); +# 3026 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetles4(unsigned int a, unsigned int b); +# 3037 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetleu4(unsigned int a, unsigned int b); +# 3048 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetlts4(unsigned int a, unsigned int b); +# 3059 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetltu4(unsigned int a, unsigned int b); +# 3070 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetges4(unsigned int a, unsigned int b); +# 3081 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgeu4(unsigned int a, unsigned int b); +# 3092 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgts4(unsigned int a, unsigned int b); +# 3103 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetgtu4(unsigned int a, unsigned int b); +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsetne4(unsigned int a, unsigned int b); +# 3125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsadu4(unsigned int a, unsigned int b); +# 3136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsub4(unsigned int a, unsigned int b); +# 3147 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubss4(unsigned int a, unsigned int b); +# 3158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsubus4(unsigned int a, unsigned int b); +# 3168 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vneg4(unsigned int a); +# 3178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vnegss4(unsigned int a); +# 3189 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vabsdiffs4(unsigned int a, unsigned int b); +# 3200 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute__((device)) __attribute__((cudart_builtin)) __attribute__((device_builtin)) unsigned int __vsads4(unsigned int a, unsigned int b); + + + + + + +} +# 3229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int mulhi(const int a, const int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int mulhi(const unsigned int a, const unsigned int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int mulhi(const int a, const unsigned int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mulhi" "() is deprecated in favor of __" "mulhi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int mulhi(const unsigned int a, const int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long int mul64hi(const long long int a, const long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long int mul64hi(const unsigned long long int a, const unsigned long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long int mul64hi(const long long int a, const unsigned long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul64hi" "() is deprecated in favor of __" "mul64hi" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long int mul64hi(const unsigned long long int a, const long long int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float_as_int" "() is deprecated in favor of __" "float_as_int" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int float_as_int(const float a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("int_as_float" "() is deprecated in favor of __" "int_as_float" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float int_as_float(const int a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float_as_uint" "() is deprecated in favor of __" "float_as_uint" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int float_as_uint(const float a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("uint_as_float" "() is deprecated in favor of __" "uint_as_float" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float uint_as_float(const unsigned int a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("saturate" "() is deprecated in favor of __" "saturate" "f" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float saturate(const float a); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("mul24" "() is deprecated in favor of __" "mul24" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int mul24(const int a, const int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("umul24" "() is deprecated in favor of __" "umul24" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int umul24(const unsigned int a, const unsigned int b); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float2int" "() is deprecated in favor of __" "float2int" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int float2int(const float a, const enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("float2uint" "() is deprecated in favor of __" "float2uint" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int float2uint(const float a, const enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("int2float" "() is deprecated in favor of __" "int2float" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float int2float(const int a, const enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) __attribute__((cudart_builtin)) __attribute__((deprecated("uint2float" "() is deprecated in favor of __" "uint2float" "_ru|_rd|_rn|_rz" "() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float uint2float(const unsigned int a, const enum cudaRoundMode mode = cudaRoundNearest); +# 3285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 80 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" 2 +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +static __inline__ __attribute__((device)) int mulhi(const int a, const int b) +{ + return __mulhi(a, b); +} + +static __inline__ __attribute__((device)) unsigned int mulhi(const unsigned int a, const unsigned int b) +{ + return __umulhi(a, b); +} + +static __inline__ __attribute__((device)) unsigned int mulhi(const int a, const unsigned int b) +{ + return __umulhi(static_cast(a), b); +} + +static __inline__ __attribute__((device)) unsigned int mulhi(const unsigned int a, const int b) +{ + return __umulhi(a, static_cast(b)); +} + +static __inline__ __attribute__((device)) long long int mul64hi(const long long int a, const long long int b) +{ + return __mul64hi(a, b); +} + +static __inline__ __attribute__((device)) unsigned long long int mul64hi(const unsigned long long int a, const unsigned long long int b) +{ + return __umul64hi(a, b); +} + +static __inline__ __attribute__((device)) unsigned long long int mul64hi(const long long int a, const unsigned long long int b) +{ + return __umul64hi(static_cast(a), b); +} + +static __inline__ __attribute__((device)) unsigned long long int mul64hi(const unsigned long long int a, const long long int b) +{ + return __umul64hi(a, static_cast(b)); +} + +static __inline__ __attribute__((device)) int float_as_int(const float a) +{ + return __float_as_int(a); +} + +static __inline__ __attribute__((device)) float int_as_float(const int a) +{ + return __int_as_float(a); +} + +static __inline__ __attribute__((device)) unsigned int float_as_uint(const float a) +{ + return __float_as_uint(a); +} + +static __inline__ __attribute__((device)) float uint_as_float(const unsigned int a) +{ + return __uint_as_float(a); +} +static __inline__ __attribute__((device)) float saturate(const float a) +{ + return __saturatef(a); +} + +static __inline__ __attribute__((device)) int mul24(const int a, const int b) +{ + return __mul24(a, b); +} + +static __inline__ __attribute__((device)) unsigned int umul24(const unsigned int a, const unsigned int b) +{ + return __umul24(a, b); +} + +static __inline__ __attribute__((device)) int float2int(const float a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundNearest) ? __float2int_rn(a) : + (mode == cudaRoundPosInf ) ? __float2int_ru(a) : + (mode == cudaRoundMinInf ) ? __float2int_rd(a) : + __float2int_rz(a); +} + +static __inline__ __attribute__((device)) unsigned int float2uint(const float a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundNearest) ? __float2uint_rn(a) : + (mode == cudaRoundPosInf ) ? __float2uint_ru(a) : + (mode == cudaRoundMinInf ) ? __float2uint_rd(a) : + __float2uint_rz(a); +} + +static __inline__ __attribute__((device)) float int2float(const int a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundZero ) ? __int2float_rz(a) : + (mode == cudaRoundPosInf) ? __int2float_ru(a) : + (mode == cudaRoundMinInf) ? __int2float_rd(a) : + __int2float_rn(a); +} + +static __inline__ __attribute__((device)) float uint2float(const unsigned int a, const enum cudaRoundMode mode) +{ + return (mode == cudaRoundZero ) ? __uint2float_rz(a) : + (mode == cudaRoundPosInf) ? __uint2float_ru(a) : + (mode == cudaRoundMinInf) ? __uint2float_rd(a) : + __uint2float_rn(a); +} +# 3286 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" 1 +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +static __inline__ __attribute__((device)) int atomicAdd(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicAdd(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) int atomicSub(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicSub(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) int atomicExch(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicExch(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) float atomicExch(float *address, float val) { } + +static __inline__ __attribute__((device)) int atomicMin(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicMin(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) int atomicMax(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicMax(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicInc(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicDec(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) int atomicAnd(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicAnd(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) int atomicOr(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicOr(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) int atomicXor(int *address, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicXor(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) int atomicCAS(int *address, int compare, int val) { } + +static __inline__ __attribute__((device)) unsigned int atomicCAS(unsigned int *address, unsigned int compare, unsigned int val) { } +# 171 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +extern "C" +{ + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) __attribute__((deprecated("__any""() is deprecated in favor of ""__any""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __any(int cond); +extern __attribute__((device)) __attribute__((device_builtin)) __attribute__((deprecated("__all""() is deprecated in favor of ""__all""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __all(int cond); +} +# 189 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +static __inline__ __attribute__((device)) unsigned long long int atomicAdd(unsigned long long int *address, unsigned long long int val) { } + +static __inline__ __attribute__((device)) unsigned long long int atomicExch(unsigned long long int *address, unsigned long long int val) { } + +static __inline__ __attribute__((device)) unsigned long long int atomicCAS(unsigned long long int *address, unsigned long long int compare, unsigned long long int val) { } + +static __inline__ __attribute__((device)) __attribute__((deprecated("__any""() is deprecated in favor of ""__any""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) bool any(bool cond) { } + +static __inline__ __attribute__((device)) __attribute__((deprecated("__all""() is deprecated in favor of ""__all""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) bool all(bool cond) { } +# 3289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 1 +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 86 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 2 + +extern "C" +{ +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double_as_longlong(double x); +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __longlong_as_double(long long int x); +# 263 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rn(double x, double y, double z); +# 420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rz(double x, double y, double z); +# 577 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_ru(double x, double y, double z); +# 734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rd(double x, double y, double z); +# 746 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rn(double x, double y); +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rz(double x, double y); +# 770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_ru(double x, double y); +# 782 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rd(double x, double y); +# 794 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rn(double x, double y); +# 806 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rz(double x, double y); +# 818 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_ru(double x, double y); +# 830 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rd(double x, double y); +# 842 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rn(double x, double y); +# 854 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rz(double x, double y); +# 866 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_ru(double x, double y); +# 878 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rd(double x, double y); +# 887 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rn(double x); +# 896 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rz(double x); +# 905 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_ru(double x); +# 914 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rd(double x); +# 923 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rn(double x); +# 932 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_ru(double x); +# 941 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rd(double x); +# 950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rn(double x); +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_ru(double x); +# 968 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rd(double x); +# 977 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rn(double x); +# 986 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_ru(double x); +# 995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rd(double x); +# 1004 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rn(double x); +# 1013 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_ru(double x); +# 1022 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rd(double x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __int2double_rn(int x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __uint2double_rn(unsigned int x); +# 1047 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rn(long long int x); +# 1056 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rz(long long int x); +# 1065 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_ru(long long int x); +# 1074 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rd(long long int x); +# 1083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rn(unsigned long long int x); +# 1092 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rz(unsigned long long int x); +# 1101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_ru(unsigned long long int x); +# 1110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rd(unsigned long long int x); +# 1119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2hiint(double x); +# 1128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2loint(double x); +# 1138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __hiloint2double(int hi, int lo); +} + + + + + + + +static __inline__ __attribute__((device)) double fma(double a, double b, double c, enum cudaRoundMode mode); + +static __inline__ __attribute__((device)) double dmul(double a, double b, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double dadd(double a, double b, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double dsub(double a, double b, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) int double2int(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) unsigned int double2uint(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) long long int double2ll(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) unsigned long long int double2ull(double a, enum cudaRoundMode mode = cudaRoundZero); + +static __inline__ __attribute__((device)) double ll2double(long long int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double ull2double(unsigned long long int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double int2double(int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double uint2double(unsigned int a, enum cudaRoundMode mode = cudaRoundNearest); + +static __inline__ __attribute__((device)) double float2double(float a, enum cudaRoundMode mode = cudaRoundNearest); + + + + + + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" 1 +# 83 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 86 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" 2 + + + + + + + +static __inline__ __attribute__((device)) double fma(double a, double b, double c, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __fma_rz(a, b, c) : + mode == cudaRoundPosInf ? __fma_ru(a, b, c) : + mode == cudaRoundMinInf ? __fma_rd(a, b, c) : + __fma_rn(a, b, c); +} + +static __inline__ __attribute__((device)) double dmul(double a, double b, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __dmul_rz(a, b) : + mode == cudaRoundPosInf ? __dmul_ru(a, b) : + mode == cudaRoundMinInf ? __dmul_rd(a, b) : + __dmul_rn(a, b); +} + +static __inline__ __attribute__((device)) double dadd(double a, double b, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __dadd_rz(a, b) : + mode == cudaRoundPosInf ? __dadd_ru(a, b) : + mode == cudaRoundMinInf ? __dadd_rd(a, b) : + __dadd_rn(a, b); +} + +static __inline__ __attribute__((device)) double dsub(double a, double b, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __dsub_rz(a, b) : + mode == cudaRoundPosInf ? __dsub_ru(a, b) : + mode == cudaRoundMinInf ? __dsub_rd(a, b) : + __dsub_rn(a, b); +} + +static __inline__ __attribute__((device)) int double2int(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2int_rn(a) : + mode == cudaRoundPosInf ? __double2int_ru(a) : + mode == cudaRoundMinInf ? __double2int_rd(a) : + __double2int_rz(a); +} + +static __inline__ __attribute__((device)) unsigned int double2uint(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2uint_rn(a) : + mode == cudaRoundPosInf ? __double2uint_ru(a) : + mode == cudaRoundMinInf ? __double2uint_rd(a) : + __double2uint_rz(a); +} + +static __inline__ __attribute__((device)) long long int double2ll(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2ll_rn(a) : + mode == cudaRoundPosInf ? __double2ll_ru(a) : + mode == cudaRoundMinInf ? __double2ll_rd(a) : + __double2ll_rz(a); +} + +static __inline__ __attribute__((device)) unsigned long long int double2ull(double a, enum cudaRoundMode mode) +{ + return mode == cudaRoundNearest ? __double2ull_rn(a) : + mode == cudaRoundPosInf ? __double2ull_ru(a) : + mode == cudaRoundMinInf ? __double2ull_rd(a) : + __double2ull_rz(a); +} + +static __inline__ __attribute__((device)) double ll2double(long long int a, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __ll2double_rz(a) : + mode == cudaRoundPosInf ? __ll2double_ru(a) : + mode == cudaRoundMinInf ? __ll2double_rd(a) : + __ll2double_rn(a); +} + +static __inline__ __attribute__((device)) double ull2double(unsigned long long int a, enum cudaRoundMode mode) +{ + return mode == cudaRoundZero ? __ull2double_rz(a) : + mode == cudaRoundPosInf ? __ull2double_ru(a) : + mode == cudaRoundMinInf ? __ull2double_rd(a) : + __ull2double_rn(a); +} + +static __inline__ __attribute__((device)) double int2double(int a, enum cudaRoundMode mode) +{ + return (double)a; +} + +static __inline__ __attribute__((device)) double uint2double(unsigned int a, enum cudaRoundMode mode) +{ + return (double)a; +} + +static __inline__ __attribute__((device)) double float2double(float a, enum cudaRoundMode mode) +{ + return (double)a; +} +# 1179 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" 2 +# 3290 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.h" 1 +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.h" +static __inline__ __attribute__((device)) float atomicAdd(float *address, float val) { } +# 3291 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" 1 +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +static __inline__ __attribute__((device)) long long atomicMin(long long *address, long long val) { } + +static __inline__ __attribute__((device)) long long atomicMax(long long *address, long long val) { } + +static __inline__ __attribute__((device)) long long atomicAnd(long long *address, long long val) { } + +static __inline__ __attribute__((device)) long long atomicOr(long long *address, long long val) { } + +static __inline__ __attribute__((device)) long long atomicXor(long long *address, long long val) { } + +static __inline__ __attribute__((device)) unsigned long long atomicMin(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) unsigned long long atomicMax(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) unsigned long long atomicAnd(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) unsigned long long atomicOr(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) unsigned long long atomicXor(unsigned long long *address, unsigned long long val) { } +# 3292 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_atomic_functions.h" 1 +# 56 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_atomic_functions.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" 1 +# 57 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_atomic_functions.h" 2 +# 3293 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" 1 +# 303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +static __inline__ __attribute__((device)) double atomicAdd(double *address, double val) { } + +static __inline__ __attribute__((device)) +int atomicAdd_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicAdd_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicAdd_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicAdd_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicAdd_block(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicAdd_system(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +float atomicAdd_block(float *address, float val) { } + +static __inline__ __attribute__((device)) +float atomicAdd_system(float *address, float val) { } + +static __inline__ __attribute__((device)) +double atomicAdd_block(double *address, double val) { } + +static __inline__ __attribute__((device)) +double atomicAdd_system(double *address, double val) { } + +static __inline__ __attribute__((device)) +int atomicSub_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicSub_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicSub_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicSub_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +int atomicExch_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicExch_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicExch_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicExch_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicExch_block(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicExch_system(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +float atomicExch_block(float *address, float val) { } + +static __inline__ __attribute__((device)) +float atomicExch_system(float *address, float val) { } + +static __inline__ __attribute__((device)) +int atomicMin_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicMin_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +long long atomicMin_block(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +long long atomicMin_system(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicMin_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicMin_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicMin_block(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicMin_system(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +int atomicMax_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicMax_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +long long atomicMax_block(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +long long atomicMax_system(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicMax_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicMax_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicMax_block(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicMax_system(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicInc_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicInc_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicDec_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicDec_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +int atomicCAS_block(int *address, int compare, int val) { } + +static __inline__ __attribute__((device)) +int atomicCAS_system(int *address, int compare, int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicCAS_block(unsigned int *address, unsigned int compare, + unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicCAS_system(unsigned int *address, unsigned int compare, + unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long int atomicCAS_block(unsigned long long int *address, + unsigned long long int compare, + unsigned long long int val) { } + +static __inline__ __attribute__((device)) +unsigned long long int atomicCAS_system(unsigned long long int *address, + unsigned long long int compare, + unsigned long long int val) { } + +static __inline__ __attribute__((device)) +int atomicAnd_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicAnd_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +long long atomicAnd_block(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +long long atomicAnd_system(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicAnd_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicAnd_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicAnd_block(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicAnd_system(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +int atomicOr_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicOr_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +long long atomicOr_block(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +long long atomicOr_system(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicOr_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicOr_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicOr_block(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicOr_system(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +int atomicXor_block(int *address, int val) { } + +static __inline__ __attribute__((device)) +int atomicXor_system(int *address, int val) { } + +static __inline__ __attribute__((device)) +long long atomicXor_block(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +long long atomicXor_system(long long *address, long long val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicXor_block(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned int atomicXor_system(unsigned int *address, unsigned int val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicXor_block(unsigned long long *address, unsigned long long val) { } + +static __inline__ __attribute__((device)) +unsigned long long atomicXor_system(unsigned long long *address, unsigned long long val) { } +# 3294 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" 1 +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern "C" +{ +extern __attribute__((device)) __attribute__((device_builtin)) void __threadfence_system(void); +# 104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_rn(double x, double y); +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_rz(double x, double y); +# 128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_ru(double x, double y); +# 140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ddiv_rd(double x, double y); +# 174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_rn(double x); +# 208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_rz(double x); +# 242 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_ru(double x); +# 276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __drcp_rd(double x); +# 308 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_rn(double x); +# 340 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_rz(double x); +# 372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_ru(double x); +# 404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsqrt_rd(double x); +extern __attribute__((device)) __attribute__((device_builtin)) __attribute__((deprecated("__ballot""() is deprecated in favor of ""__ballot""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __ballot(int); +extern __attribute__((device)) __attribute__((device_builtin)) int __syncthreads_count(int); +extern __attribute__((device)) __attribute__((device_builtin)) int __syncthreads_and(int); +extern __attribute__((device)) __attribute__((device_builtin)) int __syncthreads_or(int); +extern __attribute__((device)) __attribute__((device_builtin)) long long int clock64(void); +# 419 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_rn(float x, float y, float z); +# 428 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_rd(float x, float y, float z); +# 437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_ru(float x, float y, float z); +# 446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __fmaf_ieee_rz(float x, float y, float z); +# 459 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double_as_longlong(double x); +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __longlong_as_double(long long int x); +# 625 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rn(double x, double y, double z); +# 782 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rz(double x, double y, double z); +# 939 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_ru(double x, double y, double z); +# 1096 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __fma_rd(double x, double y, double z); +# 1108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rn(double x, double y); +# 1120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rz(double x, double y); +# 1132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_ru(double x, double y); +# 1144 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dadd_rd(double x, double y); +# 1156 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rn(double x, double y); +# 1168 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rz(double x, double y); +# 1180 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_ru(double x, double y); +# 1192 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dsub_rd(double x, double y); +# 1204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rn(double x, double y); +# 1216 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rz(double x, double y); +# 1228 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_ru(double x, double y); +# 1240 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __dmul_rd(double x, double y); +# 1249 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rn(double x); +# 1258 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rz(double x); +# 1267 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_ru(double x); +# 1276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) float __double2float_rd(double x); +# 1285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rn(double x); +# 1294 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_ru(double x); +# 1303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2int_rd(double x); +# 1312 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rn(double x); +# 1321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_ru(double x); +# 1330 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned int __double2uint_rd(double x); +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rn(double x); +# 1348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_ru(double x); +# 1357 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) long long int __double2ll_rd(double x); +# 1366 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rn(double x); +# 1375 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_ru(double x); +# 1384 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) unsigned long long int __double2ull_rd(double x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __int2double_rn(int x); + + + + + + + +extern __attribute__((device)) __attribute__((device_builtin)) double __uint2double_rn(unsigned int x); +# 1409 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rn(long long int x); +# 1418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rz(long long int x); +# 1427 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_ru(long long int x); +# 1436 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ll2double_rd(long long int x); +# 1445 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rn(unsigned long long int x); +# 1454 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rz(unsigned long long int x); +# 1463 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_ru(unsigned long long int x); +# 1472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __ull2double_rd(unsigned long long int x); +# 1481 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2hiint(double x); +# 1490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) int __double2loint(double x); +# 1500 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern __attribute__((device)) __attribute__((device_builtin)) double __hiloint2double(int hi, int lo); + + +} + + + + + + +static __inline__ __attribute__((device)) __attribute__((deprecated("__ballot""() is deprecated in favor of ""__ballot""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int ballot(bool pred) { } + +static __inline__ __attribute__((device)) int syncthreads_count(bool pred) { } + +static __inline__ __attribute__((device)) bool syncthreads_and(bool pred) { } + +static __inline__ __attribute__((device)) bool syncthreads_or(bool pred) { } + + + + +static __inline__ __attribute__((device)) unsigned int __isGlobal(const void *ptr) { } +static __inline__ __attribute__((device)) unsigned int __isShared(const void *ptr) { } +static __inline__ __attribute__((device)) unsigned int __isConstant(const void *ptr) { } +static __inline__ __attribute__((device)) unsigned int __isLocal(const void *ptr) { } + +static __inline__ __attribute__((device)) unsigned int __isGridConstant(const void *ptr) { } + +static __inline__ __attribute__((device)) size_t __cvta_generic_to_global(const void *ptr) { } +static __inline__ __attribute__((device)) size_t __cvta_generic_to_shared(const void *ptr) { } +static __inline__ __attribute__((device)) size_t __cvta_generic_to_constant(const void *ptr) { } +static __inline__ __attribute__((device)) size_t __cvta_generic_to_local(const void *ptr) { } + +static __inline__ __attribute__((device)) size_t __cvta_generic_to_grid_constant(const void *ptr) { } + + +static __inline__ __attribute__((device)) void * __cvta_global_to_generic(size_t rawbits) { } +static __inline__ __attribute__((device)) void * __cvta_shared_to_generic(size_t rawbits) { } +static __inline__ __attribute__((device)) void * __cvta_constant_to_generic(size_t rawbits) { } +static __inline__ __attribute__((device)) void * __cvta_local_to_generic(size_t rawbits) { } + +static __inline__ __attribute__((device)) void * __cvta_grid_constant_to_generic(size_t rawbits) { } +# 3295 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" 1 +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +static __attribute__((device)) __inline__ unsigned __fns(unsigned mask, unsigned base, int offset) { } +static __attribute__((device)) __inline__ void __barrier_sync(unsigned id) { } +static __attribute__((device)) __inline__ void __barrier_sync_count(unsigned id, unsigned cnt) { } +static __attribute__((device)) __inline__ void __syncwarp(unsigned mask=0xFFFFFFFF) { } +static __attribute__((device)) __inline__ int __all_sync(unsigned mask, int pred) { } +static __attribute__((device)) __inline__ int __any_sync(unsigned mask, int pred) { } +static __attribute__((device)) __inline__ int __uni_sync(unsigned mask, int pred) { } +static __attribute__((device)) __inline__ unsigned __ballot_sync(unsigned mask, int pred) { } +static __attribute__((device)) __inline__ unsigned __activemask() { } +# 119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl(int var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl(unsigned int var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl_up(int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl_up(unsigned int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl_down(int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl_down(unsigned int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) int __shfl_xor(int var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned int __shfl_xor(unsigned int var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl(float var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl_up(float var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl_down(float var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) float __shfl_xor(float var, int laneMask, int width=32) { } + + +static __attribute__((device)) __inline__ int __shfl_sync(unsigned mask, int var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ unsigned int __shfl_sync(unsigned mask, unsigned int var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ int __shfl_up_sync(unsigned mask, int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ unsigned int __shfl_up_sync(unsigned mask, unsigned int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ int __shfl_down_sync(unsigned mask, int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ unsigned int __shfl_down_sync(unsigned mask, unsigned int var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ int __shfl_xor_sync(unsigned mask, int var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ unsigned int __shfl_xor_sync(unsigned mask, unsigned int var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ float __shfl_sync(unsigned mask, float var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ float __shfl_up_sync(unsigned mask, float var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ float __shfl_down_sync(unsigned mask, float var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ float __shfl_xor_sync(unsigned mask, float var, int laneMask, int width=32) { } + + + +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl(unsigned long long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl(long long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl_up(long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl_up(unsigned long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl_down(long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl_down(unsigned long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long long __shfl_xor(long long var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long long __shfl_xor(unsigned long long var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl(double var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl_up(double var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl_down(double var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) double __shfl_xor(double var, int laneMask, int width=32) { } + + +static __attribute__((device)) __inline__ long long __shfl_sync(unsigned mask, long long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ unsigned long long __shfl_sync(unsigned mask, unsigned long long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ long long __shfl_up_sync(unsigned mask, long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ unsigned long long __shfl_up_sync(unsigned mask, unsigned long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ long long __shfl_down_sync(unsigned mask, long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ unsigned long long __shfl_down_sync(unsigned mask, unsigned long long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ long long __shfl_xor_sync(unsigned mask, long long var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ unsigned long long __shfl_xor_sync(unsigned mask, unsigned long long var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ double __shfl_sync(unsigned mask, double var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ double __shfl_up_sync(unsigned mask, double var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ double __shfl_down_sync(unsigned mask, double var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ double __shfl_xor_sync(unsigned mask, double var, int laneMask, int width=32) { } + + + +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl(long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl""() is deprecated in favor of ""__shfl""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl(unsigned long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl_up(long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_up""() is deprecated in favor of ""__shfl_up""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl_up(unsigned long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl_down(long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_down""() is deprecated in favor of ""__shfl_down""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl_down(unsigned long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) long __shfl_xor(long var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ __attribute__((deprecated("__shfl_xor""() is deprecated in favor of ""__shfl_xor""_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress this warning)."))) unsigned long __shfl_xor(unsigned long var, int laneMask, int width=32) { } + + +static __attribute__((device)) __inline__ long __shfl_sync(unsigned mask, long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ unsigned long __shfl_sync(unsigned mask, unsigned long var, int srcLane, int width=32) { } +static __attribute__((device)) __inline__ long __shfl_up_sync(unsigned mask, long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ unsigned long __shfl_up_sync(unsigned mask, unsigned long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ long __shfl_down_sync(unsigned mask, long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ unsigned long __shfl_down_sync(unsigned mask, unsigned long var, unsigned int delta, int width=32) { } +static __attribute__((device)) __inline__ long __shfl_xor_sync(unsigned mask, long var, int laneMask, int width=32) { } +static __attribute__((device)) __inline__ unsigned long __shfl_xor_sync(unsigned mask, unsigned long var, int laneMask, int width=32) { } +# 3296 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" 1 +# 87 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ long __ldg(const long *ptr) { } +static __attribute__((device)) __inline__ unsigned long __ldg(const unsigned long *ptr) { } + +static __attribute__((device)) __inline__ char __ldg(const char *ptr) { } +static __attribute__((device)) __inline__ signed char __ldg(const signed char *ptr) { } +static __attribute__((device)) __inline__ short __ldg(const short *ptr) { } +static __attribute__((device)) __inline__ int __ldg(const int *ptr) { } +static __attribute__((device)) __inline__ long long __ldg(const long long *ptr) { } +static __attribute__((device)) __inline__ char2 __ldg(const char2 *ptr) { } +static __attribute__((device)) __inline__ char4 __ldg(const char4 *ptr) { } +static __attribute__((device)) __inline__ short2 __ldg(const short2 *ptr) { } +static __attribute__((device)) __inline__ short4 __ldg(const short4 *ptr) { } +static __attribute__((device)) __inline__ int2 __ldg(const int2 *ptr) { } +static __attribute__((device)) __inline__ int4 __ldg(const int4 *ptr) { } +static __attribute__((device)) __inline__ longlong2 __ldg(const longlong2 *ptr) { } + +static __attribute__((device)) __inline__ unsigned char __ldg(const unsigned char *ptr) { } +static __attribute__((device)) __inline__ unsigned short __ldg(const unsigned short *ptr) { } +static __attribute__((device)) __inline__ unsigned int __ldg(const unsigned int *ptr) { } +static __attribute__((device)) __inline__ unsigned long long __ldg(const unsigned long long *ptr) { } +static __attribute__((device)) __inline__ uchar2 __ldg(const uchar2 *ptr) { } +static __attribute__((device)) __inline__ uchar4 __ldg(const uchar4 *ptr) { } +static __attribute__((device)) __inline__ ushort2 __ldg(const ushort2 *ptr) { } +static __attribute__((device)) __inline__ ushort4 __ldg(const ushort4 *ptr) { } +static __attribute__((device)) __inline__ uint2 __ldg(const uint2 *ptr) { } +static __attribute__((device)) __inline__ uint4 __ldg(const uint4 *ptr) { } +static __attribute__((device)) __inline__ ulonglong2 __ldg(const ulonglong2 *ptr) { } + +static __attribute__((device)) __inline__ float __ldg(const float *ptr) { } +static __attribute__((device)) __inline__ double __ldg(const double *ptr) { } +static __attribute__((device)) __inline__ float2 __ldg(const float2 *ptr) { } +static __attribute__((device)) __inline__ float4 __ldg(const float4 *ptr) { } +static __attribute__((device)) __inline__ double2 __ldg(const double2 *ptr) { } + + + +static __attribute__((device)) __inline__ long __ldcg(const long *ptr) { } +static __attribute__((device)) __inline__ unsigned long __ldcg(const unsigned long *ptr) { } + +static __attribute__((device)) __inline__ char __ldcg(const char *ptr) { } +static __attribute__((device)) __inline__ signed char __ldcg(const signed char *ptr) { } +static __attribute__((device)) __inline__ short __ldcg(const short *ptr) { } +static __attribute__((device)) __inline__ int __ldcg(const int *ptr) { } +static __attribute__((device)) __inline__ long long __ldcg(const long long *ptr) { } +static __attribute__((device)) __inline__ char2 __ldcg(const char2 *ptr) { } +static __attribute__((device)) __inline__ char4 __ldcg(const char4 *ptr) { } +static __attribute__((device)) __inline__ short2 __ldcg(const short2 *ptr) { } +static __attribute__((device)) __inline__ short4 __ldcg(const short4 *ptr) { } +static __attribute__((device)) __inline__ int2 __ldcg(const int2 *ptr) { } +static __attribute__((device)) __inline__ int4 __ldcg(const int4 *ptr) { } +static __attribute__((device)) __inline__ longlong2 __ldcg(const longlong2 *ptr) { } + +static __attribute__((device)) __inline__ unsigned char __ldcg(const unsigned char *ptr) { } +static __attribute__((device)) __inline__ unsigned short __ldcg(const unsigned short *ptr) { } +static __attribute__((device)) __inline__ unsigned int __ldcg(const unsigned int *ptr) { } +static __attribute__((device)) __inline__ unsigned long long __ldcg(const unsigned long long *ptr) { } +static __attribute__((device)) __inline__ uchar2 __ldcg(const uchar2 *ptr) { } +static __attribute__((device)) __inline__ uchar4 __ldcg(const uchar4 *ptr) { } +static __attribute__((device)) __inline__ ushort2 __ldcg(const ushort2 *ptr) { } +static __attribute__((device)) __inline__ ushort4 __ldcg(const ushort4 *ptr) { } +static __attribute__((device)) __inline__ uint2 __ldcg(const uint2 *ptr) { } +static __attribute__((device)) __inline__ uint4 __ldcg(const uint4 *ptr) { } +static __attribute__((device)) __inline__ ulonglong2 __ldcg(const ulonglong2 *ptr) { } + +static __attribute__((device)) __inline__ float __ldcg(const float *ptr) { } +static __attribute__((device)) __inline__ double __ldcg(const double *ptr) { } +static __attribute__((device)) __inline__ float2 __ldcg(const float2 *ptr) { } +static __attribute__((device)) __inline__ float4 __ldcg(const float4 *ptr) { } +static __attribute__((device)) __inline__ double2 __ldcg(const double2 *ptr) { } + + + +static __attribute__((device)) __inline__ long __ldca(const long *ptr) { } +static __attribute__((device)) __inline__ unsigned long __ldca(const unsigned long *ptr) { } + +static __attribute__((device)) __inline__ char __ldca(const char *ptr) { } +static __attribute__((device)) __inline__ signed char __ldca(const signed char *ptr) { } +static __attribute__((device)) __inline__ short __ldca(const short *ptr) { } +static __attribute__((device)) __inline__ int __ldca(const int *ptr) { } +static __attribute__((device)) __inline__ long long __ldca(const long long *ptr) { } +static __attribute__((device)) __inline__ char2 __ldca(const char2 *ptr) { } +static __attribute__((device)) __inline__ char4 __ldca(const char4 *ptr) { } +static __attribute__((device)) __inline__ short2 __ldca(const short2 *ptr) { } +static __attribute__((device)) __inline__ short4 __ldca(const short4 *ptr) { } +static __attribute__((device)) __inline__ int2 __ldca(const int2 *ptr) { } +static __attribute__((device)) __inline__ int4 __ldca(const int4 *ptr) { } +static __attribute__((device)) __inline__ longlong2 __ldca(const longlong2 *ptr) { } + +static __attribute__((device)) __inline__ unsigned char __ldca(const unsigned char *ptr) { } +static __attribute__((device)) __inline__ unsigned short __ldca(const unsigned short *ptr) { } +static __attribute__((device)) __inline__ unsigned int __ldca(const unsigned int *ptr) { } +static __attribute__((device)) __inline__ unsigned long long __ldca(const unsigned long long *ptr) { } +static __attribute__((device)) __inline__ uchar2 __ldca(const uchar2 *ptr) { } +static __attribute__((device)) __inline__ uchar4 __ldca(const uchar4 *ptr) { } +static __attribute__((device)) __inline__ ushort2 __ldca(const ushort2 *ptr) { } +static __attribute__((device)) __inline__ ushort4 __ldca(const ushort4 *ptr) { } +static __attribute__((device)) __inline__ uint2 __ldca(const uint2 *ptr) { } +static __attribute__((device)) __inline__ uint4 __ldca(const uint4 *ptr) { } +static __attribute__((device)) __inline__ ulonglong2 __ldca(const ulonglong2 *ptr) { } + +static __attribute__((device)) __inline__ float __ldca(const float *ptr) { } +static __attribute__((device)) __inline__ double __ldca(const double *ptr) { } +static __attribute__((device)) __inline__ float2 __ldca(const float2 *ptr) { } +static __attribute__((device)) __inline__ float4 __ldca(const float4 *ptr) { } +static __attribute__((device)) __inline__ double2 __ldca(const double2 *ptr) { } + + + +static __attribute__((device)) __inline__ long __ldcs(const long *ptr) { } +static __attribute__((device)) __inline__ unsigned long __ldcs(const unsigned long *ptr) { } + +static __attribute__((device)) __inline__ char __ldcs(const char *ptr) { } +static __attribute__((device)) __inline__ signed char __ldcs(const signed char *ptr) { } +static __attribute__((device)) __inline__ short __ldcs(const short *ptr) { } +static __attribute__((device)) __inline__ int __ldcs(const int *ptr) { } +static __attribute__((device)) __inline__ long long __ldcs(const long long *ptr) { } +static __attribute__((device)) __inline__ char2 __ldcs(const char2 *ptr) { } +static __attribute__((device)) __inline__ char4 __ldcs(const char4 *ptr) { } +static __attribute__((device)) __inline__ short2 __ldcs(const short2 *ptr) { } +static __attribute__((device)) __inline__ short4 __ldcs(const short4 *ptr) { } +static __attribute__((device)) __inline__ int2 __ldcs(const int2 *ptr) { } +static __attribute__((device)) __inline__ int4 __ldcs(const int4 *ptr) { } +static __attribute__((device)) __inline__ longlong2 __ldcs(const longlong2 *ptr) { } + +static __attribute__((device)) __inline__ unsigned char __ldcs(const unsigned char *ptr) { } +static __attribute__((device)) __inline__ unsigned short __ldcs(const unsigned short *ptr) { } +static __attribute__((device)) __inline__ unsigned int __ldcs(const unsigned int *ptr) { } +static __attribute__((device)) __inline__ unsigned long long __ldcs(const unsigned long long *ptr) { } +static __attribute__((device)) __inline__ uchar2 __ldcs(const uchar2 *ptr) { } +static __attribute__((device)) __inline__ uchar4 __ldcs(const uchar4 *ptr) { } +static __attribute__((device)) __inline__ ushort2 __ldcs(const ushort2 *ptr) { } +static __attribute__((device)) __inline__ ushort4 __ldcs(const ushort4 *ptr) { } +static __attribute__((device)) __inline__ uint2 __ldcs(const uint2 *ptr) { } +static __attribute__((device)) __inline__ uint4 __ldcs(const uint4 *ptr) { } +static __attribute__((device)) __inline__ ulonglong2 __ldcs(const ulonglong2 *ptr) { } + +static __attribute__((device)) __inline__ float __ldcs(const float *ptr) { } +static __attribute__((device)) __inline__ double __ldcs(const double *ptr) { } +static __attribute__((device)) __inline__ float2 __ldcs(const float2 *ptr) { } +static __attribute__((device)) __inline__ float4 __ldcs(const float4 *ptr) { } +static __attribute__((device)) __inline__ double2 __ldcs(const double2 *ptr) { } + + + +static __attribute__((device)) __inline__ long __ldlu(const long *ptr) { } +static __attribute__((device)) __inline__ unsigned long __ldlu(const unsigned long *ptr) { } + +static __attribute__((device)) __inline__ char __ldlu(const char *ptr) { } +static __attribute__((device)) __inline__ signed char __ldlu(const signed char *ptr) { } +static __attribute__((device)) __inline__ short __ldlu(const short *ptr) { } +static __attribute__((device)) __inline__ int __ldlu(const int *ptr) { } +static __attribute__((device)) __inline__ long long __ldlu(const long long *ptr) { } +static __attribute__((device)) __inline__ char2 __ldlu(const char2 *ptr) { } +static __attribute__((device)) __inline__ char4 __ldlu(const char4 *ptr) { } +static __attribute__((device)) __inline__ short2 __ldlu(const short2 *ptr) { } +static __attribute__((device)) __inline__ short4 __ldlu(const short4 *ptr) { } +static __attribute__((device)) __inline__ int2 __ldlu(const int2 *ptr) { } +static __attribute__((device)) __inline__ int4 __ldlu(const int4 *ptr) { } +static __attribute__((device)) __inline__ longlong2 __ldlu(const longlong2 *ptr) { } + +static __attribute__((device)) __inline__ unsigned char __ldlu(const unsigned char *ptr) { } +static __attribute__((device)) __inline__ unsigned short __ldlu(const unsigned short *ptr) { } +static __attribute__((device)) __inline__ unsigned int __ldlu(const unsigned int *ptr) { } +static __attribute__((device)) __inline__ unsigned long long __ldlu(const unsigned long long *ptr) { } +static __attribute__((device)) __inline__ uchar2 __ldlu(const uchar2 *ptr) { } +static __attribute__((device)) __inline__ uchar4 __ldlu(const uchar4 *ptr) { } +static __attribute__((device)) __inline__ ushort2 __ldlu(const ushort2 *ptr) { } +static __attribute__((device)) __inline__ ushort4 __ldlu(const ushort4 *ptr) { } +static __attribute__((device)) __inline__ uint2 __ldlu(const uint2 *ptr) { } +static __attribute__((device)) __inline__ uint4 __ldlu(const uint4 *ptr) { } +static __attribute__((device)) __inline__ ulonglong2 __ldlu(const ulonglong2 *ptr) { } + +static __attribute__((device)) __inline__ float __ldlu(const float *ptr) { } +static __attribute__((device)) __inline__ double __ldlu(const double *ptr) { } +static __attribute__((device)) __inline__ float2 __ldlu(const float2 *ptr) { } +static __attribute__((device)) __inline__ float4 __ldlu(const float4 *ptr) { } +static __attribute__((device)) __inline__ double2 __ldlu(const double2 *ptr) { } + + + +static __attribute__((device)) __inline__ long __ldcv(const long *ptr) { } +static __attribute__((device)) __inline__ unsigned long __ldcv(const unsigned long *ptr) { } + +static __attribute__((device)) __inline__ char __ldcv(const char *ptr) { } +static __attribute__((device)) __inline__ signed char __ldcv(const signed char *ptr) { } +static __attribute__((device)) __inline__ short __ldcv(const short *ptr) { } +static __attribute__((device)) __inline__ int __ldcv(const int *ptr) { } +static __attribute__((device)) __inline__ long long __ldcv(const long long *ptr) { } +static __attribute__((device)) __inline__ char2 __ldcv(const char2 *ptr) { } +static __attribute__((device)) __inline__ char4 __ldcv(const char4 *ptr) { } +static __attribute__((device)) __inline__ short2 __ldcv(const short2 *ptr) { } +static __attribute__((device)) __inline__ short4 __ldcv(const short4 *ptr) { } +static __attribute__((device)) __inline__ int2 __ldcv(const int2 *ptr) { } +static __attribute__((device)) __inline__ int4 __ldcv(const int4 *ptr) { } +static __attribute__((device)) __inline__ longlong2 __ldcv(const longlong2 *ptr) { } + +static __attribute__((device)) __inline__ unsigned char __ldcv(const unsigned char *ptr) { } +static __attribute__((device)) __inline__ unsigned short __ldcv(const unsigned short *ptr) { } +static __attribute__((device)) __inline__ unsigned int __ldcv(const unsigned int *ptr) { } +static __attribute__((device)) __inline__ unsigned long long __ldcv(const unsigned long long *ptr) { } +static __attribute__((device)) __inline__ uchar2 __ldcv(const uchar2 *ptr) { } +static __attribute__((device)) __inline__ uchar4 __ldcv(const uchar4 *ptr) { } +static __attribute__((device)) __inline__ ushort2 __ldcv(const ushort2 *ptr) { } +static __attribute__((device)) __inline__ ushort4 __ldcv(const ushort4 *ptr) { } +static __attribute__((device)) __inline__ uint2 __ldcv(const uint2 *ptr) { } +static __attribute__((device)) __inline__ uint4 __ldcv(const uint4 *ptr) { } +static __attribute__((device)) __inline__ ulonglong2 __ldcv(const ulonglong2 *ptr) { } + +static __attribute__((device)) __inline__ float __ldcv(const float *ptr) { } +static __attribute__((device)) __inline__ double __ldcv(const double *ptr) { } +static __attribute__((device)) __inline__ float2 __ldcv(const float2 *ptr) { } +static __attribute__((device)) __inline__ float4 __ldcv(const float4 *ptr) { } +static __attribute__((device)) __inline__ double2 __ldcv(const double2 *ptr) { } + + + +static __attribute__((device)) __inline__ void __stwb(long *ptr, long value) { } +static __attribute__((device)) __inline__ void __stwb(unsigned long *ptr, unsigned long value) { } + +static __attribute__((device)) __inline__ void __stwb(char *ptr, char value) { } +static __attribute__((device)) __inline__ void __stwb(signed char *ptr, signed char value) { } +static __attribute__((device)) __inline__ void __stwb(short *ptr, short value) { } +static __attribute__((device)) __inline__ void __stwb(int *ptr, int value) { } +static __attribute__((device)) __inline__ void __stwb(long long *ptr, long long value) { } +static __attribute__((device)) __inline__ void __stwb(char2 *ptr, char2 value) { } +static __attribute__((device)) __inline__ void __stwb(char4 *ptr, char4 value) { } +static __attribute__((device)) __inline__ void __stwb(short2 *ptr, short2 value) { } +static __attribute__((device)) __inline__ void __stwb(short4 *ptr, short4 value) { } +static __attribute__((device)) __inline__ void __stwb(int2 *ptr, int2 value) { } +static __attribute__((device)) __inline__ void __stwb(int4 *ptr, int4 value) { } +static __attribute__((device)) __inline__ void __stwb(longlong2 *ptr, longlong2 value) { } + +static __attribute__((device)) __inline__ void __stwb(unsigned char *ptr, unsigned char value) { } +static __attribute__((device)) __inline__ void __stwb(unsigned short *ptr, unsigned short value) { } +static __attribute__((device)) __inline__ void __stwb(unsigned int *ptr, unsigned int value) { } +static __attribute__((device)) __inline__ void __stwb(unsigned long long *ptr, unsigned long long value) { } +static __attribute__((device)) __inline__ void __stwb(uchar2 *ptr, uchar2 value) { } +static __attribute__((device)) __inline__ void __stwb(uchar4 *ptr, uchar4 value) { } +static __attribute__((device)) __inline__ void __stwb(ushort2 *ptr, ushort2 value) { } +static __attribute__((device)) __inline__ void __stwb(ushort4 *ptr, ushort4 value) { } +static __attribute__((device)) __inline__ void __stwb(uint2 *ptr, uint2 value) { } +static __attribute__((device)) __inline__ void __stwb(uint4 *ptr, uint4 value) { } +static __attribute__((device)) __inline__ void __stwb(ulonglong2 *ptr, ulonglong2 value) { } + +static __attribute__((device)) __inline__ void __stwb(float *ptr, float value) { } +static __attribute__((device)) __inline__ void __stwb(double *ptr, double value) { } +static __attribute__((device)) __inline__ void __stwb(float2 *ptr, float2 value) { } +static __attribute__((device)) __inline__ void __stwb(float4 *ptr, float4 value) { } +static __attribute__((device)) __inline__ void __stwb(double2 *ptr, double2 value) { } + + + +static __attribute__((device)) __inline__ void __stcg(long *ptr, long value) { } +static __attribute__((device)) __inline__ void __stcg(unsigned long *ptr, unsigned long value) { } + +static __attribute__((device)) __inline__ void __stcg(char *ptr, char value) { } +static __attribute__((device)) __inline__ void __stcg(signed char *ptr, signed char value) { } +static __attribute__((device)) __inline__ void __stcg(short *ptr, short value) { } +static __attribute__((device)) __inline__ void __stcg(int *ptr, int value) { } +static __attribute__((device)) __inline__ void __stcg(long long *ptr, long long value) { } +static __attribute__((device)) __inline__ void __stcg(char2 *ptr, char2 value) { } +static __attribute__((device)) __inline__ void __stcg(char4 *ptr, char4 value) { } +static __attribute__((device)) __inline__ void __stcg(short2 *ptr, short2 value) { } +static __attribute__((device)) __inline__ void __stcg(short4 *ptr, short4 value) { } +static __attribute__((device)) __inline__ void __stcg(int2 *ptr, int2 value) { } +static __attribute__((device)) __inline__ void __stcg(int4 *ptr, int4 value) { } +static __attribute__((device)) __inline__ void __stcg(longlong2 *ptr, longlong2 value) { } + +static __attribute__((device)) __inline__ void __stcg(unsigned char *ptr, unsigned char value) { } +static __attribute__((device)) __inline__ void __stcg(unsigned short *ptr, unsigned short value) { } +static __attribute__((device)) __inline__ void __stcg(unsigned int *ptr, unsigned int value) { } +static __attribute__((device)) __inline__ void __stcg(unsigned long long *ptr, unsigned long long value) { } +static __attribute__((device)) __inline__ void __stcg(uchar2 *ptr, uchar2 value) { } +static __attribute__((device)) __inline__ void __stcg(uchar4 *ptr, uchar4 value) { } +static __attribute__((device)) __inline__ void __stcg(ushort2 *ptr, ushort2 value) { } +static __attribute__((device)) __inline__ void __stcg(ushort4 *ptr, ushort4 value) { } +static __attribute__((device)) __inline__ void __stcg(uint2 *ptr, uint2 value) { } +static __attribute__((device)) __inline__ void __stcg(uint4 *ptr, uint4 value) { } +static __attribute__((device)) __inline__ void __stcg(ulonglong2 *ptr, ulonglong2 value) { } + +static __attribute__((device)) __inline__ void __stcg(float *ptr, float value) { } +static __attribute__((device)) __inline__ void __stcg(double *ptr, double value) { } +static __attribute__((device)) __inline__ void __stcg(float2 *ptr, float2 value) { } +static __attribute__((device)) __inline__ void __stcg(float4 *ptr, float4 value) { } +static __attribute__((device)) __inline__ void __stcg(double2 *ptr, double2 value) { } + + + +static __attribute__((device)) __inline__ void __stcs(long *ptr, long value) { } +static __attribute__((device)) __inline__ void __stcs(unsigned long *ptr, unsigned long value) { } + +static __attribute__((device)) __inline__ void __stcs(char *ptr, char value) { } +static __attribute__((device)) __inline__ void __stcs(signed char *ptr, signed char value) { } +static __attribute__((device)) __inline__ void __stcs(short *ptr, short value) { } +static __attribute__((device)) __inline__ void __stcs(int *ptr, int value) { } +static __attribute__((device)) __inline__ void __stcs(long long *ptr, long long value) { } +static __attribute__((device)) __inline__ void __stcs(char2 *ptr, char2 value) { } +static __attribute__((device)) __inline__ void __stcs(char4 *ptr, char4 value) { } +static __attribute__((device)) __inline__ void __stcs(short2 *ptr, short2 value) { } +static __attribute__((device)) __inline__ void __stcs(short4 *ptr, short4 value) { } +static __attribute__((device)) __inline__ void __stcs(int2 *ptr, int2 value) { } +static __attribute__((device)) __inline__ void __stcs(int4 *ptr, int4 value) { } +static __attribute__((device)) __inline__ void __stcs(longlong2 *ptr, longlong2 value) { } + +static __attribute__((device)) __inline__ void __stcs(unsigned char *ptr, unsigned char value) { } +static __attribute__((device)) __inline__ void __stcs(unsigned short *ptr, unsigned short value) { } +static __attribute__((device)) __inline__ void __stcs(unsigned int *ptr, unsigned int value) { } +static __attribute__((device)) __inline__ void __stcs(unsigned long long *ptr, unsigned long long value) { } +static __attribute__((device)) __inline__ void __stcs(uchar2 *ptr, uchar2 value) { } +static __attribute__((device)) __inline__ void __stcs(uchar4 *ptr, uchar4 value) { } +static __attribute__((device)) __inline__ void __stcs(ushort2 *ptr, ushort2 value) { } +static __attribute__((device)) __inline__ void __stcs(ushort4 *ptr, ushort4 value) { } +static __attribute__((device)) __inline__ void __stcs(uint2 *ptr, uint2 value) { } +static __attribute__((device)) __inline__ void __stcs(uint4 *ptr, uint4 value) { } +static __attribute__((device)) __inline__ void __stcs(ulonglong2 *ptr, ulonglong2 value) { } + +static __attribute__((device)) __inline__ void __stcs(float *ptr, float value) { } +static __attribute__((device)) __inline__ void __stcs(double *ptr, double value) { } +static __attribute__((device)) __inline__ void __stcs(float2 *ptr, float2 value) { } +static __attribute__((device)) __inline__ void __stcs(float4 *ptr, float4 value) { } +static __attribute__((device)) __inline__ void __stcs(double2 *ptr, double2 value) { } + + + +static __attribute__((device)) __inline__ void __stwt(long *ptr, long value) { } +static __attribute__((device)) __inline__ void __stwt(unsigned long *ptr, unsigned long value) { } + +static __attribute__((device)) __inline__ void __stwt(char *ptr, char value) { } +static __attribute__((device)) __inline__ void __stwt(signed char *ptr, signed char value) { } +static __attribute__((device)) __inline__ void __stwt(short *ptr, short value) { } +static __attribute__((device)) __inline__ void __stwt(int *ptr, int value) { } +static __attribute__((device)) __inline__ void __stwt(long long *ptr, long long value) { } +static __attribute__((device)) __inline__ void __stwt(char2 *ptr, char2 value) { } +static __attribute__((device)) __inline__ void __stwt(char4 *ptr, char4 value) { } +static __attribute__((device)) __inline__ void __stwt(short2 *ptr, short2 value) { } +static __attribute__((device)) __inline__ void __stwt(short4 *ptr, short4 value) { } +static __attribute__((device)) __inline__ void __stwt(int2 *ptr, int2 value) { } +static __attribute__((device)) __inline__ void __stwt(int4 *ptr, int4 value) { } +static __attribute__((device)) __inline__ void __stwt(longlong2 *ptr, longlong2 value) { } + +static __attribute__((device)) __inline__ void __stwt(unsigned char *ptr, unsigned char value) { } +static __attribute__((device)) __inline__ void __stwt(unsigned short *ptr, unsigned short value) { } +static __attribute__((device)) __inline__ void __stwt(unsigned int *ptr, unsigned int value) { } +static __attribute__((device)) __inline__ void __stwt(unsigned long long *ptr, unsigned long long value) { } +static __attribute__((device)) __inline__ void __stwt(uchar2 *ptr, uchar2 value) { } +static __attribute__((device)) __inline__ void __stwt(uchar4 *ptr, uchar4 value) { } +static __attribute__((device)) __inline__ void __stwt(ushort2 *ptr, ushort2 value) { } +static __attribute__((device)) __inline__ void __stwt(ushort4 *ptr, ushort4 value) { } +static __attribute__((device)) __inline__ void __stwt(uint2 *ptr, uint2 value) { } +static __attribute__((device)) __inline__ void __stwt(uint4 *ptr, uint4 value) { } +static __attribute__((device)) __inline__ void __stwt(ulonglong2 *ptr, ulonglong2 value) { } + +static __attribute__((device)) __inline__ void __stwt(float *ptr, float value) { } +static __attribute__((device)) __inline__ void __stwt(double *ptr, double value) { } +static __attribute__((device)) __inline__ void __stwt(float2 *ptr, float2 value) { } +static __attribute__((device)) __inline__ void __stwt(float4 *ptr, float4 value) { } +static __attribute__((device)) __inline__ void __stwt(double2 *ptr, double2 value) { } +# 460 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_l(unsigned int lo, unsigned int hi, unsigned int shift) { } +# 472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_lc(unsigned int lo, unsigned int hi, unsigned int shift) { } +# 485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_r(unsigned int lo, unsigned int hi, unsigned int shift) { } +# 497 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +static __attribute__((device)) __inline__ unsigned int __funnelshift_rc(unsigned int lo, unsigned int hi, unsigned int shift) { } +# 3297 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_intrinsics.h" 1 +# 111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_intrinsics.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" 1 +# 112 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_35_intrinsics.h" 2 +# 3298 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" 1 +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +static __attribute__((device)) __inline__ int __dp2a_lo(int srcA, int srcB, int c) { } +static __attribute__((device)) __inline__ unsigned int __dp2a_lo(unsigned int srcA, unsigned int srcB, unsigned int c) { } + +static __attribute__((device)) __inline__ int __dp2a_lo(short2 srcA, char4 srcB, int c) { } +static __attribute__((device)) __inline__ unsigned int __dp2a_lo(ushort2 srcA, uchar4 srcB, unsigned int c) { } + +static __attribute__((device)) __inline__ int __dp2a_hi(int srcA, int srcB, int c) { } +static __attribute__((device)) __inline__ unsigned int __dp2a_hi(unsigned int srcA, unsigned int srcB, unsigned int c) { } + +static __attribute__((device)) __inline__ int __dp2a_hi(short2 srcA, char4 srcB, int c) { } +static __attribute__((device)) __inline__ unsigned int __dp2a_hi(ushort2 srcA, uchar4 srcB, unsigned int c) { } + + + + + + +static __attribute__((device)) __inline__ int __dp4a(int srcA, int srcB, int c) { } +static __attribute__((device)) __inline__ unsigned int __dp4a(unsigned int srcA, unsigned int srcB, unsigned int c) { } + +static __attribute__((device)) __inline__ int __dp4a(char4 srcA, char4 srcB, int c) { } +static __attribute__((device)) __inline__ unsigned int __dp4a(uchar4 srcA, uchar4 srcB, unsigned int c) { } +# 3299 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 80 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" 2 +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, unsigned value) { } +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, int value) { } +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, unsigned long value) { } +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, long value) { } +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, unsigned long long value) { } +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, long long value) { } +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, float value) { } +static __attribute__((device)) __inline__ unsigned int __match_any_sync(unsigned mask, double value) { } + +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, unsigned value, int *pred) { } +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, int value, int *pred) { } +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, unsigned long value, int *pred) { } +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, long value, int *pred) { } +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, unsigned long long value, int *pred) { } +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, long long value, int *pred) { } +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, float value, int *pred) { } +static __attribute__((device)) __inline__ unsigned int __match_all_sync(unsigned mask, double value, int *pred) { } + +static __attribute__((device)) __inline__ void __nanosleep(unsigned int ns) { } + +static __attribute__((device)) __inline__ unsigned short int atomicCAS(unsigned short int *address, unsigned short int compare, unsigned short int val) { } +# 3300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" 1 +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/builtin_types.h" 1 +# 80 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" 2 + +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/host_defines.h" 1 +# 82 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" 2 +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +static __attribute__((device)) __inline__ unsigned __reduce_add_sync(unsigned mask, unsigned value) { } +static __attribute__((device)) __inline__ unsigned __reduce_min_sync(unsigned mask, unsigned value) { } +static __attribute__((device)) __inline__ unsigned __reduce_max_sync(unsigned mask, unsigned value) { } + +static __attribute__((device)) __inline__ int __reduce_add_sync(unsigned mask, int value) { } +static __attribute__((device)) __inline__ int __reduce_min_sync(unsigned mask, int value) { } +static __attribute__((device)) __inline__ int __reduce_max_sync(unsigned mask, int value) { } + +static __attribute__((device)) __inline__ unsigned __reduce_and_sync(unsigned mask, unsigned value) { } +static __attribute__((device)) __inline__ unsigned __reduce_or_sync(unsigned mask, unsigned value) { } +static __attribute__((device)) __inline__ unsigned __reduce_xor_sync(unsigned mask, unsigned value) { } + + +extern "C" { +inline __attribute__((device)) void *__nv_associate_access_property(const void *ptr, + unsigned long long property) { + extern __attribute__((device)) void *__nv_associate_access_property_impl(const void *, + unsigned long long); + return __nv_associate_access_property_impl(ptr, property); +} + +inline __attribute__((device)) void __nv_memcpy_async_shared_global_4(void *dst, + const void *src, + unsigned src_size) { + extern __attribute__((device)) void __nv_memcpy_async_shared_global_4_impl(void *, + const void *, + unsigned); + __nv_memcpy_async_shared_global_4_impl(dst, src, src_size); +} + +inline __attribute__((device)) void __nv_memcpy_async_shared_global_8(void *dst, + const void *src, + unsigned src_size) { + extern __attribute__((device)) void __nv_memcpy_async_shared_global_8_impl(void *, + const void *, + unsigned); + __nv_memcpy_async_shared_global_8_impl(dst, src, src_size); +} + +inline __attribute__((device)) void __nv_memcpy_async_shared_global_16(void *dst, + const void *src, + unsigned src_size) { + extern __attribute__((device)) void __nv_memcpy_async_shared_global_16_impl(void *, + const void *, + unsigned); + __nv_memcpy_async_shared_global_16_impl(dst, src, src_size); +} + +} +# 3301 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" 1 +# 122 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dread(T *res, surface surf, int x, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf1Dread(surface surf, int x, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dread(T *res, surface surf, int x, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dread(T *res, surface surf, int x, int y, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf2Dread(surface surf, int x, int y, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dread(T *res, surface surf, int x, int y, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dread(T *res, surface surf, int x, int y, int z, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf3Dread(surface surf, int x, int y, int z, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dread(T *res, surface surf, int x, int y, int z, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredread(T *res, surface surf, int x, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf1DLayeredread(surface surf, int x, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredread(T *res, surface surf, int x, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredread(T *res, surface surf, int x, int y, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surf2DLayeredread(surface surf, int x, int y, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredread(T *res, surface surf, int x, int y, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapread(T *res, surface surf, int x, int y, int face, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surfCubemapread(surface surf, int x, int y, int face, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapread(T *res, surface surf, int x, int y, int face, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredread(T *res, surface surf, int x, int y, int layerFace, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) T surfCubemapLayeredread(surface surf, int x, int y, int layerFace, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredread(T *res, surface surf, int x, int y, int layerFace, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dwrite(T val, surface surf, int x, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1Dwrite(T val, surface surf, int x, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dwrite(T val, surface surf, int x, int y, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2Dwrite(T val, surface surf, int x, int y, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dwrite(T val, surface surf, int x, int y, int z, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf3Dwrite(T val, surface surf, int x, int y, int z, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredwrite(T val, surface surf, int x, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf1DLayeredwrite(T val, surface surf, int x, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredwrite(T val, surface surf, int x, int y, int layer, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surf2DLayeredwrite(T val, surface surf, int x, int y, int layer, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapwrite(T val, surface surf, int x, int y, int face, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapwrite(T val, surface surf, int x, int y, int face, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + + + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredwrite(T val, surface surf, int x, int y, int layerFace, int s, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((deprecated)) __attribute__((device)) __inline__ __attribute__((always_inline)) void surfCubemapLayeredwrite(T val, surface surf, int x, int y, int layerFace, enum cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} +# 3302 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" 1 +# 72 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template +struct __nv_tex_rmet_ret { }; + +template<> struct __nv_tex_rmet_ret { typedef char type; }; +template<> struct __nv_tex_rmet_ret { typedef signed char type; }; +template<> struct __nv_tex_rmet_ret { typedef unsigned char type; }; +template<> struct __nv_tex_rmet_ret { typedef char1 type; }; +template<> struct __nv_tex_rmet_ret { typedef uchar1 type; }; +template<> struct __nv_tex_rmet_ret { typedef char2 type; }; +template<> struct __nv_tex_rmet_ret { typedef uchar2 type; }; +template<> struct __nv_tex_rmet_ret { typedef char4 type; }; +template<> struct __nv_tex_rmet_ret { typedef uchar4 type; }; + +template<> struct __nv_tex_rmet_ret { typedef short type; }; +template<> struct __nv_tex_rmet_ret { typedef unsigned short type; }; +template<> struct __nv_tex_rmet_ret { typedef short1 type; }; +template<> struct __nv_tex_rmet_ret { typedef ushort1 type; }; +template<> struct __nv_tex_rmet_ret { typedef short2 type; }; +template<> struct __nv_tex_rmet_ret { typedef ushort2 type; }; +template<> struct __nv_tex_rmet_ret { typedef short4 type; }; +template<> struct __nv_tex_rmet_ret { typedef ushort4 type; }; + +template<> struct __nv_tex_rmet_ret { typedef int type; }; +template<> struct __nv_tex_rmet_ret { typedef unsigned int type; }; +template<> struct __nv_tex_rmet_ret { typedef int1 type; }; +template<> struct __nv_tex_rmet_ret { typedef uint1 type; }; +template<> struct __nv_tex_rmet_ret { typedef int2 type; }; +template<> struct __nv_tex_rmet_ret { typedef uint2 type; }; +template<> struct __nv_tex_rmet_ret { typedef int4 type; }; +template<> struct __nv_tex_rmet_ret { typedef uint4 type; }; +# 113 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template<> struct __nv_tex_rmet_ret { typedef float type; }; +template<> struct __nv_tex_rmet_ret { typedef float1 type; }; +template<> struct __nv_tex_rmet_ret { typedef float2 type; }; +template<> struct __nv_tex_rmet_ret { typedef float4 type; }; + + +template struct __nv_tex_rmet_cast { typedef T* type; }; +# 131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1Dfetch(texture t, int x) +{ + + + + + +} + +template +struct __nv_tex_rmnf_ret { }; + +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float1 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float2 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; +template <> struct __nv_tex_rmnf_ret { typedef float4 type; }; + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1Dfetch(texture t, int x) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1D(texture t, float x) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1D(texture t, float x) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2D(texture t, float x, float y) +{ + + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2D(texture t, float x, float y) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLayered(texture t, float x, int layer) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLayered(texture t, float x, int layer) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLayered(texture t, float x, float y, int layer) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLayered(texture t, float x, float y, int layer) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex3D(texture t, float x, float y, float z) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex3D(texture t, float x, float y, float z) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemap(texture t, float x, float y, float z) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemap(texture t, float x, float y, float z) +{ + + + + + + +} + + +template +struct __nv_tex2dgather_ret { }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef char4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uchar4 type; }; + +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef short4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; +template <> struct __nv_tex2dgather_ret { typedef ushort4 type; }; + +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef int4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; +template <> struct __nv_tex2dgather_ret { typedef uint4 type; }; + +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; +template <> struct __nv_tex2dgather_ret { typedef float4 type; }; + +template +static __attribute__((device)) __inline__ __attribute__((always_inline)) typename __nv_tex2dgather_ret::type tex2Dgather(texture t, float x, float y, int comp=0) +{ + + + + + + +} + + +template struct __nv_tex2dgather_rmnf_ret { }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; +template<> struct __nv_tex2dgather_rmnf_ret { typedef float4 type; }; + +template +static __attribute__((device)) __inline__ __attribute__((always_inline)) typename __nv_tex2dgather_rmnf_ret::type tex2Dgather(texture t, float x, float y, int comp = 0) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLod(texture t, float x, float level) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLod(texture t, float x, float level) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLod(texture t, float x, float y, float level) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLod(texture t, float x, float y, float level) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLayeredLod(texture t, float x, int layer, float level) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLayeredLod(texture t, float x, int layer, float level) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLayeredLod(texture t, float x, float y, int layer, float level) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLayeredLod(texture t, float x, float y, int layer, float level) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex3DLod(texture t, float x, float y, float z, float level) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex3DLod(texture t, float x, float y, float z, float level) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLod(texture t, float x, float y, float z, float level) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLod(texture t, float x, float y, float z, float level) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLayered(texture t, float x, float y, float z, int layer) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLayered(texture t, float x, float y, float z, int layer) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLayeredLod(texture t, float x, float y, float z, int layer, float level) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLayeredLod(texture t, float x, float y, float z, int layer, float level) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type texCubemapLayeredGrad(texture t, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type texCubemapLayeredGrad(texture t, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DGrad(texture t, float x, float dPdx, float dPdy) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DGrad(texture t, float x, float dPdx, float dPdy) +{ + + + + + + +} + + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DGrad(texture t, float x, float y, float2 dPdx, float2 dPdy) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DGrad(texture t, float x, float y, float2 dPdx, float2 dPdy) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex1DLayeredGrad(texture t, float x, int layer, float dPdx, float dPdy) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex1DLayeredGrad(texture t, float x, int layer, float dPdx, float dPdy) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex2DLayeredGrad(texture t, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex2DLayeredGrad(texture t, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + + + + + +} + + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmet_ret::type tex3DGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + + + +} + +template +static __attribute__((deprecated)) __inline__ __attribute__((always_inline)) __attribute__((device)) typename __nv_tex_rmnf_ret::type tex3DGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + + + + +} +# 3303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" 1 +# 64 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template struct __nv_itex_trait { }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; +template<> struct __nv_itex_trait { typedef void type; }; + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1Dfetch(T *ptr, cudaTextureObject_t obj, int x) +{ + + + +} + +template +static __attribute__((device)) T tex1Dfetch(cudaTextureObject_t texObject, int x) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1D(T *ptr, cudaTextureObject_t obj, float x) +{ + + + +} + + +template +static __attribute__((device)) T tex1D(cudaTextureObject_t texObject, float x) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2D(T *ptr, cudaTextureObject_t obj, float x, float y) +{ + + + +} + +template +static __attribute__((device)) T tex2D(cudaTextureObject_t texObject, float x, float y) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2D(T *ptr, cudaTextureObject_t obj, float x, float y, + bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex2D(cudaTextureObject_t texObject, float x, float y, bool* isResident) +{ + + + + + +} + + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex3D(T *ptr, cudaTextureObject_t obj, float x, float y, float z) +{ + + + +} + +template +static __attribute__((device)) T tex3D(cudaTextureObject_t texObject, float x, float y, float z) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex3D(T *ptr, cudaTextureObject_t obj, float x, float y, float z, + bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex3D(cudaTextureObject_t texObject, float x, float y, float z, bool* isResident) +{ + + + + + +} + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLayered(T *ptr, cudaTextureObject_t obj, float x, int layer) +{ + + + +} + +template +static __attribute__((device)) T tex1DLayered(cudaTextureObject_t texObject, float x, int layer) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayered(T *ptr, cudaTextureObject_t obj, float x, float y, int layer) +{ + + + +} + +template +static __attribute__((device)) T tex2DLayered(cudaTextureObject_t texObject, float x, float y, int layer) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayered(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex2DLayered(cudaTextureObject_t texObject, float x, float y, int layer, bool* isResident) +{ + + + + + +} + + + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemap(T *ptr, cudaTextureObject_t obj, float x, float y, float z) +{ + + + +} + + +template +static __attribute__((device)) T texCubemap(cudaTextureObject_t texObject, float x, float y, float z) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLayered(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer) +{ + + + +} + +template +static __attribute__((device)) T texCubemapLayered(cudaTextureObject_t texObject, float x, float y, float z, int layer) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2Dgather(T *ptr, cudaTextureObject_t obj, float x, float y, int comp = 0) +{ + + + +} + +template +static __attribute__((device)) T tex2Dgather(cudaTextureObject_t to, float x, float y, int comp = 0) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2Dgather(T *ptr, cudaTextureObject_t obj, float x, float y, bool* isResident, int comp = 0) +{ + + + + + +} + +template +static __attribute__((device)) T tex2Dgather(cudaTextureObject_t to, float x, float y, bool* isResident, int comp = 0) +{ + + + + + +} + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLod(T *ptr, cudaTextureObject_t obj, float x, float level) +{ + + + +} + +template +static __attribute__((device)) T tex1DLod(cudaTextureObject_t texObject, float x, float level) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float level) +{ + + + +} + +template +static __attribute__((device)) T tex2DLod(cudaTextureObject_t texObject, float x, float y, float level) +{ + + + + + +} + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float level, bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex2DLod(cudaTextureObject_t texObject, float x, float y, float level, bool* isResident) +{ + + + + + +} + + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex3DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level) +{ + + + +} + +template +static __attribute__((device)) T tex3DLod(cudaTextureObject_t texObject, float x, float y, float z, float level) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex3DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level, bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex3DLod(cudaTextureObject_t texObject, float x, float y, float z, float level, bool* isResident) +{ + + + + + +} + + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, int layer, float level) +{ + + + +} + +template +static __attribute__((device)) T tex1DLayeredLod(cudaTextureObject_t texObject, float x, int layer, float level) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, float level) +{ + + + +} + +template +static __attribute__((device)) T tex2DLayeredLod(cudaTextureObject_t texObject, float x, float y, int layer, float level) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, float level, bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex2DLayeredLod(cudaTextureObject_t texObject, float x, float y, int layer, float level, bool* isResident) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level) +{ + + + +} + +template +static __attribute__((device)) T texCubemapLod(cudaTextureObject_t texObject, float x, float y, float z, float level) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + +} + +template +static __attribute__((device)) T texCubemapGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer, float level) +{ + + + +} + +template +static __attribute__((device)) T texCubemapLayeredLod(cudaTextureObject_t texObject, float x, float y, float z, int layer, float level) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DGrad(T *ptr, cudaTextureObject_t obj, float x, float dPdx, float dPdy) +{ + + + +} + +template +static __attribute__((device)) T tex1DGrad(cudaTextureObject_t texObject, float x, float dPdx, float dPdy) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float2 dPdx, float2 dPdy) +{ + + + + +} + +template +static __attribute__((device)) T tex2DGrad(cudaTextureObject_t texObject, float x, float y, float2 dPdx, float2 dPdy) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float2 dPdx, float2 dPdy, bool* isResident) +{ + + + + + + +} + +template +static __attribute__((device)) T tex2DGrad(cudaTextureObject_t texObject, float x, float y, float2 dPdx, float2 dPdy, bool* isResident) +{ + + + + + +} + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex3DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + +} + +template +static __attribute__((device)) T tex3DGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex3DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy, bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex3DGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy, bool* isResident) +{ + + + + + +} + + + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex1DLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, int layer, float dPdx, float dPdy) +{ + + + +} + +template +static __attribute__((device)) T tex1DLayeredGrad(cudaTextureObject_t texObject, float x, int layer, float dPdx, float dPdy) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayeredGrad(T * ptr, cudaTextureObject_t obj, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + + +} + +template +static __attribute__((device)) T tex2DLayeredGrad(cudaTextureObject_t texObject, float x, float y, int layer, float2 dPdx, float2 dPdy) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_itex_trait::type tex2DLayeredGrad(T * ptr, cudaTextureObject_t obj, float x, float y, int layer, float2 dPdx, float2 dPdy, bool* isResident) +{ + + + + + +} + +template +static __attribute__((device)) T tex2DLayeredGrad(cudaTextureObject_t texObject, float x, float y, int layer, float2 dPdx, float2 dPdy, bool* isResident) +{ + + + + + +} + + + +template +static __attribute__((device)) typename __nv_itex_trait::type texCubemapLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + + +} + +template +static __attribute__((device)) T texCubemapLayeredGrad(cudaTextureObject_t texObject, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +{ + + + + + +} +# 3304 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" 1 +# 59 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template struct __nv_isurf_trait { }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; + +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; + +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; +template<> struct __nv_isurf_trait { typedef void type; }; + + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1Dread(T *ptr, cudaSurfaceObject_t obj, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) T surf1Dread(cudaSurfaceObject_t surfObject, int x, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2Dread(T *ptr, cudaSurfaceObject_t obj, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) T surf2Dread(cudaSurfaceObject_t surfObject, int x, int y, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + + + + +} + + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf3Dread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) T surf3Dread(cudaSurfaceObject_t surfObject, int x, int y, int z, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1DLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) T surf1DLayeredread(cudaSurfaceObject_t surfObject, int x, int layer, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2DLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) T surf2DLayeredread(cudaSurfaceObject_t surfObject, int x, int y, int layer, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) T surfCubemapread(cudaSurfaceObject_t surfObject, int x, int y, int face, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int layerface, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) T surfCubemapLayeredread(cudaSurfaceObject_t surfObject, int x, int y, int layerface, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +{ + + + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1Dwrite(T val, cudaSurfaceObject_t obj, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2Dwrite(T val, cudaSurfaceObject_t obj, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf3Dwrite(T val, cudaSurfaceObject_t obj, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf1DLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surf2DLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapwrite(T val, cudaSurfaceObject_t obj, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} + +template +static __attribute__((device)) typename __nv_isurf_trait::type surfCubemapLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int y, int layerface, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +{ + + + +} +# 3305 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/cudacc_ext.h" 1 +# 3306 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" 2 + + +extern "C" __attribute__((host)) __attribute__((device)) unsigned __cudaPushCallConfiguration(dim3 gridDim, + dim3 blockDim, + size_t sharedMem = 0, + struct CUstream_st *stream = 0); +# 119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 1 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_launch_parameters.h" 1 +# 68 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_launch_parameters.h" +extern "C" { + + +uint3 __attribute__((device_builtin)) extern const threadIdx; +uint3 __attribute__((device_builtin)) extern const blockIdx; +dim3 __attribute__((device_builtin)) extern const blockDim; +dim3 __attribute__((device_builtin)) extern const gridDim; +int __attribute__((device_builtin)) extern const warpSize; + + + + +} +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 2 +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaLaunchKernel( + const T *func, + dim3 gridDim, + dim3 blockDim, + void **args, + size_t sharedMem = 0, + cudaStream_t stream = 0 +) +{ + return ::cudaLaunchKernel((const void *)func, gridDim, blockDim, args, sharedMem, stream); +} +# 263 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaLaunchCooperativeKernel( + const T *func, + dim3 gridDim, + dim3 blockDim, + void **args, + size_t sharedMem = 0, + cudaStream_t stream = 0 +) +{ + return ::cudaLaunchCooperativeKernel((const void *)func, gridDim, blockDim, args, sharedMem, stream); +} +# 307 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static __inline__ __attribute__((host)) cudaError_t cudaEventCreate( + cudaEvent_t *event, + unsigned int flags +) +{ + return ::cudaEventCreateWithFlags(event, flags); +} +# 372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static __inline__ __attribute__((host)) cudaError_t cudaMallocHost( + void **ptr, + size_t size, + unsigned int flags +) +{ + return ::cudaHostAlloc(ptr, size, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaHostAlloc( + T **ptr, + size_t size, + unsigned int flags +) +{ + return ::cudaHostAlloc((void**)(void*)ptr, size, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaHostGetDevicePointer( + T **pDevice, + void *pHost, + unsigned int flags +) +{ + return ::cudaHostGetDevicePointer((void**)(void*)pDevice, pHost, flags); +} +# 501 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocManaged( + T **devPtr, + size_t size, + unsigned int flags = 0x01 +) +{ + return ::cudaMallocManaged((void**)(void*)devPtr, size, flags); +} +# 591 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaStreamAttachMemAsync( + cudaStream_t stream, + T *devPtr, + size_t length = 0, + unsigned int flags = 0x04 +) +{ + return ::cudaStreamAttachMemAsync(stream, (void*)devPtr, length, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMalloc( + T **devPtr, + size_t size +) +{ + return ::cudaMalloc((void**)(void*)devPtr, size); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocHost( + T **ptr, + size_t size, + unsigned int flags = 0 +) +{ + return cudaMallocHost((void**)(void*)ptr, size, flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocPitch( + T **devPtr, + size_t *pitch, + size_t width, + size_t height +) +{ + return ::cudaMallocPitch((void**)(void*)devPtr, pitch, width, height); +} +# 641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static __inline__ __attribute__((host)) cudaError_t cudaMallocAsync( + void **ptr, + size_t size, + cudaMemPool_t memPool, + cudaStream_t stream +) +{ + return ::cudaMallocFromPoolAsync(ptr, size, memPool, stream); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocAsync( + T **ptr, + size_t size, + cudaMemPool_t memPool, + cudaStream_t stream +) +{ + return ::cudaMallocFromPoolAsync((void**)(void*)ptr, size, memPool, stream); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocAsync( + T **ptr, + size_t size, + cudaStream_t stream +) +{ + return ::cudaMallocAsync((void**)(void*)ptr, size, stream); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaMallocFromPoolAsync( + T **ptr, + size_t size, + cudaMemPool_t memPool, + cudaStream_t stream +) +{ + return ::cudaMallocFromPoolAsync((void**)(void*)ptr, size, memPool, stream); +} +# 720 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyToSymbol( + const T &symbol, + const void *src, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyHostToDevice +) +{ + return ::cudaMemcpyToSymbol((const void*)&symbol, src, count, offset, kind); +} +# 774 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyToSymbolAsync( + const T &symbol, + const void *src, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyHostToDevice, + cudaStream_t stream = 0 +) +{ + return ::cudaMemcpyToSymbolAsync((const void*)&symbol, src, count, offset, kind, stream); +} +# 822 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyFromSymbol( + void *dst, + const T &symbol, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyDeviceToHost +) +{ + return ::cudaMemcpyFromSymbol(dst, (const void*)&symbol, count, offset, kind); +} +# 876 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaMemcpyFromSymbolAsync( + void *dst, + const T &symbol, + size_t count, + size_t offset = 0, + enum cudaMemcpyKind kind = cudaMemcpyDeviceToHost, + cudaStream_t stream = 0 +) +{ + return ::cudaMemcpyFromSymbolAsync(dst, (const void*)&symbol, count, offset, kind, stream); +} +# 945 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeToSymbol( + cudaGraphNode_t *pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t *pDependencies, + size_t numDependencies, + const T &symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphAddMemcpyNodeToSymbol(pGraphNode, graph, pDependencies, numDependencies, (const void*)&symbol, src, count, offset, kind); +} +# 1016 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphAddMemcpyNodeFromSymbol( + cudaGraphNode_t* pGraphNode, + cudaGraph_t graph, + const cudaGraphNode_t* pDependencies, + size_t numDependencies, + void* dst, + const T &symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphAddMemcpyNodeFromSymbol(pGraphNode, graph, pDependencies, numDependencies, dst, (const void*)&symbol, count, offset, kind); +} +# 1067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsToSymbol( + cudaGraphNode_t node, + const T &symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphMemcpyNodeSetParamsToSymbol(node, (const void*)&symbol, src, count, offset, kind); +} +# 1115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphMemcpyNodeSetParamsFromSymbol( + cudaGraphNode_t node, + void* dst, + const T &symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphMemcpyNodeSetParamsFromSymbol(node, dst, (const void*)&symbol, count, offset, kind); +} +# 1173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsToSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + const T &symbol, + const void* src, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphExecMemcpyNodeSetParamsToSymbol(hGraphExec, node, (const void*)&symbol, src, count, offset, kind); +} +# 1232 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGraphExecMemcpyNodeSetParamsFromSymbol( + cudaGraphExec_t hGraphExec, + cudaGraphNode_t node, + void* dst, + const T &symbol, + size_t count, + size_t offset, + enum cudaMemcpyKind kind) +{ + return ::cudaGraphExecMemcpyNodeSetParamsFromSymbol(hGraphExec, node, dst, (const void*)&symbol, count, offset, kind); +} +# 1271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaUserObjectCreate( + cudaUserObject_t *object_out, + T *objectToWrap, + unsigned int initialRefcount, + unsigned int flags) +{ + return ::cudaUserObjectCreate( + object_out, + objectToWrap, + [](void *vpObj) { delete reinterpret_cast(vpObj); }, + initialRefcount, + flags); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaUserObjectCreate( + cudaUserObject_t *object_out, + T *objectToWrap, + unsigned int initialRefcount, + cudaUserObjectFlags flags) +{ + return cudaUserObjectCreate(object_out, objectToWrap, initialRefcount, (unsigned int)flags); +} +# 1321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGetSymbolAddress( + void **devPtr, + const T &symbol +) +{ + return ::cudaGetSymbolAddress(devPtr, (const void*)&symbol); +} +# 1353 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaGetSymbolSize( + size_t *size, + const T &symbol +) +{ + return ::cudaGetSymbolSize(size, (const void*)&symbol); +} +# 1397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture( + size_t *offset, + const struct texture &tex, + const void *devPtr, + const struct cudaChannelFormatDesc &desc, + size_t size = +# 1403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 3 4 + (0x7fffffff * 2U + 1U) + +# 1404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +) +{ + return ::cudaBindTexture(offset, &tex, devPtr, &desc, size); +} +# 1443 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture( + size_t *offset, + const struct texture &tex, + const void *devPtr, + size_t size = +# 1448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" 3 4 + (0x7fffffff * 2U + 1U) + +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +) +{ + return cudaBindTexture(offset, tex, devPtr, tex.channelDesc, size); +} +# 1500 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture2D( + size_t *offset, + const struct texture &tex, + const void *devPtr, + const struct cudaChannelFormatDesc &desc, + size_t width, + size_t height, + size_t pitch +) +{ + return ::cudaBindTexture2D(offset, &tex, devPtr, &desc, width, height, pitch); +} +# 1559 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTexture2D( + size_t *offset, + const struct texture &tex, + const void *devPtr, + size_t width, + size_t height, + size_t pitch +) +{ + return ::cudaBindTexture2D(offset, &tex, devPtr, &tex.channelDesc, width, height, pitch); +} +# 1602 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToArray( + const struct texture &tex, + cudaArray_const_t array, + const struct cudaChannelFormatDesc &desc +) +{ + return ::cudaBindTextureToArray(&tex, array, &desc); +} +# 1641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToArray( + const struct texture &tex, + cudaArray_const_t array +) +{ + struct cudaChannelFormatDesc desc; + cudaError_t err = ::cudaGetChannelDesc(&desc, array); + + return err == cudaSuccess ? cudaBindTextureToArray(tex, array, desc) : err; +} +# 1683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToMipmappedArray( + const struct texture &tex, + cudaMipmappedArray_const_t mipmappedArray, + const struct cudaChannelFormatDesc &desc +) +{ + return ::cudaBindTextureToMipmappedArray(&tex, mipmappedArray, &desc); +} +# 1722 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindTextureToMipmappedArray( + const struct texture &tex, + cudaMipmappedArray_const_t mipmappedArray +) +{ + struct cudaChannelFormatDesc desc; + cudaArray_t levelArray; + cudaError_t err = ::cudaGetMipmappedArrayLevel(&levelArray, mipmappedArray, 0); + + if (err != cudaSuccess) { + return err; + } + err = ::cudaGetChannelDesc(&desc, levelArray); + + return err == cudaSuccess ? cudaBindTextureToMipmappedArray(tex, mipmappedArray, desc) : err; +} +# 1765 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaUnbindTexture( + const struct texture &tex +) +{ + return ::cudaUnbindTexture(&tex); +} +# 1801 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaGetTextureAlignmentOffset( + size_t *offset, + const struct texture &tex +) +{ + return ::cudaGetTextureAlignmentOffset(offset, &tex); +} +# 1853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncSetCacheConfig( + T *func, + enum cudaFuncCache cacheConfig +) +{ + return ::cudaFuncSetCacheConfig((const void*)func, cacheConfig); +} + +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncSetSharedMemConfig( + T *func, + enum cudaSharedMemConfig config +) +{ + return ::cudaFuncSetSharedMemConfig((const void*)func, config); +} +# 1901 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor( + int *numBlocks, + T func, + int blockSize, + size_t dynamicSMemSize) +{ + return ::cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(numBlocks, (const void*)func, blockSize, dynamicSMemSize, 0x00); +} +# 1953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags( + int *numBlocks, + T func, + int blockSize, + size_t dynamicSMemSize, + unsigned int flags) +{ + return ::cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(numBlocks, (const void*)func, blockSize, dynamicSMemSize, flags); +} + + + + +class __cudaOccupancyB2DHelper { + size_t n; +public: + inline __attribute__((host)) __attribute__((device)) __cudaOccupancyB2DHelper(size_t n_) : n(n_) {} + inline __attribute__((host)) __attribute__((device)) size_t operator()(int) + { + return n; + } +}; +# 2023 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags( + int *minGridSize, + int *blockSize, + T func, + UnaryFunction blockSizeToDynamicSMemSize, + int blockSizeLimit = 0, + unsigned int flags = 0) +{ + cudaError_t status; + + + int device; + struct cudaFuncAttributes attr; + + + int maxThreadsPerMultiProcessor; + int warpSize; + int devMaxThreadsPerBlock; + int multiProcessorCount; + int funcMaxThreadsPerBlock; + int occupancyLimit; + int granularity; + + + int maxBlockSize = 0; + int numBlocks = 0; + int maxOccupancy = 0; + + + int blockSizeToTryAligned; + int blockSizeToTry; + int blockSizeLimitAligned; + int occupancyInBlocks; + int occupancyInThreads; + size_t dynamicSMemSize; + + + + + + if (!minGridSize || !blockSize || !func) { + return cudaErrorInvalidValue; + } + + + + + + status = ::cudaGetDevice(&device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &maxThreadsPerMultiProcessor, + cudaDevAttrMaxThreadsPerMultiProcessor, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &warpSize, + cudaDevAttrWarpSize, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &devMaxThreadsPerBlock, + cudaDevAttrMaxThreadsPerBlock, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaDeviceGetAttribute( + &multiProcessorCount, + cudaDevAttrMultiProcessorCount, + device); + if (status != cudaSuccess) { + return status; + } + + status = cudaFuncGetAttributes(&attr, func); + if (status != cudaSuccess) { + return status; + } + + funcMaxThreadsPerBlock = attr.maxThreadsPerBlock; + + + + + + occupancyLimit = maxThreadsPerMultiProcessor; + granularity = warpSize; + + if (blockSizeLimit == 0) { + blockSizeLimit = devMaxThreadsPerBlock; + } + + if (devMaxThreadsPerBlock < blockSizeLimit) { + blockSizeLimit = devMaxThreadsPerBlock; + } + + if (funcMaxThreadsPerBlock < blockSizeLimit) { + blockSizeLimit = funcMaxThreadsPerBlock; + } + + blockSizeLimitAligned = ((blockSizeLimit + (granularity - 1)) / granularity) * granularity; + + for (blockSizeToTryAligned = blockSizeLimitAligned; blockSizeToTryAligned > 0; blockSizeToTryAligned -= granularity) { + + + + if (blockSizeLimit < blockSizeToTryAligned) { + blockSizeToTry = blockSizeLimit; + } else { + blockSizeToTry = blockSizeToTryAligned; + } + + dynamicSMemSize = blockSizeToDynamicSMemSize(blockSizeToTry); + + status = cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags( + &occupancyInBlocks, + func, + blockSizeToTry, + dynamicSMemSize, + flags); + + if (status != cudaSuccess) { + return status; + } + + occupancyInThreads = blockSizeToTry * occupancyInBlocks; + + if (occupancyInThreads > maxOccupancy) { + maxBlockSize = blockSizeToTry; + numBlocks = occupancyInBlocks; + maxOccupancy = occupancyInThreads; + } + + + + if (occupancyLimit == maxOccupancy) { + break; + } + } + + + + + + + + *minGridSize = numBlocks * multiProcessorCount; + *blockSize = maxBlockSize; + + return status; +} +# 2219 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSizeVariableSMem( + int *minGridSize, + int *blockSize, + T func, + UnaryFunction blockSizeToDynamicSMemSize, + int blockSizeLimit = 0) +{ + return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, blockSizeToDynamicSMemSize, blockSizeLimit, 0x00); +} +# 2265 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSize( + int *minGridSize, + int *blockSize, + T func, + size_t dynamicSMemSize = 0, + int blockSizeLimit = 0) +{ + return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, __cudaOccupancyB2DHelper(dynamicSMemSize), blockSizeLimit, 0x00); +} +# 2303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaOccupancyAvailableDynamicSMemPerBlock( + size_t *dynamicSmemSize, + T func, + int numBlocks, + int blockSize) +{ + return ::cudaOccupancyAvailableDynamicSMemPerBlock(dynamicSmemSize, (const void*)func, numBlocks, blockSize); +} +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) __attribute__((device)) cudaError_t cudaOccupancyMaxPotentialBlockSizeWithFlags( + int *minGridSize, + int *blockSize, + T func, + size_t dynamicSMemSize = 0, + int blockSizeLimit = 0, + unsigned int flags = 0) +{ + return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, __cudaOccupancyB2DHelper(dynamicSMemSize), blockSizeLimit, flags); +} +# 2405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncGetAttributes( + struct cudaFuncAttributes *attr, + T *entry +) +{ + return ::cudaFuncGetAttributes(attr, (const void*)entry); +} +# 2469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __inline__ __attribute__((host)) cudaError_t cudaFuncSetAttribute( + T *entry, + enum cudaFuncAttribute attr, + int value +) +{ + return ::cudaFuncSetAttribute((const void*)entry, attr, value); +} +# 2501 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindSurfaceToArray( + const struct surface &surf, + cudaArray_const_t array, + const struct cudaChannelFormatDesc &desc +) +{ + return ::cudaBindSurfaceToArray(&surf, array, &desc); +} +# 2532 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template +static __attribute__((deprecated)) __inline__ __attribute__((host)) cudaError_t cudaBindSurfaceToArray( + const struct surface &surf, + cudaArray_const_t array +) +{ + struct cudaChannelFormatDesc desc; + cudaError_t err = ::cudaGetChannelDesc(&desc, array); + + return err == cudaSuccess ? cudaBindSurfaceToArray(surf, array, desc) : err; +} +# 2553 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +#pragma GCC diagnostic pop +# 1 "" 2 +# 1 "CMakeCUDACompilerId.cu" +# 64 "CMakeCUDACompilerId.cu" +char const* info_compiler = "INFO" ":" "compiler[" "NVIDIA" "]"; + +char const* info_simulate = "INFO" ":" "simulate[" "GNU" "]"; +# 369 "CMakeCUDACompilerId.cu" +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + ('0' + (((11) / 10000000)%10)), ('0' + (((11) / 1000000)%10)), ('0' + (((11) / 100000)%10)), ('0' + (((11) / 10000)%10)), ('0' + (((11) / 1000)%10)), ('0' + (((11) / 100)%10)), ('0' + (((11) / 10)%10)), ('0' + ((11) % 10)), + + '.', ('0' + (((7) / 10000000)%10)), ('0' + (((7) / 1000000)%10)), ('0' + (((7) / 100000)%10)), ('0' + (((7) / 10000)%10)), ('0' + (((7) / 1000)%10)), ('0' + (((7) / 100)%10)), ('0' + (((7) / 10)%10)), ('0' + ((7) % 10)), + + '.', ('0' + (((99) / 10000000)%10)), ('0' + (((99) / 1000000)%10)), ('0' + (((99) / 100000)%10)), ('0' + (((99) / 10000)%10)), ('0' + (((99) / 1000)%10)), ('0' + (((99) / 100)%10)), ('0' + (((99) / 10)%10)), ('0' + ((99) % 10)), + + + + + + ']','\0'}; +# 398 "CMakeCUDACompilerId.cu" +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + ('0' + (((9) / 10000000)%10)), ('0' + (((9) / 1000000)%10)), ('0' + (((9) / 100000)%10)), ('0' + (((9) / 10000)%10)), ('0' + (((9) / 1000)%10)), ('0' + (((9) / 100)%10)), ('0' + (((9) / 10)%10)), ('0' + ((9) % 10)), + + '.', ('0' + (((3) / 10000000)%10)), ('0' + (((3) / 1000000)%10)), ('0' + (((3) / 100000)%10)), ('0' + (((3) / 10000)%10)), ('0' + (((3) / 1000)%10)), ('0' + (((3) / 100)%10)), ('0' + (((3) / 10)%10)), ('0' + ((3) % 10)), + + + + + + + + ']','\0'}; + + + + + + +char const* info_platform = "INFO" ":" "platform[" "Linux" "]"; +char const* info_arch = "INFO" ":" "arch[" "]"; + + + +const char* info_language_standard_default = "INFO" ":" "standard_default[" + + + + + + + + "14" + + + + + +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" + + + "ON" + + + +"]"; + + + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + + require += info_version[argc]; + + + require += info_simulate[argc]; + + + require += info_simulate_version[argc]; + + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.c b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.c new file mode 100644 index 0000000..a38de84 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.c @@ -0,0 +1,35 @@ +# 1 "CMakeCUDACompilerId.cu" +# 64 "CMakeCUDACompilerId.cu" +extern const char *info_compiler; + +extern const char *info_simulate; +# 369 "CMakeCUDACompilerId.cu" +static const char info_version[50]; +# 398 "CMakeCUDACompilerId.cu" +static const char info_simulate_version[41]; +# 418 "CMakeCUDACompilerId.cu" +extern const char *info_platform; +extern const char *info_arch; + + + +extern const char *info_language_standard_default; +# 439 "CMakeCUDACompilerId.cu" +extern const char *info_language_extensions_default; +# 64 "CMakeCUDACompilerId.cu" +const char *info_compiler = ((const char *)"INFO:compiler[NVIDIA]"); + +const char *info_simulate = ((const char *)"INFO:simulate[GNU]"); +# 369 "CMakeCUDACompilerId.cu" +static const char info_version[50] = {((char)73U),((char)78U),((char)70U),((char)79U),((char)58U),((char)99U),((char)111U),((char)109U),((char)112U),((char)105U),((char)108U),((char)101U),((char)114U),((char)95U),((char)118U),((char)101U),((char)114U),((char)115U),((char)105U),((char)111U),((char)110U),((char)91U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)49U),((char)49U),((char)46U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)55U),((char)46U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)57U),((char)57U),((char)93U),((char)0U)}; +# 398 "CMakeCUDACompilerId.cu" +static const char info_simulate_version[41] = {((char)73U),((char)78U),((char)70U),((char)79U),((char)58U),((char)115U),((char)105U),((char)109U),((char)117U),((char)108U),((char)97U),((char)116U),((char)101U),((char)95U),((char)118U),((char)101U),((char)114U),((char)115U),((char)105U),((char)111U),((char)110U),((char)91U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)57U),((char)46U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)48U),((char)51U),((char)93U),((char)0U)}; +# 418 "CMakeCUDACompilerId.cu" +const char *info_platform = ((const char *)"INFO:platform[Linux]"); +const char *info_arch = ((const char *)"INFO:arch[]"); + + + +const char *info_language_standard_default = ((const char *)"INFO:standard_default[14]"); +# 439 "CMakeCUDACompilerId.cu" +const char *info_language_extensions_default = ((const char *)"INFO:extensions_default[ON]"); diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.cpp b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.cpp new file mode 100644 index 0000000..e5876ba --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.cpp @@ -0,0 +1,19830 @@ +# 1 "CMakeCUDACompilerId.cu" +#pragma GCC diagnostic ignored "-Wunused-local-typedefs" +# 1 +#pragma GCC diagnostic push +# 1 +#pragma GCC diagnostic ignored "-Wunused-variable" +# 1 +#pragma GCC diagnostic ignored "-Wunused-function" +# 1 +static char __nv_inited_managed_rt = 0; static void **__nv_fatbinhandle_for_managed_rt; static void __nv_save_fatbinhandle_for_managed_rt(void **in){__nv_fatbinhandle_for_managed_rt = in;} static char __nv_init_managed_rt_with_module(void **); static inline void __nv_init_managed_rt(void) { __nv_inited_managed_rt = (__nv_inited_managed_rt ? __nv_inited_managed_rt : __nv_init_managed_rt_with_module(__nv_fatbinhandle_for_managed_rt));} +# 1 +#pragma GCC diagnostic pop +# 1 +#pragma GCC diagnostic ignored "-Wunused-variable" + +# 1 +#define __nv_is_extended_device_lambda_closure_type(X) false +#define __nv_is_extended_host_device_lambda_closure_type(X) false +#if defined(__nv_is_extended_device_lambda_closure_type) && defined(__nv_is_extended_host_device_lambda_closure_type) +#endif + +# 1 +# 61 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +#pragma GCC diagnostic push +# 64 +#pragma GCC diagnostic ignored "-Wunused-function" +# 68 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_types.h" +#if 0 +# 68 +enum cudaRoundMode { +# 70 +cudaRoundNearest, +# 71 +cudaRoundZero, +# 72 +cudaRoundPosInf, +# 73 +cudaRoundMinInf +# 74 +}; +#endif +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 100 +struct char1 { +# 102 +signed char x; +# 103 +}; +#endif +# 105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 105 +struct uchar1 { +# 107 +unsigned char x; +# 108 +}; +#endif +# 111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 111 +struct __attribute((aligned(2))) char2 { +# 113 +signed char x, y; +# 114 +}; +#endif +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 116 +struct __attribute((aligned(2))) uchar2 { +# 118 +unsigned char x, y; +# 119 +}; +#endif +# 121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 121 +struct char3 { +# 123 +signed char x, y, z; +# 124 +}; +#endif +# 126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 126 +struct uchar3 { +# 128 +unsigned char x, y, z; +# 129 +}; +#endif +# 131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 131 +struct __attribute((aligned(4))) char4 { +# 133 +signed char x, y, z, w; +# 134 +}; +#endif +# 136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 136 +struct __attribute((aligned(4))) uchar4 { +# 138 +unsigned char x, y, z, w; +# 139 +}; +#endif +# 141 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 141 +struct short1 { +# 143 +short x; +# 144 +}; +#endif +# 146 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 146 +struct ushort1 { +# 148 +unsigned short x; +# 149 +}; +#endif +# 151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 151 +struct __attribute((aligned(4))) short2 { +# 153 +short x, y; +# 154 +}; +#endif +# 156 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 156 +struct __attribute((aligned(4))) ushort2 { +# 158 +unsigned short x, y; +# 159 +}; +#endif +# 161 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 161 +struct short3 { +# 163 +short x, y, z; +# 164 +}; +#endif +# 166 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 166 +struct ushort3 { +# 168 +unsigned short x, y, z; +# 169 +}; +#endif +# 171 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 171 +struct __attribute((aligned(8))) short4 { short x; short y; short z; short w; }; +#endif +# 172 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 172 +struct __attribute((aligned(8))) ushort4 { unsigned short x; unsigned short y; unsigned short z; unsigned short w; }; +#endif +# 174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 174 +struct int1 { +# 176 +int x; +# 177 +}; +#endif +# 179 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 179 +struct uint1 { +# 181 +unsigned x; +# 182 +}; +#endif +# 184 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 184 +struct __attribute((aligned(8))) int2 { int x; int y; }; +#endif +# 185 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 185 +struct __attribute((aligned(8))) uint2 { unsigned x; unsigned y; }; +#endif +# 187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 187 +struct int3 { +# 189 +int x, y, z; +# 190 +}; +#endif +# 192 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 192 +struct uint3 { +# 194 +unsigned x, y, z; +# 195 +}; +#endif +# 197 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 197 +struct __attribute((aligned(16))) int4 { +# 199 +int x, y, z, w; +# 200 +}; +#endif +# 202 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 202 +struct __attribute((aligned(16))) uint4 { +# 204 +unsigned x, y, z, w; +# 205 +}; +#endif +# 207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 207 +struct long1 { +# 209 +long x; +# 210 +}; +#endif +# 212 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 212 +struct ulong1 { +# 214 +unsigned long x; +# 215 +}; +#endif +# 222 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 222 +struct __attribute((aligned((2) * sizeof(long)))) long2 { +# 224 +long x, y; +# 225 +}; +#endif +# 227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 227 +struct __attribute((aligned((2) * sizeof(unsigned long)))) ulong2 { +# 229 +unsigned long x, y; +# 230 +}; +#endif +# 234 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 234 +struct long3 { +# 236 +long x, y, z; +# 237 +}; +#endif +# 239 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 239 +struct ulong3 { +# 241 +unsigned long x, y, z; +# 242 +}; +#endif +# 244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 244 +struct __attribute((aligned(16))) long4 { +# 246 +long x, y, z, w; +# 247 +}; +#endif +# 249 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 249 +struct __attribute((aligned(16))) ulong4 { +# 251 +unsigned long x, y, z, w; +# 252 +}; +#endif +# 254 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 254 +struct float1 { +# 256 +float x; +# 257 +}; +#endif +# 276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 276 +struct __attribute((aligned(8))) float2 { float x; float y; }; +#endif +# 281 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 281 +struct float3 { +# 283 +float x, y, z; +# 284 +}; +#endif +# 286 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 286 +struct __attribute((aligned(16))) float4 { +# 288 +float x, y, z, w; +# 289 +}; +#endif +# 291 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 291 +struct longlong1 { +# 293 +long long x; +# 294 +}; +#endif +# 296 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 296 +struct ulonglong1 { +# 298 +unsigned long long x; +# 299 +}; +#endif +# 301 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 301 +struct __attribute((aligned(16))) longlong2 { +# 303 +long long x, y; +# 304 +}; +#endif +# 306 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 306 +struct __attribute((aligned(16))) ulonglong2 { +# 308 +unsigned long long x, y; +# 309 +}; +#endif +# 311 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 311 +struct longlong3 { +# 313 +long long x, y, z; +# 314 +}; +#endif +# 316 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 316 +struct ulonglong3 { +# 318 +unsigned long long x, y, z; +# 319 +}; +#endif +# 321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 321 +struct __attribute((aligned(16))) longlong4 { +# 323 +long long x, y, z, w; +# 324 +}; +#endif +# 326 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 326 +struct __attribute((aligned(16))) ulonglong4 { +# 328 +unsigned long long x, y, z, w; +# 329 +}; +#endif +# 331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 331 +struct double1 { +# 333 +double x; +# 334 +}; +#endif +# 336 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 336 +struct __attribute((aligned(16))) double2 { +# 338 +double x, y; +# 339 +}; +#endif +# 341 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 341 +struct double3 { +# 343 +double x, y, z; +# 344 +}; +#endif +# 346 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 346 +struct __attribute((aligned(16))) double4 { +# 348 +double x, y, z, w; +# 349 +}; +#endif +# 363 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef char1 +# 363 +char1; +#endif +# 364 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uchar1 +# 364 +uchar1; +#endif +# 365 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef char2 +# 365 +char2; +#endif +# 366 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uchar2 +# 366 +uchar2; +#endif +# 367 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef char3 +# 367 +char3; +#endif +# 368 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uchar3 +# 368 +uchar3; +#endif +# 369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef char4 +# 369 +char4; +#endif +# 370 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uchar4 +# 370 +uchar4; +#endif +# 371 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef short1 +# 371 +short1; +#endif +# 372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ushort1 +# 372 +ushort1; +#endif +# 373 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef short2 +# 373 +short2; +#endif +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ushort2 +# 374 +ushort2; +#endif +# 375 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef short3 +# 375 +short3; +#endif +# 376 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ushort3 +# 376 +ushort3; +#endif +# 377 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef short4 +# 377 +short4; +#endif +# 378 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ushort4 +# 378 +ushort4; +#endif +# 379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef int1 +# 379 +int1; +#endif +# 380 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uint1 +# 380 +uint1; +#endif +# 381 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef int2 +# 381 +int2; +#endif +# 382 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uint2 +# 382 +uint2; +#endif +# 383 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef int3 +# 383 +int3; +#endif +# 384 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uint3 +# 384 +uint3; +#endif +# 385 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef int4 +# 385 +int4; +#endif +# 386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef uint4 +# 386 +uint4; +#endif +# 387 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef long1 +# 387 +long1; +#endif +# 388 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulong1 +# 388 +ulong1; +#endif +# 389 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef long2 +# 389 +long2; +#endif +# 390 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulong2 +# 390 +ulong2; +#endif +# 391 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef long3 +# 391 +long3; +#endif +# 392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulong3 +# 392 +ulong3; +#endif +# 393 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef long4 +# 393 +long4; +#endif +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulong4 +# 394 +ulong4; +#endif +# 395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef float1 +# 395 +float1; +#endif +# 396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef float2 +# 396 +float2; +#endif +# 397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef float3 +# 397 +float3; +#endif +# 398 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef float4 +# 398 +float4; +#endif +# 399 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef longlong1 +# 399 +longlong1; +#endif +# 400 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulonglong1 +# 400 +ulonglong1; +#endif +# 401 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef longlong2 +# 401 +longlong2; +#endif +# 402 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulonglong2 +# 402 +ulonglong2; +#endif +# 403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef longlong3 +# 403 +longlong3; +#endif +# 404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulonglong3 +# 404 +ulonglong3; +#endif +# 405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef longlong4 +# 405 +longlong4; +#endif +# 406 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef ulonglong4 +# 406 +ulonglong4; +#endif +# 407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef double1 +# 407 +double1; +#endif +# 408 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef double2 +# 408 +double2; +#endif +# 409 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef double3 +# 409 +double3; +#endif +# 410 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef double4 +# 410 +double4; +#endif +# 418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +# 418 +struct dim3 { +# 420 +unsigned x, y, z; +# 432 +}; +#endif +# 434 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_types.h" +#if 0 +typedef dim3 +# 434 +dim3; +#endif +# 143 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 +typedef long ptrdiff_t; +# 209 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 +typedef unsigned long size_t; +#if !defined(__CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__) +#define __CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__ +#endif +#include "crt/host_runtime.h" +# 426 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 +typedef +# 415 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 +struct { +# 416 +long long __max_align_ll __attribute((__aligned__(__alignof__(long long)))); +# 417 +long double __max_align_ld __attribute((__aligned__(__alignof__(long double)))); +# 426 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 +} max_align_t; +# 433 +typedef __decltype((nullptr)) nullptr_t; +# 204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 204 +enum cudaError { +# 211 +cudaSuccess, +# 217 +cudaErrorInvalidValue, +# 223 +cudaErrorMemoryAllocation, +# 229 +cudaErrorInitializationError, +# 236 +cudaErrorCudartUnloading, +# 243 +cudaErrorProfilerDisabled, +# 251 +cudaErrorProfilerNotInitialized, +# 258 +cudaErrorProfilerAlreadyStarted, +# 265 +cudaErrorProfilerAlreadyStopped, +# 274 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorInvalidConfiguration, +# 280 +cudaErrorInvalidPitchValue = 12, +# 286 +cudaErrorInvalidSymbol, +# 294 +cudaErrorInvalidHostPointer = 16, +# 302 +cudaErrorInvalidDevicePointer, +# 308 +cudaErrorInvalidTexture, +# 314 +cudaErrorInvalidTextureBinding, +# 321 +cudaErrorInvalidChannelDescriptor, +# 327 +cudaErrorInvalidMemcpyDirection, +# 337 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorAddressOfConstant, +# 346 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorTextureFetchFailed, +# 355 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorTextureNotBound, +# 364 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorSynchronizationError, +# 370 +cudaErrorInvalidFilterSetting, +# 376 +cudaErrorInvalidNormSetting, +# 384 +cudaErrorMixedDeviceExecution, +# 392 +cudaErrorNotYetImplemented = 31, +# 401 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorMemoryValueTooLarge, +# 408 +cudaErrorStubLibrary = 34, +# 415 +cudaErrorInsufficientDriver, +# 422 +cudaErrorCallRequiresNewerDriver, +# 428 +cudaErrorInvalidSurface, +# 434 +cudaErrorDuplicateVariableName = 43, +# 440 +cudaErrorDuplicateTextureName, +# 446 +cudaErrorDuplicateSurfaceName, +# 456 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorDevicesUnavailable, +# 469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorIncompatibleDriverContext = 49, +# 475 +cudaErrorMissingConfiguration = 52, +# 484 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorPriorLaunchFailure, +# 491 +cudaErrorLaunchMaxDepthExceeded = 65, +# 499 +cudaErrorLaunchFileScopedTex, +# 507 +cudaErrorLaunchFileScopedSurf, +# 522 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorSyncDepthExceeded, +# 534 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorLaunchPendingCountExceeded, +# 540 +cudaErrorInvalidDeviceFunction = 98, +# 546 +cudaErrorNoDevice = 100, +# 553 +cudaErrorInvalidDevice, +# 558 +cudaErrorDeviceNotLicensed, +# 567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorSoftwareValidityNotEstablished, +# 572 +cudaErrorStartupFailure = 127, +# 577 +cudaErrorInvalidKernelImage = 200, +# 587 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorDeviceUninitialized, +# 592 +cudaErrorMapBufferObjectFailed = 205, +# 597 +cudaErrorUnmapBufferObjectFailed, +# 603 +cudaErrorArrayIsMapped, +# 608 +cudaErrorAlreadyMapped, +# 616 +cudaErrorNoKernelImageForDevice, +# 621 +cudaErrorAlreadyAcquired, +# 626 +cudaErrorNotMapped, +# 632 +cudaErrorNotMappedAsArray, +# 638 +cudaErrorNotMappedAsPointer, +# 644 +cudaErrorECCUncorrectable, +# 650 +cudaErrorUnsupportedLimit, +# 656 +cudaErrorDeviceAlreadyInUse, +# 662 +cudaErrorPeerAccessUnsupported, +# 668 +cudaErrorInvalidPtx, +# 673 +cudaErrorInvalidGraphicsContext, +# 679 +cudaErrorNvlinkUncorrectable, +# 686 +cudaErrorJitCompilerNotFound, +# 693 +cudaErrorUnsupportedPtxVersion, +# 700 +cudaErrorJitCompilationDisabled, +# 705 +cudaErrorUnsupportedExecAffinity, +# 710 +cudaErrorInvalidSource = 300, +# 715 +cudaErrorFileNotFound, +# 720 +cudaErrorSharedObjectSymbolNotFound, +# 725 +cudaErrorSharedObjectInitFailed, +# 730 +cudaErrorOperatingSystem, +# 737 +cudaErrorInvalidResourceHandle = 400, +# 743 +cudaErrorIllegalState, +# 750 +cudaErrorSymbolNotFound = 500, +# 758 +cudaErrorNotReady = 600, +# 766 +cudaErrorIllegalAddress = 700, +# 775 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorLaunchOutOfResources, +# 786 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorLaunchTimeout, +# 792 +cudaErrorLaunchIncompatibleTexturing, +# 799 +cudaErrorPeerAccessAlreadyEnabled, +# 806 +cudaErrorPeerAccessNotEnabled, +# 819 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorSetOnActiveProcess = 708, +# 826 +cudaErrorContextIsDestroyed, +# 833 +cudaErrorAssert, +# 840 +cudaErrorTooManyPeers, +# 846 +cudaErrorHostMemoryAlreadyRegistered, +# 852 +cudaErrorHostMemoryNotRegistered, +# 861 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorHardwareStackError, +# 869 +cudaErrorIllegalInstruction, +# 878 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorMisalignedAddress, +# 889 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorInvalidAddressSpace, +# 897 +cudaErrorInvalidPc, +# 908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorLaunchFailure, +# 917 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorCooperativeLaunchTooLarge, +# 922 +cudaErrorNotPermitted = 800, +# 928 +cudaErrorNotSupported, +# 937 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorSystemNotReady, +# 944 +cudaErrorSystemDriverMismatch, +# 953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorCompatNotSupportedOnDevice, +# 958 +cudaErrorMpsConnectionFailed, +# 963 +cudaErrorMpsRpcFailure, +# 969 +cudaErrorMpsServerNotReady, +# 974 +cudaErrorMpsMaxClientsReached, +# 979 +cudaErrorMpsMaxConnectionsReached, +# 984 +cudaErrorStreamCaptureUnsupported = 900, +# 990 +cudaErrorStreamCaptureInvalidated, +# 996 +cudaErrorStreamCaptureMerge, +# 1001 +cudaErrorStreamCaptureUnmatched, +# 1007 +cudaErrorStreamCaptureUnjoined, +# 1014 +cudaErrorStreamCaptureIsolation, +# 1020 +cudaErrorStreamCaptureImplicit, +# 1026 +cudaErrorCapturedEvent, +# 1033 +cudaErrorStreamCaptureWrongThread, +# 1038 +cudaErrorTimeout, +# 1044 +cudaErrorGraphExecUpdateFailure, +# 1054 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorExternalDevice, +# 1067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaErrorUnknown = 999, +# 1075 +cudaErrorApiFailureBase = 10000 +# 1076 +}; +#endif +# 1081 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1081 +enum cudaChannelFormatKind { +# 1083 +cudaChannelFormatKindSigned, +# 1084 +cudaChannelFormatKindUnsigned, +# 1085 +cudaChannelFormatKindFloat, +# 1086 +cudaChannelFormatKindNone, +# 1087 +cudaChannelFormatKindNV12, +# 1088 +cudaChannelFormatKindUnsignedNormalized8X1, +# 1089 +cudaChannelFormatKindUnsignedNormalized8X2, +# 1090 +cudaChannelFormatKindUnsignedNormalized8X4, +# 1091 +cudaChannelFormatKindUnsignedNormalized16X1, +# 1092 +cudaChannelFormatKindUnsignedNormalized16X2, +# 1093 +cudaChannelFormatKindUnsignedNormalized16X4, +# 1094 +cudaChannelFormatKindSignedNormalized8X1, +# 1095 +cudaChannelFormatKindSignedNormalized8X2, +# 1096 +cudaChannelFormatKindSignedNormalized8X4, +# 1097 +cudaChannelFormatKindSignedNormalized16X1, +# 1098 +cudaChannelFormatKindSignedNormalized16X2, +# 1099 +cudaChannelFormatKindSignedNormalized16X4, +# 1100 +cudaChannelFormatKindUnsignedBlockCompressed1, +# 1101 +cudaChannelFormatKindUnsignedBlockCompressed1SRGB, +# 1102 +cudaChannelFormatKindUnsignedBlockCompressed2, +# 1103 +cudaChannelFormatKindUnsignedBlockCompressed2SRGB, +# 1104 +cudaChannelFormatKindUnsignedBlockCompressed3, +# 1105 +cudaChannelFormatKindUnsignedBlockCompressed3SRGB, +# 1106 +cudaChannelFormatKindUnsignedBlockCompressed4, +# 1107 +cudaChannelFormatKindSignedBlockCompressed4, +# 1108 +cudaChannelFormatKindUnsignedBlockCompressed5, +# 1109 +cudaChannelFormatKindSignedBlockCompressed5, +# 1110 +cudaChannelFormatKindUnsignedBlockCompressed6H, +# 1111 +cudaChannelFormatKindSignedBlockCompressed6H, +# 1112 +cudaChannelFormatKindUnsignedBlockCompressed7, +# 1113 +cudaChannelFormatKindUnsignedBlockCompressed7SRGB +# 1114 +}; +#endif +# 1119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1119 +struct cudaChannelFormatDesc { +# 1121 +int x; +# 1122 +int y; +# 1123 +int z; +# 1124 +int w; +# 1125 +cudaChannelFormatKind f; +# 1126 +}; +#endif +# 1131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef struct cudaArray *cudaArray_t; +# 1136 +typedef const cudaArray *cudaArray_const_t; +# 1138 +struct cudaArray; +# 1143 +typedef struct cudaMipmappedArray *cudaMipmappedArray_t; +# 1148 +typedef const cudaMipmappedArray *cudaMipmappedArray_const_t; +# 1150 +struct cudaMipmappedArray; +# 1160 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1160 +struct cudaArraySparseProperties { +# 1161 +struct { +# 1162 +unsigned width; +# 1163 +unsigned height; +# 1164 +unsigned depth; +# 1165 +} tileExtent; +# 1166 +unsigned miptailFirstLevel; +# 1167 +unsigned long long miptailSize; +# 1168 +unsigned flags; +# 1169 +unsigned reserved[4]; +# 1170 +}; +#endif +# 1176 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1176 +struct cudaArrayMemoryRequirements { +# 1177 +size_t size; +# 1178 +size_t alignment; +# 1179 +unsigned reserved[4]; +# 1180 +}; +#endif +# 1186 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1186 +enum cudaMemoryType { +# 1188 +cudaMemoryTypeUnregistered, +# 1189 +cudaMemoryTypeHost, +# 1190 +cudaMemoryTypeDevice, +# 1191 +cudaMemoryTypeManaged +# 1192 +}; +#endif +# 1197 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1197 +enum cudaMemcpyKind { +# 1199 +cudaMemcpyHostToHost, +# 1200 +cudaMemcpyHostToDevice, +# 1201 +cudaMemcpyDeviceToHost, +# 1202 +cudaMemcpyDeviceToDevice, +# 1203 +cudaMemcpyDefault +# 1204 +}; +#endif +# 1211 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1211 +struct cudaPitchedPtr { +# 1213 +void *ptr; +# 1214 +size_t pitch; +# 1215 +size_t xsize; +# 1216 +size_t ysize; +# 1217 +}; +#endif +# 1224 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1224 +struct cudaExtent { +# 1226 +size_t width; +# 1227 +size_t height; +# 1228 +size_t depth; +# 1229 +}; +#endif +# 1236 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1236 +struct cudaPos { +# 1238 +size_t x; +# 1239 +size_t y; +# 1240 +size_t z; +# 1241 +}; +#endif +# 1246 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1246 +struct cudaMemcpy3DParms { +# 1248 +cudaArray_t srcArray; +# 1249 +cudaPos srcPos; +# 1250 +cudaPitchedPtr srcPtr; +# 1252 +cudaArray_t dstArray; +# 1253 +cudaPos dstPos; +# 1254 +cudaPitchedPtr dstPtr; +# 1256 +cudaExtent extent; +# 1257 +cudaMemcpyKind kind; __pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;) +# 1258 +}; +#endif +# 1263 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1263 +struct cudaMemcpy3DPeerParms { +# 1265 +cudaArray_t srcArray; +# 1266 +cudaPos srcPos; +# 1267 +cudaPitchedPtr srcPtr; +# 1268 +int srcDevice; +# 1270 +cudaArray_t dstArray; +# 1271 +cudaPos dstPos; +# 1272 +cudaPitchedPtr dstPtr; +# 1273 +int dstDevice; +# 1275 +cudaExtent extent; +# 1276 +}; +#endif +# 1281 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1281 +struct cudaMemsetParams { +# 1282 +void *dst; +# 1283 +size_t pitch; +# 1284 +unsigned value; +# 1285 +unsigned elementSize; +# 1286 +size_t width; +# 1287 +size_t height; +# 1288 +}; +#endif +# 1293 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1293 +enum cudaAccessProperty { +# 1294 +cudaAccessPropertyNormal, +# 1295 +cudaAccessPropertyStreaming, +# 1296 +cudaAccessPropertyPersisting +# 1297 +}; +#endif +# 1310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1310 +struct cudaAccessPolicyWindow { +# 1311 +void *base_ptr; +# 1312 +size_t num_bytes; +# 1313 +float hitRatio; +# 1314 +cudaAccessProperty hitProp; +# 1315 +cudaAccessProperty missProp; __pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;) +# 1316 +}; +#endif +# 1328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef void (*cudaHostFn_t)(void * userData); +# 1333 +#if 0 +# 1333 +struct cudaHostNodeParams { +# 1334 +cudaHostFn_t fn; +# 1335 +void *userData; +# 1336 +}; +#endif +# 1341 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1341 +enum cudaStreamCaptureStatus { +# 1342 +cudaStreamCaptureStatusNone, +# 1343 +cudaStreamCaptureStatusActive, +# 1344 +cudaStreamCaptureStatusInvalidated +# 1346 +}; +#endif +# 1352 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1352 +enum cudaStreamCaptureMode { +# 1353 +cudaStreamCaptureModeGlobal, +# 1354 +cudaStreamCaptureModeThreadLocal, +# 1355 +cudaStreamCaptureModeRelaxed +# 1356 +}; +#endif +# 1358 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1358 +enum cudaSynchronizationPolicy { +# 1359 +cudaSyncPolicyAuto = 1, +# 1360 +cudaSyncPolicySpin, +# 1361 +cudaSyncPolicyYield, +# 1362 +cudaSyncPolicyBlockingSync +# 1363 +}; +#endif +# 1379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1379 +enum cudaStreamUpdateCaptureDependenciesFlags { +# 1380 +cudaStreamAddCaptureDependencies, +# 1381 +cudaStreamSetCaptureDependencies +# 1382 +}; +#endif +# 1387 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1387 +enum cudaUserObjectFlags { +# 1388 +cudaUserObjectNoDestructorSync = 1 +# 1389 +}; +#endif +# 1394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1394 +enum cudaUserObjectRetainFlags { +# 1395 +cudaGraphUserObjectMove = 1 +# 1396 +}; +#endif +# 1401 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct cudaGraphicsResource; +# 1406 +#if 0 +# 1406 +enum cudaGraphicsRegisterFlags { +# 1408 +cudaGraphicsRegisterFlagsNone, +# 1409 +cudaGraphicsRegisterFlagsReadOnly, +# 1410 +cudaGraphicsRegisterFlagsWriteDiscard, +# 1411 +cudaGraphicsRegisterFlagsSurfaceLoadStore = 4, +# 1412 +cudaGraphicsRegisterFlagsTextureGather = 8 +# 1413 +}; +#endif +# 1418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1418 +enum cudaGraphicsMapFlags { +# 1420 +cudaGraphicsMapFlagsNone, +# 1421 +cudaGraphicsMapFlagsReadOnly, +# 1422 +cudaGraphicsMapFlagsWriteDiscard +# 1423 +}; +#endif +# 1428 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1428 +enum cudaGraphicsCubeFace { +# 1430 +cudaGraphicsCubeFacePositiveX, +# 1431 +cudaGraphicsCubeFaceNegativeX, +# 1432 +cudaGraphicsCubeFacePositiveY, +# 1433 +cudaGraphicsCubeFaceNegativeY, +# 1434 +cudaGraphicsCubeFacePositiveZ, +# 1435 +cudaGraphicsCubeFaceNegativeZ +# 1436 +}; +#endif +# 1441 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1441 +enum cudaResourceType { +# 1443 +cudaResourceTypeArray, +# 1444 +cudaResourceTypeMipmappedArray, +# 1445 +cudaResourceTypeLinear, +# 1446 +cudaResourceTypePitch2D +# 1447 +}; +#endif +# 1452 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1452 +enum cudaResourceViewFormat { +# 1454 +cudaResViewFormatNone, +# 1455 +cudaResViewFormatUnsignedChar1, +# 1456 +cudaResViewFormatUnsignedChar2, +# 1457 +cudaResViewFormatUnsignedChar4, +# 1458 +cudaResViewFormatSignedChar1, +# 1459 +cudaResViewFormatSignedChar2, +# 1460 +cudaResViewFormatSignedChar4, +# 1461 +cudaResViewFormatUnsignedShort1, +# 1462 +cudaResViewFormatUnsignedShort2, +# 1463 +cudaResViewFormatUnsignedShort4, +# 1464 +cudaResViewFormatSignedShort1, +# 1465 +cudaResViewFormatSignedShort2, +# 1466 +cudaResViewFormatSignedShort4, +# 1467 +cudaResViewFormatUnsignedInt1, +# 1468 +cudaResViewFormatUnsignedInt2, +# 1469 +cudaResViewFormatUnsignedInt4, +# 1470 +cudaResViewFormatSignedInt1, +# 1471 +cudaResViewFormatSignedInt2, +# 1472 +cudaResViewFormatSignedInt4, +# 1473 +cudaResViewFormatHalf1, +# 1474 +cudaResViewFormatHalf2, +# 1475 +cudaResViewFormatHalf4, +# 1476 +cudaResViewFormatFloat1, +# 1477 +cudaResViewFormatFloat2, +# 1478 +cudaResViewFormatFloat4, +# 1479 +cudaResViewFormatUnsignedBlockCompressed1, +# 1480 +cudaResViewFormatUnsignedBlockCompressed2, +# 1481 +cudaResViewFormatUnsignedBlockCompressed3, +# 1482 +cudaResViewFormatUnsignedBlockCompressed4, +# 1483 +cudaResViewFormatSignedBlockCompressed4, +# 1484 +cudaResViewFormatUnsignedBlockCompressed5, +# 1485 +cudaResViewFormatSignedBlockCompressed5, +# 1486 +cudaResViewFormatUnsignedBlockCompressed6H, +# 1487 +cudaResViewFormatSignedBlockCompressed6H, +# 1488 +cudaResViewFormatUnsignedBlockCompressed7 +# 1489 +}; +#endif +# 1494 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1494 +struct cudaResourceDesc { +# 1495 +cudaResourceType resType; +# 1497 +union { +# 1498 +struct { +# 1499 +cudaArray_t array; +# 1500 +} array; +# 1501 +struct { +# 1502 +cudaMipmappedArray_t mipmap; +# 1503 +} mipmap; +# 1504 +struct { +# 1505 +void *devPtr; +# 1506 +cudaChannelFormatDesc desc; +# 1507 +size_t sizeInBytes; +# 1508 +} linear; +# 1509 +struct { +# 1510 +void *devPtr; +# 1511 +cudaChannelFormatDesc desc; +# 1512 +size_t width; +# 1513 +size_t height; +# 1514 +size_t pitchInBytes; +# 1515 +} pitch2D; +# 1516 +} res; +# 1517 +}; +#endif +# 1522 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1522 +struct cudaResourceViewDesc { +# 1524 +cudaResourceViewFormat format; +# 1525 +size_t width; +# 1526 +size_t height; +# 1527 +size_t depth; +# 1528 +unsigned firstMipmapLevel; +# 1529 +unsigned lastMipmapLevel; +# 1530 +unsigned firstLayer; +# 1531 +unsigned lastLayer; +# 1532 +}; +#endif +# 1537 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1537 +struct cudaPointerAttributes { +# 1543 +cudaMemoryType type; +# 1554 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +int device; +# 1560 +void *devicePointer; +# 1569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +void *hostPointer; +# 1570 +}; +#endif +# 1575 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1575 +struct cudaFuncAttributes { +# 1582 +size_t sharedSizeBytes; +# 1588 +size_t constSizeBytes; +# 1593 +size_t localSizeBytes; +# 1600 +int maxThreadsPerBlock; +# 1605 +int numRegs; +# 1612 +int ptxVersion; +# 1619 +int binaryVersion; +# 1625 +int cacheModeCA; +# 1632 +int maxDynamicSharedSizeBytes; +# 1641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +int preferredShmemCarveout; +# 1691 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +}; +#endif +# 1696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1696 +enum cudaFuncAttribute { +# 1698 +cudaFuncAttributeMaxDynamicSharedMemorySize = 8, +# 1699 +cudaFuncAttributePreferredSharedMemoryCarveout, +# 1708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaFuncAttributeMax +# 1709 +}; +#endif +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1714 +enum cudaFuncCache { +# 1716 +cudaFuncCachePreferNone, +# 1717 +cudaFuncCachePreferShared, +# 1718 +cudaFuncCachePreferL1, +# 1719 +cudaFuncCachePreferEqual +# 1720 +}; +#endif +# 1726 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1726 +enum cudaSharedMemConfig { +# 1728 +cudaSharedMemBankSizeDefault, +# 1729 +cudaSharedMemBankSizeFourByte, +# 1730 +cudaSharedMemBankSizeEightByte +# 1731 +}; +#endif +# 1736 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1736 +enum cudaSharedCarveout { +# 1737 +cudaSharedmemCarveoutDefault = (-1), +# 1738 +cudaSharedmemCarveoutMaxShared = 100, +# 1739 +cudaSharedmemCarveoutMaxL1 = 0 +# 1740 +}; +#endif +# 1745 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1745 +enum cudaComputeMode { +# 1747 +cudaComputeModeDefault, +# 1748 +cudaComputeModeExclusive, +# 1749 +cudaComputeModeProhibited, +# 1750 +cudaComputeModeExclusiveProcess +# 1751 +}; +#endif +# 1756 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1756 +enum cudaLimit { +# 1758 +cudaLimitStackSize, +# 1759 +cudaLimitPrintfFifoSize, +# 1760 +cudaLimitMallocHeapSize, +# 1761 +cudaLimitDevRuntimeSyncDepth, +# 1762 +cudaLimitDevRuntimePendingLaunchCount, +# 1763 +cudaLimitMaxL2FetchGranularity, +# 1764 +cudaLimitPersistingL2CacheSize +# 1765 +}; +#endif +# 1770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1770 +enum cudaMemoryAdvise { +# 1772 +cudaMemAdviseSetReadMostly = 1, +# 1773 +cudaMemAdviseUnsetReadMostly, +# 1774 +cudaMemAdviseSetPreferredLocation, +# 1775 +cudaMemAdviseUnsetPreferredLocation, +# 1776 +cudaMemAdviseSetAccessedBy, +# 1777 +cudaMemAdviseUnsetAccessedBy +# 1778 +}; +#endif +# 1783 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1783 +enum cudaMemRangeAttribute { +# 1785 +cudaMemRangeAttributeReadMostly = 1, +# 1786 +cudaMemRangeAttributePreferredLocation, +# 1787 +cudaMemRangeAttributeAccessedBy, +# 1788 +cudaMemRangeAttributeLastPrefetchLocation +# 1789 +}; +#endif +# 1794 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1794 +enum cudaOutputMode { +# 1796 +cudaKeyValuePair, +# 1797 +cudaCSV +# 1798 +}; +#endif +# 1803 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1803 +enum cudaFlushGPUDirectRDMAWritesOptions { +# 1804 +cudaFlushGPUDirectRDMAWritesOptionHost = (1 << 0), +# 1805 +cudaFlushGPUDirectRDMAWritesOptionMemOps +# 1806 +}; +#endif +# 1811 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1811 +enum cudaGPUDirectRDMAWritesOrdering { +# 1812 +cudaGPUDirectRDMAWritesOrderingNone, +# 1813 +cudaGPUDirectRDMAWritesOrderingOwner = 100, +# 1814 +cudaGPUDirectRDMAWritesOrderingAllDevices = 200 +# 1815 +}; +#endif +# 1820 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1820 +enum cudaFlushGPUDirectRDMAWritesScope { +# 1821 +cudaFlushGPUDirectRDMAWritesToOwner = 100, +# 1822 +cudaFlushGPUDirectRDMAWritesToAllDevices = 200 +# 1823 +}; +#endif +# 1828 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1828 +enum cudaFlushGPUDirectRDMAWritesTarget { +# 1829 +cudaFlushGPUDirectRDMAWritesTargetCurrentDevice +# 1830 +}; +#endif +# 1836 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1836 +enum cudaDeviceAttr { +# 1838 +cudaDevAttrMaxThreadsPerBlock = 1, +# 1839 +cudaDevAttrMaxBlockDimX, +# 1840 +cudaDevAttrMaxBlockDimY, +# 1841 +cudaDevAttrMaxBlockDimZ, +# 1842 +cudaDevAttrMaxGridDimX, +# 1843 +cudaDevAttrMaxGridDimY, +# 1844 +cudaDevAttrMaxGridDimZ, +# 1845 +cudaDevAttrMaxSharedMemoryPerBlock, +# 1846 +cudaDevAttrTotalConstantMemory, +# 1847 +cudaDevAttrWarpSize, +# 1848 +cudaDevAttrMaxPitch, +# 1849 +cudaDevAttrMaxRegistersPerBlock, +# 1850 +cudaDevAttrClockRate, +# 1851 +cudaDevAttrTextureAlignment, +# 1852 +cudaDevAttrGpuOverlap, +# 1853 +cudaDevAttrMultiProcessorCount, +# 1854 +cudaDevAttrKernelExecTimeout, +# 1855 +cudaDevAttrIntegrated, +# 1856 +cudaDevAttrCanMapHostMemory, +# 1857 +cudaDevAttrComputeMode, +# 1858 +cudaDevAttrMaxTexture1DWidth, +# 1859 +cudaDevAttrMaxTexture2DWidth, +# 1860 +cudaDevAttrMaxTexture2DHeight, +# 1861 +cudaDevAttrMaxTexture3DWidth, +# 1862 +cudaDevAttrMaxTexture3DHeight, +# 1863 +cudaDevAttrMaxTexture3DDepth, +# 1864 +cudaDevAttrMaxTexture2DLayeredWidth, +# 1865 +cudaDevAttrMaxTexture2DLayeredHeight, +# 1866 +cudaDevAttrMaxTexture2DLayeredLayers, +# 1867 +cudaDevAttrSurfaceAlignment, +# 1868 +cudaDevAttrConcurrentKernels, +# 1869 +cudaDevAttrEccEnabled, +# 1870 +cudaDevAttrPciBusId, +# 1871 +cudaDevAttrPciDeviceId, +# 1872 +cudaDevAttrTccDriver, +# 1873 +cudaDevAttrMemoryClockRate, +# 1874 +cudaDevAttrGlobalMemoryBusWidth, +# 1875 +cudaDevAttrL2CacheSize, +# 1876 +cudaDevAttrMaxThreadsPerMultiProcessor, +# 1877 +cudaDevAttrAsyncEngineCount, +# 1878 +cudaDevAttrUnifiedAddressing, +# 1879 +cudaDevAttrMaxTexture1DLayeredWidth, +# 1880 +cudaDevAttrMaxTexture1DLayeredLayers, +# 1881 +cudaDevAttrMaxTexture2DGatherWidth = 45, +# 1882 +cudaDevAttrMaxTexture2DGatherHeight, +# 1883 +cudaDevAttrMaxTexture3DWidthAlt, +# 1884 +cudaDevAttrMaxTexture3DHeightAlt, +# 1885 +cudaDevAttrMaxTexture3DDepthAlt, +# 1886 +cudaDevAttrPciDomainId, +# 1887 +cudaDevAttrTexturePitchAlignment, +# 1888 +cudaDevAttrMaxTextureCubemapWidth, +# 1889 +cudaDevAttrMaxTextureCubemapLayeredWidth, +# 1890 +cudaDevAttrMaxTextureCubemapLayeredLayers, +# 1891 +cudaDevAttrMaxSurface1DWidth, +# 1892 +cudaDevAttrMaxSurface2DWidth, +# 1893 +cudaDevAttrMaxSurface2DHeight, +# 1894 +cudaDevAttrMaxSurface3DWidth, +# 1895 +cudaDevAttrMaxSurface3DHeight, +# 1896 +cudaDevAttrMaxSurface3DDepth, +# 1897 +cudaDevAttrMaxSurface1DLayeredWidth, +# 1898 +cudaDevAttrMaxSurface1DLayeredLayers, +# 1899 +cudaDevAttrMaxSurface2DLayeredWidth, +# 1900 +cudaDevAttrMaxSurface2DLayeredHeight, +# 1901 +cudaDevAttrMaxSurface2DLayeredLayers, +# 1902 +cudaDevAttrMaxSurfaceCubemapWidth, +# 1903 +cudaDevAttrMaxSurfaceCubemapLayeredWidth, +# 1904 +cudaDevAttrMaxSurfaceCubemapLayeredLayers, +# 1905 +cudaDevAttrMaxTexture1DLinearWidth, +# 1906 +cudaDevAttrMaxTexture2DLinearWidth, +# 1907 +cudaDevAttrMaxTexture2DLinearHeight, +# 1908 +cudaDevAttrMaxTexture2DLinearPitch, +# 1909 +cudaDevAttrMaxTexture2DMipmappedWidth, +# 1910 +cudaDevAttrMaxTexture2DMipmappedHeight, +# 1911 +cudaDevAttrComputeCapabilityMajor, +# 1912 +cudaDevAttrComputeCapabilityMinor, +# 1913 +cudaDevAttrMaxTexture1DMipmappedWidth, +# 1914 +cudaDevAttrStreamPrioritiesSupported, +# 1915 +cudaDevAttrGlobalL1CacheSupported, +# 1916 +cudaDevAttrLocalL1CacheSupported, +# 1917 +cudaDevAttrMaxSharedMemoryPerMultiprocessor, +# 1918 +cudaDevAttrMaxRegistersPerMultiprocessor, +# 1919 +cudaDevAttrManagedMemory, +# 1920 +cudaDevAttrIsMultiGpuBoard, +# 1921 +cudaDevAttrMultiGpuBoardGroupID, +# 1922 +cudaDevAttrHostNativeAtomicSupported, +# 1923 +cudaDevAttrSingleToDoublePrecisionPerfRatio, +# 1924 +cudaDevAttrPageableMemoryAccess, +# 1925 +cudaDevAttrConcurrentManagedAccess, +# 1926 +cudaDevAttrComputePreemptionSupported, +# 1927 +cudaDevAttrCanUseHostPointerForRegisteredMem, +# 1928 +cudaDevAttrReserved92, +# 1929 +cudaDevAttrReserved93, +# 1930 +cudaDevAttrReserved94, +# 1931 +cudaDevAttrCooperativeLaunch, +# 1932 +cudaDevAttrCooperativeMultiDeviceLaunch, +# 1933 +cudaDevAttrMaxSharedMemoryPerBlockOptin, +# 1934 +cudaDevAttrCanFlushRemoteWrites, +# 1935 +cudaDevAttrHostRegisterSupported, +# 1936 +cudaDevAttrPageableMemoryAccessUsesHostPageTables, +# 1937 +cudaDevAttrDirectManagedMemAccessFromHost, +# 1938 +cudaDevAttrMaxBlocksPerMultiprocessor = 106, +# 1939 +cudaDevAttrMaxPersistingL2CacheSize = 108, +# 1940 +cudaDevAttrMaxAccessPolicyWindowSize, +# 1941 +cudaDevAttrReservedSharedMemoryPerBlock = 111, +# 1942 +cudaDevAttrSparseCudaArraySupported, +# 1943 +cudaDevAttrHostRegisterReadOnlySupported, +# 1944 +cudaDevAttrTimelineSemaphoreInteropSupported, +# 1945 +cudaDevAttrMaxTimelineSemaphoreInteropSupported = 114, +# 1946 +cudaDevAttrMemoryPoolsSupported, +# 1947 +cudaDevAttrGPUDirectRDMASupported, +# 1948 +cudaDevAttrGPUDirectRDMAFlushWritesOptions, +# 1949 +cudaDevAttrGPUDirectRDMAWritesOrdering, +# 1950 +cudaDevAttrMemoryPoolSupportedHandleTypes, +# 1955 +cudaDevAttrDeferredMappingCudaArraySupported = 121, +# 1957 +cudaDevAttrMax +# 1958 +}; +#endif +# 1963 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 1963 +enum cudaMemPoolAttr { +# 1973 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaMemPoolReuseFollowEventDependencies = 1, +# 1980 +cudaMemPoolReuseAllowOpportunistic, +# 1988 +cudaMemPoolReuseAllowInternalDependencies, +# 1999 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +cudaMemPoolAttrReleaseThreshold, +# 2005 +cudaMemPoolAttrReservedMemCurrent, +# 2012 +cudaMemPoolAttrReservedMemHigh, +# 2018 +cudaMemPoolAttrUsedMemCurrent, +# 2025 +cudaMemPoolAttrUsedMemHigh +# 2026 +}; +#endif +# 2031 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2031 +enum cudaMemLocationType { +# 2032 +cudaMemLocationTypeInvalid, +# 2033 +cudaMemLocationTypeDevice +# 2034 +}; +#endif +# 2041 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2041 +struct cudaMemLocation { +# 2042 +cudaMemLocationType type; +# 2043 +int id; +# 2044 +}; +#endif +# 2049 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2049 +enum cudaMemAccessFlags { +# 2050 +cudaMemAccessFlagsProtNone, +# 2051 +cudaMemAccessFlagsProtRead, +# 2052 +cudaMemAccessFlagsProtReadWrite = 3 +# 2053 +}; +#endif +# 2058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2058 +struct cudaMemAccessDesc { +# 2059 +cudaMemLocation location; +# 2060 +cudaMemAccessFlags flags; +# 2061 +}; +#endif +# 2066 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2066 +enum cudaMemAllocationType { +# 2067 +cudaMemAllocationTypeInvalid, +# 2071 +cudaMemAllocationTypePinned, +# 2072 +cudaMemAllocationTypeMax = 2147483647 +# 2073 +}; +#endif +# 2078 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2078 +enum cudaMemAllocationHandleType { +# 2079 +cudaMemHandleTypeNone, +# 2080 +cudaMemHandleTypePosixFileDescriptor, +# 2081 +cudaMemHandleTypeWin32, +# 2082 +cudaMemHandleTypeWin32Kmt = 4 +# 2083 +}; +#endif +# 2088 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2088 +struct cudaMemPoolProps { +# 2089 +cudaMemAllocationType allocType; +# 2090 +cudaMemAllocationHandleType handleTypes; +# 2091 +cudaMemLocation location; +# 2098 +void *win32SecurityAttributes; +# 2099 +unsigned char reserved[64]; +# 2100 +}; +#endif +# 2105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2105 +struct cudaMemPoolPtrExportData { +# 2106 +unsigned char reserved[64]; +# 2107 +}; +#endif +# 2112 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2112 +struct cudaMemAllocNodeParams { +# 2117 +cudaMemPoolProps poolProps; +# 2118 +const cudaMemAccessDesc *accessDescs; +# 2119 +size_t accessDescCount; +# 2120 +size_t bytesize; +# 2121 +void *dptr; +# 2122 +}; +#endif +# 2127 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2127 +enum cudaGraphMemAttributeType { +# 2132 +cudaGraphMemAttrUsedMemCurrent, +# 2139 +cudaGraphMemAttrUsedMemHigh, +# 2146 +cudaGraphMemAttrReservedMemCurrent, +# 2153 +cudaGraphMemAttrReservedMemHigh +# 2154 +}; +#endif +# 2160 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2160 +enum cudaDeviceP2PAttr { +# 2161 +cudaDevP2PAttrPerformanceRank = 1, +# 2162 +cudaDevP2PAttrAccessSupported, +# 2163 +cudaDevP2PAttrNativeAtomicSupported, +# 2164 +cudaDevP2PAttrCudaArrayAccessSupported +# 2165 +}; +#endif +# 2172 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2172 +struct CUuuid_st { +# 2173 +char bytes[16]; +# 2174 +}; +#endif +# 2175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef CUuuid_st +# 2175 +CUuuid; +#endif +# 2177 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef CUuuid_st +# 2177 +cudaUUID_t; +#endif +# 2182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2182 +struct cudaDeviceProp { +# 2184 +char name[256]; +# 2185 +cudaUUID_t uuid; +# 2186 +char luid[8]; +# 2187 +unsigned luidDeviceNodeMask; +# 2188 +size_t totalGlobalMem; +# 2189 +size_t sharedMemPerBlock; +# 2190 +int regsPerBlock; +# 2191 +int warpSize; +# 2192 +size_t memPitch; +# 2193 +int maxThreadsPerBlock; +# 2194 +int maxThreadsDim[3]; +# 2195 +int maxGridSize[3]; +# 2196 +int clockRate; +# 2197 +size_t totalConstMem; +# 2198 +int major; +# 2199 +int minor; +# 2200 +size_t textureAlignment; +# 2201 +size_t texturePitchAlignment; +# 2202 +int deviceOverlap; +# 2203 +int multiProcessorCount; +# 2204 +int kernelExecTimeoutEnabled; +# 2205 +int integrated; +# 2206 +int canMapHostMemory; +# 2207 +int computeMode; +# 2208 +int maxTexture1D; +# 2209 +int maxTexture1DMipmap; +# 2210 +int maxTexture1DLinear; +# 2211 +int maxTexture2D[2]; +# 2212 +int maxTexture2DMipmap[2]; +# 2213 +int maxTexture2DLinear[3]; +# 2214 +int maxTexture2DGather[2]; +# 2215 +int maxTexture3D[3]; +# 2216 +int maxTexture3DAlt[3]; +# 2217 +int maxTextureCubemap; +# 2218 +int maxTexture1DLayered[2]; +# 2219 +int maxTexture2DLayered[3]; +# 2220 +int maxTextureCubemapLayered[2]; +# 2221 +int maxSurface1D; +# 2222 +int maxSurface2D[2]; +# 2223 +int maxSurface3D[3]; +# 2224 +int maxSurface1DLayered[2]; +# 2225 +int maxSurface2DLayered[3]; +# 2226 +int maxSurfaceCubemap; +# 2227 +int maxSurfaceCubemapLayered[2]; +# 2228 +size_t surfaceAlignment; +# 2229 +int concurrentKernels; +# 2230 +int ECCEnabled; +# 2231 +int pciBusID; +# 2232 +int pciDeviceID; +# 2233 +int pciDomainID; +# 2234 +int tccDriver; +# 2235 +int asyncEngineCount; +# 2236 +int unifiedAddressing; +# 2237 +int memoryClockRate; +# 2238 +int memoryBusWidth; +# 2239 +int l2CacheSize; +# 2240 +int persistingL2CacheMaxSize; +# 2241 +int maxThreadsPerMultiProcessor; +# 2242 +int streamPrioritiesSupported; +# 2243 +int globalL1CacheSupported; +# 2244 +int localL1CacheSupported; +# 2245 +size_t sharedMemPerMultiprocessor; +# 2246 +int regsPerMultiprocessor; +# 2247 +int managedMemory; +# 2248 +int isMultiGpuBoard; +# 2249 +int multiGpuBoardGroupID; +# 2250 +int hostNativeAtomicSupported; +# 2251 +int singleToDoublePrecisionPerfRatio; +# 2252 +int pageableMemoryAccess; +# 2253 +int concurrentManagedAccess; +# 2254 +int computePreemptionSupported; +# 2255 +int canUseHostPointerForRegisteredMem; +# 2256 +int cooperativeLaunch; +# 2257 +int cooperativeMultiDeviceLaunch; +# 2258 +size_t sharedMemPerBlockOptin; +# 2259 +int pageableMemoryAccessUsesHostPageTables; +# 2260 +int directManagedMemAccessFromHost; +# 2261 +int maxBlocksPerMultiProcessor; +# 2262 +int accessPolicyMaxWindowSize; +# 2263 +size_t reservedSharedMemPerBlock; +# 2264 +}; +#endif +# 2365 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef +# 2362 +struct cudaIpcEventHandle_st { +# 2364 +char reserved[64]; +# 2365 +} cudaIpcEventHandle_t; +#endif +# 2373 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef +# 2370 +struct cudaIpcMemHandle_st { +# 2372 +char reserved[64]; +# 2373 +} cudaIpcMemHandle_t; +#endif +# 2378 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2378 +enum cudaExternalMemoryHandleType { +# 2382 +cudaExternalMemoryHandleTypeOpaqueFd = 1, +# 2386 +cudaExternalMemoryHandleTypeOpaqueWin32, +# 2390 +cudaExternalMemoryHandleTypeOpaqueWin32Kmt, +# 2394 +cudaExternalMemoryHandleTypeD3D12Heap, +# 2398 +cudaExternalMemoryHandleTypeD3D12Resource, +# 2402 +cudaExternalMemoryHandleTypeD3D11Resource, +# 2406 +cudaExternalMemoryHandleTypeD3D11ResourceKmt, +# 2410 +cudaExternalMemoryHandleTypeNvSciBuf +# 2411 +}; +#endif +# 2453 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2453 +struct cudaExternalMemoryHandleDesc { +# 2457 +cudaExternalMemoryHandleType type; +# 2458 +union { +# 2464 +int fd; +# 2480 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct { +# 2484 +void *handle; +# 2489 +const void *name; +# 2490 +} win32; +# 2495 +const void *nvSciBufObject; +# 2496 +} handle; +# 2500 +unsigned long long size; +# 2504 +unsigned flags; __pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;) +# 2505 +}; +#endif +# 2510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2510 +struct cudaExternalMemoryBufferDesc { +# 2514 +unsigned long long offset; +# 2518 +unsigned long long size; +# 2522 +unsigned flags; +# 2523 +}; +#endif +# 2528 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2528 +struct cudaExternalMemoryMipmappedArrayDesc { +# 2533 +unsigned long long offset; +# 2537 +cudaChannelFormatDesc formatDesc; +# 2541 +cudaExtent extent; +# 2546 +unsigned flags; +# 2550 +unsigned numLevels; +# 2551 +}; +#endif +# 2556 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2556 +enum cudaExternalSemaphoreHandleType { +# 2560 +cudaExternalSemaphoreHandleTypeOpaqueFd = 1, +# 2564 +cudaExternalSemaphoreHandleTypeOpaqueWin32, +# 2568 +cudaExternalSemaphoreHandleTypeOpaqueWin32Kmt, +# 2572 +cudaExternalSemaphoreHandleTypeD3D12Fence, +# 2576 +cudaExternalSemaphoreHandleTypeD3D11Fence, +# 2580 +cudaExternalSemaphoreHandleTypeNvSciSync, +# 2584 +cudaExternalSemaphoreHandleTypeKeyedMutex, +# 2588 +cudaExternalSemaphoreHandleTypeKeyedMutexKmt, +# 2592 +cudaExternalSemaphoreHandleTypeTimelineSemaphoreFd, +# 2596 +cudaExternalSemaphoreHandleTypeTimelineSemaphoreWin32 +# 2597 +}; +#endif +# 2602 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2602 +struct cudaExternalSemaphoreHandleDesc { +# 2606 +cudaExternalSemaphoreHandleType type; +# 2607 +union { +# 2614 +int fd; +# 2630 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +struct { +# 2634 +void *handle; +# 2639 +const void *name; +# 2640 +} win32; +# 2644 +const void *nvSciSyncObj; +# 2645 +} handle; +# 2649 +unsigned flags; __pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;) +# 2650 +}; +#endif +# 2655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2655 +struct cudaExternalSemaphoreSignalParams_v1 { +# 2656 +struct { +# 2660 +struct { +# 2664 +unsigned long long value; +# 2665 +} fence; +# 2666 +union { +# 2671 +void *fence; +# 2672 +unsigned long long reserved; +# 2673 +} nvSciSync; +# 2677 +struct { +# 2681 +unsigned long long key; +# 2682 +} keyedMutex; +# 2683 +} params; +# 2694 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +unsigned flags; +# 2695 +}; +#endif +# 2700 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2700 +struct cudaExternalSemaphoreWaitParams_v1 { +# 2701 +struct { +# 2705 +struct { +# 2709 +unsigned long long value; +# 2710 +} fence; +# 2711 +union { +# 2716 +void *fence; +# 2717 +unsigned long long reserved; +# 2718 +} nvSciSync; +# 2722 +struct { +# 2726 +unsigned long long key; +# 2730 +unsigned timeoutMs; +# 2731 +} keyedMutex; +# 2732 +} params; +# 2743 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +unsigned flags; +# 2744 +}; +#endif +# 2749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2749 +struct cudaExternalSemaphoreSignalParams { +# 2750 +struct { +# 2754 +struct { +# 2758 +unsigned long long value; +# 2759 +} fence; +# 2760 +union { +# 2765 +void *fence; +# 2766 +unsigned long long reserved; +# 2767 +} nvSciSync; +# 2771 +struct { +# 2775 +unsigned long long key; +# 2776 +} keyedMutex; +# 2777 +unsigned reserved[12]; +# 2778 +} params; +# 2789 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +unsigned flags; +# 2790 +unsigned reserved[16]; +# 2791 +}; +#endif +# 2796 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2796 +struct cudaExternalSemaphoreWaitParams { +# 2797 +struct { +# 2801 +struct { +# 2805 +unsigned long long value; +# 2806 +} fence; +# 2807 +union { +# 2812 +void *fence; +# 2813 +unsigned long long reserved; +# 2814 +} nvSciSync; +# 2818 +struct { +# 2822 +unsigned long long key; +# 2826 +unsigned timeoutMs; +# 2827 +} keyedMutex; +# 2828 +unsigned reserved[10]; +# 2829 +} params; +# 2840 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +unsigned flags; +# 2841 +unsigned reserved[16]; +# 2842 +}; +#endif +# 2853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef cudaError +# 2853 +cudaError_t; +#endif +# 2858 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUstream_st * +# 2858 +cudaStream_t; +#endif +# 2863 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUevent_st * +# 2863 +cudaEvent_t; +#endif +# 2868 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef cudaGraphicsResource * +# 2868 +cudaGraphicsResource_t; +#endif +# 2873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef cudaOutputMode +# 2873 +cudaOutputMode_t; +#endif +# 2878 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUexternalMemory_st * +# 2878 +cudaExternalMemory_t; +#endif +# 2883 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUexternalSemaphore_st * +# 2883 +cudaExternalSemaphore_t; +#endif +# 2888 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUgraph_st * +# 2888 +cudaGraph_t; +#endif +# 2893 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUgraphNode_st * +# 2893 +cudaGraphNode_t; +#endif +# 2898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUuserObject_st * +# 2898 +cudaUserObject_t; +#endif +# 2903 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUfunc_st * +# 2903 +cudaFunction_t; +#endif +# 2908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef struct CUmemPoolHandle_st * +# 2908 +cudaMemPool_t; +#endif +# 2913 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2913 +enum cudaCGScope { +# 2914 +cudaCGScopeInvalid, +# 2915 +cudaCGScopeGrid, +# 2916 +cudaCGScopeMultiGrid +# 2917 +}; +#endif +# 2922 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2922 +struct cudaLaunchParams { +# 2924 +void *func; +# 2925 +dim3 gridDim; +# 2926 +dim3 blockDim; +# 2927 +void **args; +# 2928 +size_t sharedMem; +# 2929 +cudaStream_t stream; +# 2930 +}; +#endif +# 2935 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2935 +struct cudaKernelNodeParams { +# 2936 +void *func; +# 2937 +dim3 gridDim; +# 2938 +dim3 blockDim; +# 2939 +unsigned sharedMemBytes; +# 2940 +void **kernelParams; +# 2941 +void **extra; +# 2942 +}; +#endif +# 2947 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2947 +struct cudaExternalSemaphoreSignalNodeParams { +# 2948 +cudaExternalSemaphore_t *extSemArray; +# 2949 +const cudaExternalSemaphoreSignalParams *paramsArray; +# 2950 +unsigned numExtSems; +# 2951 +}; +#endif +# 2956 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2956 +struct cudaExternalSemaphoreWaitNodeParams { +# 2957 +cudaExternalSemaphore_t *extSemArray; +# 2958 +const cudaExternalSemaphoreWaitParams *paramsArray; +# 2959 +unsigned numExtSems; +# 2960 +}; +#endif +# 2965 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 2965 +enum cudaGraphNodeType { +# 2966 +cudaGraphNodeTypeKernel, +# 2967 +cudaGraphNodeTypeMemcpy, +# 2968 +cudaGraphNodeTypeMemset, +# 2969 +cudaGraphNodeTypeHost, +# 2970 +cudaGraphNodeTypeGraph, +# 2971 +cudaGraphNodeTypeEmpty, +# 2972 +cudaGraphNodeTypeWaitEvent, +# 2973 +cudaGraphNodeTypeEventRecord, +# 2974 +cudaGraphNodeTypeExtSemaphoreSignal, +# 2975 +cudaGraphNodeTypeExtSemaphoreWait, +# 2976 +cudaGraphNodeTypeMemAlloc, +# 2977 +cudaGraphNodeTypeMemFree, +# 2978 +cudaGraphNodeTypeCount +# 2979 +}; +#endif +# 2984 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +typedef struct CUgraphExec_st *cudaGraphExec_t; +# 2989 +#if 0 +# 2989 +enum cudaGraphExecUpdateResult { +# 2990 +cudaGraphExecUpdateSuccess, +# 2991 +cudaGraphExecUpdateError, +# 2992 +cudaGraphExecUpdateErrorTopologyChanged, +# 2993 +cudaGraphExecUpdateErrorNodeTypeChanged, +# 2994 +cudaGraphExecUpdateErrorFunctionChanged, +# 2995 +cudaGraphExecUpdateErrorParametersChanged, +# 2996 +cudaGraphExecUpdateErrorNotSupported, +# 2997 +cudaGraphExecUpdateErrorUnsupportedFunctionChange, +# 2998 +cudaGraphExecUpdateErrorAttributesChanged +# 2999 +}; +#endif +# 3005 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 3005 +enum cudaGetDriverEntryPointFlags { +# 3006 +cudaEnableDefault, +# 3007 +cudaEnableLegacyStream, +# 3008 +cudaEnablePerThreadDefaultStream +# 3009 +}; +#endif +# 3014 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 3014 +enum cudaGraphDebugDotFlags { +# 3015 +cudaGraphDebugDotFlagsVerbose = (1 << 0), +# 3016 +cudaGraphDebugDotFlagsKernelNodeParams = (1 << 2), +# 3017 +cudaGraphDebugDotFlagsMemcpyNodeParams = (1 << 3), +# 3018 +cudaGraphDebugDotFlagsMemsetNodeParams = (1 << 4), +# 3019 +cudaGraphDebugDotFlagsHostNodeParams = (1 << 5), +# 3020 +cudaGraphDebugDotFlagsEventNodeParams = (1 << 6), +# 3021 +cudaGraphDebugDotFlagsExtSemasSignalNodeParams = (1 << 7), +# 3022 +cudaGraphDebugDotFlagsExtSemasWaitNodeParams = (1 << 8), +# 3023 +cudaGraphDebugDotFlagsKernelNodeAttributes = (1 << 9), +# 3024 +cudaGraphDebugDotFlagsHandles = (1 << 10) +# 3025 +}; +#endif +# 3030 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +# 3030 +enum cudaGraphInstantiateFlags { +# 3031 +cudaGraphInstantiateFlagAutoFreeOnLaunch = 1, +# 3033 +cudaGraphInstantiateFlagUseNodePriority = 8 +# 3036 +}; +#endif +# 3129 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef +# 3126 +enum cudaStreamAttrID { +# 3127 +cudaStreamAttributeAccessPolicyWindow = 1, +# 3128 +cudaStreamAttributeSynchronizationPolicy = 3 +# 3129 +} cudaStreamAttrID; +#endif +# 3143 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef +# 3140 +union cudaStreamAttrValue { +# 3141 +cudaAccessPolicyWindow accessPolicyWindow; +# 3142 +cudaSynchronizationPolicy syncPolicy; __pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;) +# 3143 +} cudaStreamAttrValue; +#endif +# 3158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef +# 3152 +enum cudaKernelNodeAttrID { +# 3153 +cudaKernelNodeAttributeAccessPolicyWindow = 1, +# 3154 +cudaKernelNodeAttributeCooperative, +# 3156 +cudaKernelNodeAttributePriority = 8 +# 3158 +} cudaKernelNodeAttrID; +#endif +# 3176 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_types.h" +#if 0 +typedef +# 3170 +union cudaKernelNodeAttrValue { +# 3171 +cudaAccessPolicyWindow accessPolicyWindow; +# 3172 +int cooperative; +# 3174 +int priority; __pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;)__pad__(volatile char:8;) +# 3176 +} cudaKernelNodeAttrValue; +#endif +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" +#if 0 +# 84 +enum cudaSurfaceBoundaryMode { +# 86 +cudaBoundaryModeZero, +# 87 +cudaBoundaryModeClamp, +# 88 +cudaBoundaryModeTrap +# 89 +}; +#endif +# 94 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" +#if 0 +# 94 +enum cudaSurfaceFormatMode { +# 96 +cudaFormatModeForced, +# 97 +cudaFormatModeAuto +# 98 +}; +#endif +# 103 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" +#if 0 +# 103 +struct surfaceReference { +# 108 +cudaChannelFormatDesc channelDesc; +# 109 +}; +#endif +# 114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_types.h" +#if 0 +typedef unsigned long long +# 114 +cudaSurfaceObject_t; +#endif +# 84 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +#if 0 +# 84 +enum cudaTextureAddressMode { +# 86 +cudaAddressModeWrap, +# 87 +cudaAddressModeClamp, +# 88 +cudaAddressModeMirror, +# 89 +cudaAddressModeBorder +# 90 +}; +#endif +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +#if 0 +# 95 +enum cudaTextureFilterMode { +# 97 +cudaFilterModePoint, +# 98 +cudaFilterModeLinear +# 99 +}; +#endif +# 104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +#if 0 +# 104 +enum cudaTextureReadMode { +# 106 +cudaReadModeElementType, +# 107 +cudaReadModeNormalizedFloat +# 108 +}; +#endif +# 113 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +#if 0 +# 113 +struct textureReference { +# 118 +int normalized; +# 122 +cudaTextureFilterMode filterMode; +# 126 +cudaTextureAddressMode addressMode[3]; +# 130 +cudaChannelFormatDesc channelDesc; +# 134 +int sRGB; +# 138 +unsigned maxAnisotropy; +# 142 +cudaTextureFilterMode mipmapFilterMode; +# 146 +float mipmapLevelBias; +# 150 +float minMipmapLevelClamp; +# 154 +float maxMipmapLevelClamp; +# 158 +int disableTrilinearOptimization; +# 159 +int __cudaReserved[14]; +# 160 +}; +#endif +# 165 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +#if 0 +# 165 +struct cudaTextureDesc { +# 170 +cudaTextureAddressMode addressMode[3]; +# 174 +cudaTextureFilterMode filterMode; +# 178 +cudaTextureReadMode readMode; +# 182 +int sRGB; +# 186 +float borderColor[4]; +# 190 +int normalizedCoords; +# 194 +unsigned maxAnisotropy; +# 198 +cudaTextureFilterMode mipmapFilterMode; +# 202 +float mipmapLevelBias; +# 206 +float minMipmapLevelClamp; +# 210 +float maxMipmapLevelClamp; +# 214 +int disableTrilinearOptimization; +# 218 +int seamlessCubemap; +# 219 +}; +#endif +# 224 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_types.h" +#if 0 +typedef unsigned long long +# 224 +cudaTextureObject_t; +#endif +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/library_types.h" +typedef +# 55 +enum cudaDataType_t { +# 57 +CUDA_R_16F = 2, +# 58 +CUDA_C_16F = 6, +# 59 +CUDA_R_16BF = 14, +# 60 +CUDA_C_16BF, +# 61 +CUDA_R_32F = 0, +# 62 +CUDA_C_32F = 4, +# 63 +CUDA_R_64F = 1, +# 64 +CUDA_C_64F = 5, +# 65 +CUDA_R_4I = 16, +# 66 +CUDA_C_4I, +# 67 +CUDA_R_4U, +# 68 +CUDA_C_4U, +# 69 +CUDA_R_8I = 3, +# 70 +CUDA_C_8I = 7, +# 71 +CUDA_R_8U, +# 72 +CUDA_C_8U, +# 73 +CUDA_R_16I = 20, +# 74 +CUDA_C_16I, +# 75 +CUDA_R_16U, +# 76 +CUDA_C_16U, +# 77 +CUDA_R_32I = 10, +# 78 +CUDA_C_32I, +# 79 +CUDA_R_32U, +# 80 +CUDA_C_32U, +# 81 +CUDA_R_64I = 24, +# 82 +CUDA_C_64I, +# 83 +CUDA_R_64U, +# 84 +CUDA_C_64U +# 89 +} cudaDataType; +# 97 +typedef +# 92 +enum libraryPropertyType_t { +# 94 +MAJOR_VERSION, +# 95 +MINOR_VERSION, +# 96 +PATCH_LEVEL +# 97 +} libraryPropertyType; +# 136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +extern "C" { +# 138 +extern cudaError_t cudaDeviceGetAttribute(int * value, cudaDeviceAttr attr, int device); +# 139 +extern cudaError_t cudaDeviceGetLimit(size_t * pValue, cudaLimit limit); +# 140 +extern cudaError_t cudaDeviceGetCacheConfig(cudaFuncCache * pCacheConfig); +# 141 +extern cudaError_t cudaDeviceGetSharedMemConfig(cudaSharedMemConfig * pConfig); +# 142 +extern cudaError_t cudaDeviceSynchronize(); +# 143 +__attribute__((unused)) extern cudaError_t __cudaDeviceSynchronizeDeprecationAvoidance(); +# 144 +extern cudaError_t cudaGetLastError(); +# 145 +extern cudaError_t cudaPeekAtLastError(); +# 146 +extern const char *cudaGetErrorString(cudaError_t error); +# 147 +extern const char *cudaGetErrorName(cudaError_t error); +# 148 +extern cudaError_t cudaGetDeviceCount(int * count); +# 149 +extern cudaError_t cudaGetDevice(int * device); +# 150 +extern cudaError_t cudaStreamCreateWithFlags(cudaStream_t * pStream, unsigned flags); +# 151 +extern cudaError_t cudaStreamDestroy(cudaStream_t stream); +# 152 +extern cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned flags); +# 153 +__attribute__((unused)) extern cudaError_t cudaStreamWaitEvent_ptsz(cudaStream_t stream, cudaEvent_t event, unsigned flags); +# 154 +extern cudaError_t cudaEventCreateWithFlags(cudaEvent_t * event, unsigned flags); +# 155 +extern cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream); +# 156 +__attribute__((unused)) extern cudaError_t cudaEventRecord_ptsz(cudaEvent_t event, cudaStream_t stream); +# 157 +extern cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream, unsigned flags); +# 158 +__attribute__((unused)) extern cudaError_t cudaEventRecordWithFlags_ptsz(cudaEvent_t event, cudaStream_t stream, unsigned flags); +# 159 +extern cudaError_t cudaEventDestroy(cudaEvent_t event); +# 160 +extern cudaError_t cudaFuncGetAttributes(cudaFuncAttributes * attr, const void * func); +# 161 +extern cudaError_t cudaFree(void * devPtr); +# 162 +extern cudaError_t cudaMalloc(void ** devPtr, size_t size); +# 163 +extern cudaError_t cudaMemcpyAsync(void * dst, const void * src, size_t count, cudaMemcpyKind kind, cudaStream_t stream); +# 164 +__attribute__((unused)) extern cudaError_t cudaMemcpyAsync_ptsz(void * dst, const void * src, size_t count, cudaMemcpyKind kind, cudaStream_t stream); +# 165 +extern cudaError_t cudaMemcpy2DAsync(void * dst, size_t dpitch, const void * src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream); +# 166 +__attribute__((unused)) extern cudaError_t cudaMemcpy2DAsync_ptsz(void * dst, size_t dpitch, const void * src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream); +# 167 +extern cudaError_t cudaMemcpy3DAsync(const cudaMemcpy3DParms * p, cudaStream_t stream); +# 168 +__attribute__((unused)) extern cudaError_t cudaMemcpy3DAsync_ptsz(const cudaMemcpy3DParms * p, cudaStream_t stream); +# 169 +extern cudaError_t cudaMemsetAsync(void * devPtr, int value, size_t count, cudaStream_t stream); +# 170 +__attribute__((unused)) extern cudaError_t cudaMemsetAsync_ptsz(void * devPtr, int value, size_t count, cudaStream_t stream); +# 171 +extern cudaError_t cudaMemset2DAsync(void * devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream); +# 172 +__attribute__((unused)) extern cudaError_t cudaMemset2DAsync_ptsz(void * devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream); +# 173 +extern cudaError_t cudaMemset3DAsync(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent, cudaStream_t stream); +# 174 +__attribute__((unused)) extern cudaError_t cudaMemset3DAsync_ptsz(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent, cudaStream_t stream); +# 175 +extern cudaError_t cudaRuntimeGetVersion(int * runtimeVersion); +# 196 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +__attribute__((unused)) extern void *cudaGetParameterBuffer(size_t alignment, size_t size); +# 224 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +__attribute__((unused)) extern void *cudaGetParameterBufferV2(void * func, dim3 gridDimension, dim3 blockDimension, unsigned sharedMemSize); +# 225 +__attribute__((unused)) extern cudaError_t cudaLaunchDevice_ptsz(void * func, void * parameterBuffer, dim3 gridDimension, dim3 blockDimension, unsigned sharedMemSize, cudaStream_t stream); +# 226 +__attribute__((unused)) extern cudaError_t cudaLaunchDeviceV2_ptsz(void * parameterBuffer, cudaStream_t stream); +# 244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_device_runtime_api.h" +__attribute__((unused)) extern cudaError_t cudaLaunchDevice(void * func, void * parameterBuffer, dim3 gridDimension, dim3 blockDimension, unsigned sharedMemSize, cudaStream_t stream); +# 245 +__attribute__((unused)) extern cudaError_t cudaLaunchDeviceV2(void * parameterBuffer, cudaStream_t stream); +# 248 +extern cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int * numBlocks, const void * func, int blockSize, size_t dynamicSmemSize); +# 249 +extern cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int * numBlocks, const void * func, int blockSize, size_t dynamicSmemSize, unsigned flags); +# 251 +__attribute__((unused)) extern unsigned long long cudaCGGetIntrinsicHandle(cudaCGScope scope); +# 252 +__attribute__((unused)) extern cudaError_t cudaCGSynchronize(unsigned long long handle, unsigned flags); +# 253 +__attribute__((unused)) extern cudaError_t cudaCGSynchronizeGrid(unsigned long long handle, unsigned flags); +# 254 +__attribute__((unused)) extern cudaError_t cudaCGGetSize(unsigned * numThreads, unsigned * numGrids, unsigned long long handle); +# 255 +__attribute__((unused)) extern cudaError_t cudaCGGetRank(unsigned * threadRank, unsigned * gridRank, unsigned long long handle); +# 256 +} +# 258 +template< class T> static inline cudaError_t cudaMalloc(T ** devPtr, size_t size); +# 259 +template< class T> static inline cudaError_t cudaFuncGetAttributes(cudaFuncAttributes * attr, T * entry); +# 260 +template< class T> static inline cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int * numBlocks, T func, int blockSize, size_t dynamicSmemSize); +# 261 +template< class T> static inline cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int * numBlocks, T func, int blockSize, size_t dynamicSmemSize, unsigned flags); +# 269 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern "C" { +# 309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceReset(); +# 331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceSynchronize(); +# 418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceSetLimit(cudaLimit limit, size_t value); +# 453 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetLimit(size_t * pValue, cudaLimit limit); +# 476 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetTexture1DLinearMaxWidth(size_t * maxWidthInElements, const cudaChannelFormatDesc * fmtDesc, int device); +# 510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetCacheConfig(cudaFuncCache * pCacheConfig); +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetStreamPriorityRange(int * leastPriority, int * greatestPriority); +# 591 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceSetCacheConfig(cudaFuncCache cacheConfig); +# 622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetSharedMemConfig(cudaSharedMemConfig * pConfig); +# 666 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceSetSharedMemConfig(cudaSharedMemConfig config); +# 693 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetByPCIBusId(int * device, const char * pciBusId); +# 723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetPCIBusId(char * pciBusId, int len, int device); +# 771 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaIpcGetEventHandle(cudaIpcEventHandle_t * handle, cudaEvent_t event); +# 812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaIpcOpenEventHandle(cudaEvent_t * event, cudaIpcEventHandle_t handle); +# 855 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaIpcGetMemHandle(cudaIpcMemHandle_t * handle, void * devPtr); +# 919 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaIpcOpenMemHandle(void ** devPtr, cudaIpcMemHandle_t handle, unsigned flags); +# 955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaIpcCloseMemHandle(void * devPtr); +# 987 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceFlushGPUDirectRDMAWrites(cudaFlushGPUDirectRDMAWritesTarget target, cudaFlushGPUDirectRDMAWritesScope scope); +# 1031 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaThreadExit(); +# 1057 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaThreadSynchronize(); +# 1106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaThreadSetLimit(cudaLimit limit, size_t value); +# 1139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaThreadGetLimit(size_t * pValue, cudaLimit limit); +# 1175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaThreadGetCacheConfig(cudaFuncCache * pCacheConfig); +# 1222 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaThreadSetCacheConfig(cudaFuncCache cacheConfig); +# 1285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetLastError(); +# 1333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaPeekAtLastError(); +# 1349 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern const char *cudaGetErrorName(cudaError_t error); +# 1365 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern const char *cudaGetErrorString(cudaError_t error); +# 1393 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetDeviceCount(int * count); +# 1666 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetDeviceProperties(cudaDeviceProp * prop, int device); +# 1868 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetAttribute(int * value, cudaDeviceAttr attr, int device); +# 1886 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetDefaultMemPool(cudaMemPool_t * memPool, int device); +# 1910 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceSetMemPool(int device, cudaMemPool_t memPool); +# 1930 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetMemPool(cudaMemPool_t * memPool, int device); +# 1978 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetNvSciSyncAttributes(void * nvSciSyncAttrList, int device, int flags); +# 2018 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetP2PAttribute(int * value, cudaDeviceP2PAttr attr, int srcDevice, int dstDevice); +# 2039 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaChooseDevice(int * device, const cudaDeviceProp * prop); +# 2083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaSetDevice(int device); +# 2104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetDevice(int * device); +# 2135 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaSetValidDevices(int * device_arr, int len); +# 2200 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaSetDeviceFlags(unsigned flags); +# 2244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetDeviceFlags(unsigned * flags); +# 2284 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamCreate(cudaStream_t * pStream); +# 2316 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamCreateWithFlags(cudaStream_t * pStream, unsigned flags); +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamCreateWithPriority(cudaStream_t * pStream, unsigned flags, int priority); +# 2389 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamGetPriority(cudaStream_t hStream, int * priority); +# 2414 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamGetFlags(cudaStream_t hStream, unsigned * flags); +# 2429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaCtxResetPersistingL2Cache(); +# 2449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamCopyAttributes(cudaStream_t dst, cudaStream_t src); +# 2470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamGetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, cudaStreamAttrValue * value_out); +# 2494 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamSetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, const cudaStreamAttrValue * value); +# 2528 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamDestroy(cudaStream_t stream); +# 2559 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned flags = 0); +# 2567 +typedef void (*cudaStreamCallback_t)(cudaStream_t stream, cudaError_t status, void * userData); +# 2634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamAddCallback(cudaStream_t stream, cudaStreamCallback_t callback, void * userData, unsigned flags); +# 2658 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamSynchronize(cudaStream_t stream); +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamQuery(cudaStream_t stream); +# 2767 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamAttachMemAsync(cudaStream_t stream, void * devPtr, size_t length = 0, unsigned flags = 4); +# 2806 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamBeginCapture(cudaStream_t stream, cudaStreamCaptureMode mode); +# 2857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaThreadExchangeStreamCaptureMode(cudaStreamCaptureMode * mode); +# 2885 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamEndCapture(cudaStream_t stream, cudaGraph_t * pGraph); +# 2923 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamIsCapturing(cudaStream_t stream, cudaStreamCaptureStatus * pCaptureStatus); +# 2955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamGetCaptureInfo(cudaStream_t stream, cudaStreamCaptureStatus * pCaptureStatus, unsigned long long * pId); +# 3010 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamGetCaptureInfo_v2(cudaStream_t stream, cudaStreamCaptureStatus * captureStatus_out, unsigned long long * id_out = 0, cudaGraph_t * graph_out = 0, const cudaGraphNode_t ** dependencies_out = 0, size_t * numDependencies_out = 0); +# 3043 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaStreamUpdateCaptureDependencies(cudaStream_t stream, cudaGraphNode_t * dependencies, size_t numDependencies, unsigned flags = 0); +# 3080 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventCreate(cudaEvent_t * event); +# 3117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventCreateWithFlags(cudaEvent_t * event, unsigned flags); +# 3157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream = 0); +# 3204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream = 0, unsigned flags = 0); +# 3236 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventQuery(cudaEvent_t event); +# 3266 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventSynchronize(cudaEvent_t event); +# 3295 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventDestroy(cudaEvent_t event); +# 3338 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaEventElapsedTime(float * ms, cudaEvent_t start, cudaEvent_t end); +# 3518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaImportExternalMemory(cudaExternalMemory_t * extMem_out, const cudaExternalMemoryHandleDesc * memHandleDesc); +# 3573 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaExternalMemoryGetMappedBuffer(void ** devPtr, cudaExternalMemory_t extMem, const cudaExternalMemoryBufferDesc * bufferDesc); +# 3635 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaExternalMemoryGetMappedMipmappedArray(cudaMipmappedArray_t * mipmap, cudaExternalMemory_t extMem, const cudaExternalMemoryMipmappedArrayDesc * mipmapDesc); +# 3659 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDestroyExternalMemory(cudaExternalMemory_t extMem); +# 3812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaImportExternalSemaphore(cudaExternalSemaphore_t * extSem_out, const cudaExternalSemaphoreHandleDesc * semHandleDesc); +# 3879 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaSignalExternalSemaphoresAsync_v2(const cudaExternalSemaphore_t * extSemArray, const cudaExternalSemaphoreSignalParams * paramsArray, unsigned numExtSems, cudaStream_t stream = 0); +# 3955 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaWaitExternalSemaphoresAsync_v2(const cudaExternalSemaphore_t * extSemArray, const cudaExternalSemaphoreWaitParams * paramsArray, unsigned numExtSems, cudaStream_t stream = 0); +# 3978 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDestroyExternalSemaphore(cudaExternalSemaphore_t extSem); +# 4045 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaLaunchKernel(const void * func, dim3 gridDim, dim3 blockDim, void ** args, size_t sharedMem, cudaStream_t stream); +# 4106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaLaunchCooperativeKernel(const void * func, dim3 gridDim, dim3 blockDim, void ** args, size_t sharedMem, cudaStream_t stream); +# 4207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaLaunchCooperativeKernelMultiDevice(cudaLaunchParams * launchParamsList, unsigned numDevices, unsigned flags = 0); +# 4254 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFuncSetCacheConfig(const void * func, cudaFuncCache cacheConfig); +# 4309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFuncSetSharedMemConfig(const void * func, cudaSharedMemConfig config); +# 4342 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFuncGetAttributes(cudaFuncAttributes * attr, const void * func); +# 4379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFuncSetAttribute(const void * func, cudaFuncAttribute attr, int value); +# 4405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaSetDoubleForDevice(double * d); +# 4429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaSetDoubleForHost(double * d); +# 4497 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaLaunchHostFunc(cudaStream_t stream, cudaHostFn_t fn, void * userData); +# 4554 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int * numBlocks, const void * func, int blockSize, size_t dynamicSMemSize); +# 4583 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaOccupancyAvailableDynamicSMemPerBlock(size_t * dynamicSmemSize, const void * func, int numBlocks, int blockSize); +# 4628 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int * numBlocks, const void * func, int blockSize, size_t dynamicSMemSize, unsigned flags); +# 4749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMallocManaged(void ** devPtr, size_t size, unsigned flags = 1); +# 4782 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMalloc(void ** devPtr, size_t size); +# 4815 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMallocHost(void ** ptr, size_t size); +# 4858 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMallocPitch(void ** devPtr, size_t * pitch, size_t width, size_t height); +# 4912 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMallocArray(cudaArray_t * array, const cudaChannelFormatDesc * desc, size_t width, size_t height = 0, unsigned flags = 0); +# 4950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFree(void * devPtr); +# 4973 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFreeHost(void * ptr); +# 4996 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFreeArray(cudaArray_t array); +# 5019 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray); +# 5085 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaHostAlloc(void ** pHost, size_t size, unsigned flags); +# 5178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaHostRegister(void * ptr, size_t size, unsigned flags); +# 5201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaHostUnregister(void * ptr); +# 5246 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaHostGetDevicePointer(void ** pDevice, void * pHost, unsigned flags); +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaHostGetFlags(unsigned * pFlags, void * pHost); +# 5307 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMalloc3D(cudaPitchedPtr * pitchedDevPtr, cudaExtent extent); +# 5454 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMalloc3DArray(cudaArray_t * array, const cudaChannelFormatDesc * desc, cudaExtent extent, unsigned flags = 0); +# 5601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMallocMipmappedArray(cudaMipmappedArray_t * mipmappedArray, const cudaChannelFormatDesc * desc, cudaExtent extent, unsigned numLevels, unsigned flags = 0); +# 5634 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetMipmappedArrayLevel(cudaArray_t * levelArray, cudaMipmappedArray_const_t mipmappedArray, unsigned level); +# 5739 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy3D(const cudaMemcpy3DParms * p); +# 5770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy3DPeer(const cudaMemcpy3DPeerParms * p); +# 5888 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy3DAsync(const cudaMemcpy3DParms * p, cudaStream_t stream = 0); +# 5914 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy3DPeerAsync(const cudaMemcpy3DPeerParms * p, cudaStream_t stream = 0); +# 5948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemGetInfo(size_t * free, size_t * total); +# 5974 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaArrayGetInfo(cudaChannelFormatDesc * desc, cudaExtent * extent, unsigned * flags, cudaArray_t array); +# 6003 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaArrayGetPlane(cudaArray_t * pPlaneArray, cudaArray_t hArray, unsigned planeIdx); +# 6027 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaArrayGetMemoryRequirements(cudaArrayMemoryRequirements * memoryRequirements, cudaArray_t array, int device); +# 6051 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMipmappedArrayGetMemoryRequirements(cudaArrayMemoryRequirements * memoryRequirements, cudaMipmappedArray_t mipmap, int device); +# 6080 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaArrayGetSparseProperties(cudaArraySparseProperties * sparseProperties, cudaArray_t array); +# 6110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMipmappedArrayGetSparseProperties(cudaArraySparseProperties * sparseProperties, cudaMipmappedArray_t mipmap); +# 6155 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy(void * dst, const void * src, size_t count, cudaMemcpyKind kind); +# 6190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpyPeer(void * dst, int dstDevice, const void * src, int srcDevice, size_t count); +# 6239 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy2D(void * dst, size_t dpitch, const void * src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind); +# 6289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void * src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind); +# 6339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy2DFromArray(void * dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind); +# 6386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, cudaMemcpyKind kind = cudaMemcpyDeviceToDevice); +# 6429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpyToSymbol(const void * symbol, const void * src, size_t count, size_t offset = 0, cudaMemcpyKind kind = cudaMemcpyHostToDevice); +# 6472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpyFromSymbol(void * dst, const void * symbol, size_t count, size_t offset = 0, cudaMemcpyKind kind = cudaMemcpyDeviceToHost); +# 6529 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpyAsync(void * dst, const void * src, size_t count, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6564 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpyPeerAsync(void * dst, int dstDevice, const void * src, int srcDevice, size_t count, cudaStream_t stream = 0); +# 6627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy2DAsync(void * dst, size_t dpitch, const void * src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6685 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void * src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6742 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpy2DFromArrayAsync(void * dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6793 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpyToSymbolAsync(const void * symbol, const void * src, size_t count, size_t offset, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6844 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemcpyFromSymbolAsync(void * dst, const void * symbol, size_t count, size_t offset, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemset(void * devPtr, int value, size_t count); +# 6907 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemset2D(void * devPtr, size_t pitch, int value, size_t width, size_t height); +# 6953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemset3D(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent); +# 6989 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemsetAsync(void * devPtr, int value, size_t count, cudaStream_t stream = 0); +# 7030 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemset2DAsync(void * devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream = 0); +# 7083 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemset3DAsync(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent, cudaStream_t stream = 0); +# 7111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetSymbolAddress(void ** devPtr, const void * symbol); +# 7138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetSymbolSize(size_t * size, const void * symbol); +# 7208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPrefetchAsync(const void * devPtr, size_t count, int dstDevice, cudaStream_t stream = 0); +# 7324 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemAdvise(const void * devPtr, size_t count, cudaMemoryAdvise advice, int device); +# 7383 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemRangeGetAttribute(void * data, size_t dataSize, cudaMemRangeAttribute attribute, const void * devPtr, size_t count); +# 7422 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemRangeGetAttributes(void ** data, size_t * dataSizes, cudaMemRangeAttribute * attributes, size_t numAttributes, const void * devPtr, size_t count); +# 7482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void * src, size_t count, cudaMemcpyKind kind); +# 7524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaMemcpyFromArray(void * dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind); +# 7567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, cudaMemcpyKind kind = cudaMemcpyDeviceToDevice); +# 7618 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void * src, size_t count, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 7668 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaMemcpyFromArrayAsync(void * dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind, cudaStream_t stream = 0); +# 7737 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMallocAsync(void ** devPtr, size_t size, cudaStream_t hStream); +# 7763 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaFreeAsync(void * devPtr, cudaStream_t hStream); +# 7788 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolTrimTo(cudaMemPool_t memPool, size_t minBytesToKeep); +# 7832 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolSetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void * value); +# 7880 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolGetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void * value); +# 7895 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolSetAccess(cudaMemPool_t memPool, const cudaMemAccessDesc * descList, size_t count); +# 7908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolGetAccess(cudaMemAccessFlags * flags, cudaMemPool_t memPool, cudaMemLocation * location); +# 7928 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolCreate(cudaMemPool_t * memPool, const cudaMemPoolProps * poolProps); +# 7950 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolDestroy(cudaMemPool_t memPool); +# 7986 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMallocFromPoolAsync(void ** ptr, size_t size, cudaMemPool_t memPool, cudaStream_t stream); +# 8011 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolExportToShareableHandle(void * shareableHandle, cudaMemPool_t memPool, cudaMemAllocationHandleType handleType, unsigned flags); +# 8038 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolImportFromShareableHandle(cudaMemPool_t * memPool, void * shareableHandle, cudaMemAllocationHandleType handleType, unsigned flags); +# 8061 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolExportPointer(cudaMemPoolPtrExportData * exportData, void * ptr); +# 8090 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaMemPoolImportPointer(void ** ptr, cudaMemPool_t memPool, cudaMemPoolPtrExportData * exportData); +# 8242 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaPointerGetAttributes(cudaPointerAttributes * attributes, const void * ptr); +# 8283 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceCanAccessPeer(int * canAccessPeer, int device, int peerDevice); +# 8325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceEnablePeerAccess(int peerDevice, unsigned flags); +# 8347 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceDisablePeerAccess(int peerDevice); +# 8411 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphicsUnregisterResource(cudaGraphicsResource_t resource); +# 8446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphicsResourceSetMapFlags(cudaGraphicsResource_t resource, unsigned flags); +# 8485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphicsMapResources(int count, cudaGraphicsResource_t * resources, cudaStream_t stream = 0); +# 8520 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphicsUnmapResources(int count, cudaGraphicsResource_t * resources, cudaStream_t stream = 0); +# 8552 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphicsResourceGetMappedPointer(void ** devPtr, size_t * size, cudaGraphicsResource_t resource); +# 8590 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphicsSubResourceGetMappedArray(cudaArray_t * array, cudaGraphicsResource_t resource, unsigned arrayIndex, unsigned mipLevel); +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphicsResourceGetMappedMipmappedArray(cudaMipmappedArray_t * mipmappedArray, cudaGraphicsResource_t resource); +# 8690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaBindTexture(size_t * offset, const textureReference * texref, const void * devPtr, const cudaChannelFormatDesc * desc, size_t size = ((2147483647) * 2U) + 1U); +# 8749 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaBindTexture2D(size_t * offset, const textureReference * texref, const void * devPtr, const cudaChannelFormatDesc * desc, size_t width, size_t height, size_t pitch); +# 8787 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaBindTextureToArray(const textureReference * texref, cudaArray_const_t array, const cudaChannelFormatDesc * desc); +# 8827 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaBindTextureToMipmappedArray(const textureReference * texref, cudaMipmappedArray_const_t mipmappedArray, const cudaChannelFormatDesc * desc); +# 8853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaUnbindTexture(const textureReference * texref); +# 8882 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaGetTextureAlignmentOffset(size_t * offset, const textureReference * texref); +# 8912 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaGetTextureReference(const textureReference ** texref, const void * symbol); +# 8957 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaBindSurfaceToArray(const surfaceReference * surfref, cudaArray_const_t array, const cudaChannelFormatDesc * desc); +# 8982 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +__attribute((deprecated)) extern cudaError_t cudaGetSurfaceReference(const surfaceReference ** surfref, const void * symbol); +# 9017 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetChannelDesc(cudaChannelFormatDesc * desc, cudaArray_const_t array); +# 9047 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaChannelFormatDesc cudaCreateChannelDesc(int x, int y, int z, int w, cudaChannelFormatKind f); +# 9271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaCreateTextureObject(cudaTextureObject_t * pTexObject, const cudaResourceDesc * pResDesc, const cudaTextureDesc * pTexDesc, const cudaResourceViewDesc * pResViewDesc); +# 9291 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDestroyTextureObject(cudaTextureObject_t texObject); +# 9311 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetTextureObjectResourceDesc(cudaResourceDesc * pResDesc, cudaTextureObject_t texObject); +# 9331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetTextureObjectTextureDesc(cudaTextureDesc * pTexDesc, cudaTextureObject_t texObject); +# 9352 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetTextureObjectResourceViewDesc(cudaResourceViewDesc * pResViewDesc, cudaTextureObject_t texObject); +# 9397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaCreateSurfaceObject(cudaSurfaceObject_t * pSurfObject, const cudaResourceDesc * pResDesc); +# 9417 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject); +# 9436 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetSurfaceObjectResourceDesc(cudaResourceDesc * pResDesc, cudaSurfaceObject_t surfObject); +# 9470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDriverGetVersion(int * driverVersion); +# 9495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaRuntimeGetVersion(int * runtimeVersion); +# 9542 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphCreate(cudaGraph_t * pGraph, unsigned flags); +# 9639 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddKernelNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, const cudaKernelNodeParams * pNodeParams); +# 9672 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphKernelNodeGetParams(cudaGraphNode_t node, cudaKernelNodeParams * pNodeParams); +# 9697 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphKernelNodeSetParams(cudaGraphNode_t node, const cudaKernelNodeParams * pNodeParams); +# 9717 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphKernelNodeCopyAttributes(cudaGraphNode_t hSrc, cudaGraphNode_t hDst); +# 9740 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphKernelNodeGetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, cudaKernelNodeAttrValue * value_out); +# 9764 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphKernelNodeSetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, const cudaKernelNodeAttrValue * value); +# 9814 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddMemcpyNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, const cudaMemcpy3DParms * pCopyParams); +# 9873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddMemcpyNodeToSymbol(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, const void * symbol, const void * src, size_t count, size_t offset, cudaMemcpyKind kind); +# 9942 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddMemcpyNodeFromSymbol(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, void * dst, const void * symbol, size_t count, size_t offset, cudaMemcpyKind kind); +# 10010 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddMemcpyNode1D(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, void * dst, const void * src, size_t count, cudaMemcpyKind kind); +# 10042 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemcpyNodeGetParams(cudaGraphNode_t node, cudaMemcpy3DParms * pNodeParams); +# 10068 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemcpyNodeSetParams(cudaGraphNode_t node, const cudaMemcpy3DParms * pNodeParams); +# 10107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemcpyNodeSetParamsToSymbol(cudaGraphNode_t node, const void * symbol, const void * src, size_t count, size_t offset, cudaMemcpyKind kind); +# 10153 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemcpyNodeSetParamsFromSymbol(cudaGraphNode_t node, void * dst, const void * symbol, size_t count, size_t offset, cudaMemcpyKind kind); +# 10199 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemcpyNodeSetParams1D(cudaGraphNode_t node, void * dst, const void * src, size_t count, cudaMemcpyKind kind); +# 10246 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddMemsetNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, const cudaMemsetParams * pMemsetParams); +# 10269 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemsetNodeGetParams(cudaGraphNode_t node, cudaMemsetParams * pNodeParams); +# 10292 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemsetNodeSetParams(cudaGraphNode_t node, const cudaMemsetParams * pNodeParams); +# 10333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddHostNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, const cudaHostNodeParams * pNodeParams); +# 10356 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphHostNodeGetParams(cudaGraphNode_t node, cudaHostNodeParams * pNodeParams); +# 10379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphHostNodeSetParams(cudaGraphNode_t node, const cudaHostNodeParams * pNodeParams); +# 10419 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddChildGraphNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, cudaGraph_t childGraph); +# 10446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphChildGraphNodeGetGraph(cudaGraphNode_t node, cudaGraph_t * pGraph); +# 10483 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddEmptyNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies); +# 10526 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddEventRecordNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, cudaEvent_t event); +# 10553 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphEventRecordNodeGetEvent(cudaGraphNode_t node, cudaEvent_t * event_out); +# 10580 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphEventRecordNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event); +# 10626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddEventWaitNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, cudaEvent_t event); +# 10653 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphEventWaitNodeGetEvent(cudaGraphNode_t node, cudaEvent_t * event_out); +# 10680 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphEventWaitNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event); +# 10729 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddExternalSemaphoresSignalNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, const cudaExternalSemaphoreSignalNodeParams * nodeParams); +# 10762 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExternalSemaphoresSignalNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreSignalNodeParams * params_out); +# 10789 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExternalSemaphoresSignalNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams * nodeParams); +# 10838 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddExternalSemaphoresWaitNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, const cudaExternalSemaphoreWaitNodeParams * nodeParams); +# 10871 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExternalSemaphoresWaitNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreWaitNodeParams * params_out); +# 10898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExternalSemaphoresWaitNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams * nodeParams); +# 10975 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddMemAllocNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, cudaMemAllocNodeParams * nodeParams); +# 11002 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemAllocNodeGetParams(cudaGraphNode_t node, cudaMemAllocNodeParams * params_out); +# 11062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddMemFreeNode(cudaGraphNode_t * pGraphNode, cudaGraph_t graph, const cudaGraphNode_t * pDependencies, size_t numDependencies, void * dptr); +# 11086 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphMemFreeNodeGetParams(cudaGraphNode_t node, void * dptr_out); +# 11114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGraphMemTrim(int device); +# 11151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceGetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void * value); +# 11185 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaDeviceSetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void * value); +# 11213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphClone(cudaGraph_t * pGraphClone, cudaGraph_t originalGraph); +# 11241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphNodeFindInClone(cudaGraphNode_t * pNode, cudaGraphNode_t originalNode, cudaGraph_t clonedGraph); +# 11272 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphNodeGetType(cudaGraphNode_t node, cudaGraphNodeType * pType); +# 11303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphGetNodes(cudaGraph_t graph, cudaGraphNode_t * nodes, size_t * numNodes); +# 11334 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphGetRootNodes(cudaGraph_t graph, cudaGraphNode_t * pRootNodes, size_t * pNumRootNodes); +# 11368 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphGetEdges(cudaGraph_t graph, cudaGraphNode_t * from, cudaGraphNode_t * to, size_t * numEdges); +# 11399 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphNodeGetDependencies(cudaGraphNode_t node, cudaGraphNode_t * pDependencies, size_t * pNumDependencies); +# 11431 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphNodeGetDependentNodes(cudaGraphNode_t node, cudaGraphNode_t * pDependentNodes, size_t * pNumDependentNodes); +# 11462 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphAddDependencies(cudaGraph_t graph, const cudaGraphNode_t * from, const cudaGraphNode_t * to, size_t numDependencies); +# 11493 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphRemoveDependencies(cudaGraph_t graph, const cudaGraphNode_t * from, const cudaGraphNode_t * to, size_t numDependencies); +# 11523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphDestroyNode(cudaGraphNode_t node); +# 11561 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphInstantiate(cudaGraphExec_t * pGraphExec, cudaGraph_t graph, cudaGraphNode_t * pErrorNode, char * pLogBuffer, size_t bufferSize); +# 11611 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphInstantiateWithFlags(cudaGraphExec_t * pGraphExec, cudaGraph_t graph, unsigned long long flags); +# 11655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecKernelNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaKernelNodeParams * pNodeParams); +# 11705 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecMemcpyNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemcpy3DParms * pNodeParams); +# 11760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecMemcpyNodeSetParamsToSymbol(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const void * symbol, const void * src, size_t count, size_t offset, cudaMemcpyKind kind); +# 11823 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecMemcpyNodeSetParamsFromSymbol(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, void * dst, const void * symbol, size_t count, size_t offset, cudaMemcpyKind kind); +# 11884 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecMemcpyNodeSetParams1D(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, void * dst, const void * src, size_t count, cudaMemcpyKind kind); +# 11938 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecMemsetNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemsetParams * pNodeParams); +# 11977 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecHostNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaHostNodeParams * pNodeParams); +# 12023 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecChildGraphNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, cudaGraph_t childGraph); +# 12067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecEventRecordNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event); +# 12111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecEventWaitNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event); +# 12158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecExternalSemaphoresSignalNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams * nodeParams); +# 12205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecExternalSemaphoresWaitNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams * nodeParams); +# 12284 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphNodeSetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned isEnabled); +# 12351 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphNodeGetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned * isEnabled); +# 12510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecUpdate(cudaGraphExec_t hGraphExec, cudaGraph_t hGraph, cudaGraphNode_t * hErrorNode_out, cudaGraphExecUpdateResult * updateResult_out); +# 12535 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphUpload(cudaGraphExec_t graphExec, cudaStream_t stream); +# 12566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphLaunch(cudaGraphExec_t graphExec, cudaStream_t stream); +# 12589 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphExecDestroy(cudaGraphExec_t graphExec); +# 12610 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphDestroy(cudaGraph_t graph); +# 12629 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphDebugDotPrint(cudaGraph_t graph, const char * path, unsigned flags); +# 12665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaUserObjectCreate(cudaUserObject_t * object_out, void * ptr, cudaHostFn_t destroy, unsigned initialRefcount, unsigned flags); +# 12689 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaUserObjectRetain(cudaUserObject_t object, unsigned count = 1); +# 12717 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaUserObjectRelease(cudaUserObject_t object, unsigned count = 1); +# 12745 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphRetainUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned count = 1, unsigned flags = 0); +# 12770 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGraphReleaseUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned count = 1); +# 12836 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetDriverEntryPoint(const char * symbol, void ** funcPtr, unsigned long long flags); +# 12841 +extern cudaError_t cudaGetExportTable(const void ** ppExportTable, const cudaUUID_t * pExportTableId); +# 13017 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +extern cudaError_t cudaGetFuncBySymbol(cudaFunction_t * functionPtr, const void * symbolPtr); +# 13175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime_api.h" +} +# 124 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +template< class T> inline cudaChannelFormatDesc cudaCreateChannelDesc() +# 125 +{ +# 126 +return cudaCreateChannelDesc(0, 0, 0, 0, cudaChannelFormatKindNone); +# 127 +} +# 129 +static inline cudaChannelFormatDesc cudaCreateChannelDescHalf() +# 130 +{ +# 131 +int e = (((int)sizeof(unsigned short)) * 8); +# 133 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +# 134 +} +# 136 +static inline cudaChannelFormatDesc cudaCreateChannelDescHalf1() +# 137 +{ +# 138 +int e = (((int)sizeof(unsigned short)) * 8); +# 140 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +# 141 +} +# 143 +static inline cudaChannelFormatDesc cudaCreateChannelDescHalf2() +# 144 +{ +# 145 +int e = (((int)sizeof(unsigned short)) * 8); +# 147 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindFloat); +# 148 +} +# 150 +static inline cudaChannelFormatDesc cudaCreateChannelDescHalf4() +# 151 +{ +# 152 +int e = (((int)sizeof(unsigned short)) * 8); +# 154 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindFloat); +# 155 +} +# 157 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< char> () +# 158 +{ +# 159 +int e = (((int)sizeof(char)) * 8); +# 162 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +# 166 +} +# 168 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< signed char> () +# 169 +{ +# 170 +int e = (((int)sizeof(signed char)) * 8); +# 172 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +# 173 +} +# 175 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< unsigned char> () +# 176 +{ +# 177 +int e = (((int)sizeof(unsigned char)) * 8); +# 179 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +# 180 +} +# 182 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< char1> () +# 183 +{ +# 184 +int e = (((int)sizeof(signed char)) * 8); +# 186 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +# 187 +} +# 189 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< uchar1> () +# 190 +{ +# 191 +int e = (((int)sizeof(unsigned char)) * 8); +# 193 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +# 194 +} +# 196 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< char2> () +# 197 +{ +# 198 +int e = (((int)sizeof(signed char)) * 8); +# 200 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +# 201 +} +# 203 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< uchar2> () +# 204 +{ +# 205 +int e = (((int)sizeof(unsigned char)) * 8); +# 207 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +# 208 +} +# 210 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< char4> () +# 211 +{ +# 212 +int e = (((int)sizeof(signed char)) * 8); +# 214 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +# 215 +} +# 217 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< uchar4> () +# 218 +{ +# 219 +int e = (((int)sizeof(unsigned char)) * 8); +# 221 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +# 222 +} +# 224 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< short> () +# 225 +{ +# 226 +int e = (((int)sizeof(short)) * 8); +# 228 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +# 229 +} +# 231 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< unsigned short> () +# 232 +{ +# 233 +int e = (((int)sizeof(unsigned short)) * 8); +# 235 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +# 236 +} +# 238 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< short1> () +# 239 +{ +# 240 +int e = (((int)sizeof(short)) * 8); +# 242 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +# 243 +} +# 245 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< ushort1> () +# 246 +{ +# 247 +int e = (((int)sizeof(unsigned short)) * 8); +# 249 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +# 250 +} +# 252 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< short2> () +# 253 +{ +# 254 +int e = (((int)sizeof(short)) * 8); +# 256 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +# 257 +} +# 259 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< ushort2> () +# 260 +{ +# 261 +int e = (((int)sizeof(unsigned short)) * 8); +# 263 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +# 264 +} +# 266 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< short4> () +# 267 +{ +# 268 +int e = (((int)sizeof(short)) * 8); +# 270 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +# 271 +} +# 273 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< ushort4> () +# 274 +{ +# 275 +int e = (((int)sizeof(unsigned short)) * 8); +# 277 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +# 278 +} +# 280 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< int> () +# 281 +{ +# 282 +int e = (((int)sizeof(int)) * 8); +# 284 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +# 285 +} +# 287 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< unsigned> () +# 288 +{ +# 289 +int e = (((int)sizeof(unsigned)) * 8); +# 291 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +# 292 +} +# 294 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< int1> () +# 295 +{ +# 296 +int e = (((int)sizeof(int)) * 8); +# 298 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindSigned); +# 299 +} +# 301 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< uint1> () +# 302 +{ +# 303 +int e = (((int)sizeof(unsigned)) * 8); +# 305 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindUnsigned); +# 306 +} +# 308 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< int2> () +# 309 +{ +# 310 +int e = (((int)sizeof(int)) * 8); +# 312 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindSigned); +# 313 +} +# 315 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< uint2> () +# 316 +{ +# 317 +int e = (((int)sizeof(unsigned)) * 8); +# 319 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindUnsigned); +# 320 +} +# 322 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< int4> () +# 323 +{ +# 324 +int e = (((int)sizeof(int)) * 8); +# 326 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindSigned); +# 327 +} +# 329 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< uint4> () +# 330 +{ +# 331 +int e = (((int)sizeof(unsigned)) * 8); +# 333 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindUnsigned); +# 334 +} +# 396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/channel_descriptor.h" +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< float> () +# 397 +{ +# 398 +int e = (((int)sizeof(float)) * 8); +# 400 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +# 401 +} +# 403 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< float1> () +# 404 +{ +# 405 +int e = (((int)sizeof(float)) * 8); +# 407 +return cudaCreateChannelDesc(e, 0, 0, 0, cudaChannelFormatKindFloat); +# 408 +} +# 410 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< float2> () +# 411 +{ +# 412 +int e = (((int)sizeof(float)) * 8); +# 414 +return cudaCreateChannelDesc(e, e, 0, 0, cudaChannelFormatKindFloat); +# 415 +} +# 417 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< float4> () +# 418 +{ +# 419 +int e = (((int)sizeof(float)) * 8); +# 421 +return cudaCreateChannelDesc(e, e, e, e, cudaChannelFormatKindFloat); +# 422 +} +# 424 +static inline cudaChannelFormatDesc cudaCreateChannelDescNV12() +# 425 +{ +# 426 +int e = (((int)sizeof(char)) * 8); +# 428 +return cudaCreateChannelDesc(e, e, e, 0, cudaChannelFormatKindNV12); +# 429 +} +# 431 +template< cudaChannelFormatKind > inline cudaChannelFormatDesc cudaCreateChannelDesc() +# 432 +{ +# 433 +return cudaCreateChannelDesc(0, 0, 0, 0, cudaChannelFormatKindNone); +# 434 +} +# 437 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedNormalized8X1> () +# 438 +{ +# 439 +return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindSignedNormalized8X1); +# 440 +} +# 442 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedNormalized8X2> () +# 443 +{ +# 444 +return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindSignedNormalized8X2); +# 445 +} +# 447 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedNormalized8X4> () +# 448 +{ +# 449 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindSignedNormalized8X4); +# 450 +} +# 453 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedNormalized8X1> () +# 454 +{ +# 455 +return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindUnsignedNormalized8X1); +# 456 +} +# 458 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedNormalized8X2> () +# 459 +{ +# 460 +return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindUnsignedNormalized8X2); +# 461 +} +# 463 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedNormalized8X4> () +# 464 +{ +# 465 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedNormalized8X4); +# 466 +} +# 469 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedNormalized16X1> () +# 470 +{ +# 471 +return cudaCreateChannelDesc(16, 0, 0, 0, cudaChannelFormatKindSignedNormalized16X1); +# 472 +} +# 474 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedNormalized16X2> () +# 475 +{ +# 476 +return cudaCreateChannelDesc(16, 16, 0, 0, cudaChannelFormatKindSignedNormalized16X2); +# 477 +} +# 479 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedNormalized16X4> () +# 480 +{ +# 481 +return cudaCreateChannelDesc(16, 16, 16, 16, cudaChannelFormatKindSignedNormalized16X4); +# 482 +} +# 485 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedNormalized16X1> () +# 486 +{ +# 487 +return cudaCreateChannelDesc(16, 0, 0, 0, cudaChannelFormatKindUnsignedNormalized16X1); +# 488 +} +# 490 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedNormalized16X2> () +# 491 +{ +# 492 +return cudaCreateChannelDesc(16, 16, 0, 0, cudaChannelFormatKindUnsignedNormalized16X2); +# 493 +} +# 495 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedNormalized16X4> () +# 496 +{ +# 497 +return cudaCreateChannelDesc(16, 16, 16, 16, cudaChannelFormatKindUnsignedNormalized16X4); +# 498 +} +# 501 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindNV12> () +# 502 +{ +# 503 +return cudaCreateChannelDesc(8, 8, 8, 0, cudaChannelFormatKindNV12); +# 504 +} +# 507 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed1> () +# 508 +{ +# 509 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed1); +# 510 +} +# 513 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed1SRGB> () +# 514 +{ +# 515 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed1SRGB); +# 516 +} +# 519 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed2> () +# 520 +{ +# 521 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed2); +# 522 +} +# 525 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed2SRGB> () +# 526 +{ +# 527 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed2SRGB); +# 528 +} +# 531 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed3> () +# 532 +{ +# 533 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed3); +# 534 +} +# 537 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed3SRGB> () +# 538 +{ +# 539 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed3SRGB); +# 540 +} +# 543 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed4> () +# 544 +{ +# 545 +return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindUnsignedBlockCompressed4); +# 546 +} +# 549 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedBlockCompressed4> () +# 550 +{ +# 551 +return cudaCreateChannelDesc(8, 0, 0, 0, cudaChannelFormatKindSignedBlockCompressed4); +# 552 +} +# 555 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed5> () +# 556 +{ +# 557 +return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindUnsignedBlockCompressed5); +# 558 +} +# 561 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedBlockCompressed5> () +# 562 +{ +# 563 +return cudaCreateChannelDesc(8, 8, 0, 0, cudaChannelFormatKindSignedBlockCompressed5); +# 564 +} +# 567 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed6H> () +# 568 +{ +# 569 +return cudaCreateChannelDesc(16, 16, 16, 0, cudaChannelFormatKindUnsignedBlockCompressed6H); +# 570 +} +# 573 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindSignedBlockCompressed6H> () +# 574 +{ +# 575 +return cudaCreateChannelDesc(16, 16, 16, 0, cudaChannelFormatKindSignedBlockCompressed6H); +# 576 +} +# 579 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed7> () +# 580 +{ +# 581 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed7); +# 582 +} +# 585 +template<> inline cudaChannelFormatDesc cudaCreateChannelDesc< cudaChannelFormatKindUnsignedBlockCompressed7SRGB> () +# 586 +{ +# 587 +return cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsignedBlockCompressed7SRGB); +# 588 +} +# 79 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static inline cudaPitchedPtr make_cudaPitchedPtr(void *d, size_t p, size_t xsz, size_t ysz) +# 80 +{ +# 81 +cudaPitchedPtr s; +# 83 +(s.ptr) = d; +# 84 +(s.pitch) = p; +# 85 +(s.xsize) = xsz; +# 86 +(s.ysize) = ysz; +# 88 +return s; +# 89 +} +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static inline cudaPos make_cudaPos(size_t x, size_t y, size_t z) +# 107 +{ +# 108 +cudaPos p; +# 110 +(p.x) = x; +# 111 +(p.y) = y; +# 112 +(p.z) = z; +# 114 +return p; +# 115 +} +# 132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/driver_functions.h" +static inline cudaExtent make_cudaExtent(size_t w, size_t h, size_t d) +# 133 +{ +# 134 +cudaExtent e; +# 136 +(e.width) = w; +# 137 +(e.height) = h; +# 138 +(e.depth) = d; +# 140 +return e; +# 141 +} +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.h" +static inline char1 make_char1(signed char x); +# 75 +static inline uchar1 make_uchar1(unsigned char x); +# 77 +static inline char2 make_char2(signed char x, signed char y); +# 79 +static inline uchar2 make_uchar2(unsigned char x, unsigned char y); +# 81 +static inline char3 make_char3(signed char x, signed char y, signed char z); +# 83 +static inline uchar3 make_uchar3(unsigned char x, unsigned char y, unsigned char z); +# 85 +static inline char4 make_char4(signed char x, signed char y, signed char z, signed char w); +# 87 +static inline uchar4 make_uchar4(unsigned char x, unsigned char y, unsigned char z, unsigned char w); +# 89 +static inline short1 make_short1(short x); +# 91 +static inline ushort1 make_ushort1(unsigned short x); +# 93 +static inline short2 make_short2(short x, short y); +# 95 +static inline ushort2 make_ushort2(unsigned short x, unsigned short y); +# 97 +static inline short3 make_short3(short x, short y, short z); +# 99 +static inline ushort3 make_ushort3(unsigned short x, unsigned short y, unsigned short z); +# 101 +static inline short4 make_short4(short x, short y, short z, short w); +# 103 +static inline ushort4 make_ushort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w); +# 105 +static inline int1 make_int1(int x); +# 107 +static inline uint1 make_uint1(unsigned x); +# 109 +static inline int2 make_int2(int x, int y); +# 111 +static inline uint2 make_uint2(unsigned x, unsigned y); +# 113 +static inline int3 make_int3(int x, int y, int z); +# 115 +static inline uint3 make_uint3(unsigned x, unsigned y, unsigned z); +# 117 +static inline int4 make_int4(int x, int y, int z, int w); +# 119 +static inline uint4 make_uint4(unsigned x, unsigned y, unsigned z, unsigned w); +# 121 +static inline long1 make_long1(long x); +# 123 +static inline ulong1 make_ulong1(unsigned long x); +# 125 +static inline long2 make_long2(long x, long y); +# 127 +static inline ulong2 make_ulong2(unsigned long x, unsigned long y); +# 129 +static inline long3 make_long3(long x, long y, long z); +# 131 +static inline ulong3 make_ulong3(unsigned long x, unsigned long y, unsigned long z); +# 133 +static inline long4 make_long4(long x, long y, long z, long w); +# 135 +static inline ulong4 make_ulong4(unsigned long x, unsigned long y, unsigned long z, unsigned long w); +# 137 +static inline float1 make_float1(float x); +# 139 +static inline float2 make_float2(float x, float y); +# 141 +static inline float3 make_float3(float x, float y, float z); +# 143 +static inline float4 make_float4(float x, float y, float z, float w); +# 145 +static inline longlong1 make_longlong1(long long x); +# 147 +static inline ulonglong1 make_ulonglong1(unsigned long long x); +# 149 +static inline longlong2 make_longlong2(long long x, long long y); +# 151 +static inline ulonglong2 make_ulonglong2(unsigned long long x, unsigned long long y); +# 153 +static inline longlong3 make_longlong3(long long x, long long y, long long z); +# 155 +static inline ulonglong3 make_ulonglong3(unsigned long long x, unsigned long long y, unsigned long long z); +# 157 +static inline longlong4 make_longlong4(long long x, long long y, long long z, long long w); +# 159 +static inline ulonglong4 make_ulonglong4(unsigned long long x, unsigned long long y, unsigned long long z, unsigned long long w); +# 161 +static inline double1 make_double1(double x); +# 163 +static inline double2 make_double2(double x, double y); +# 165 +static inline double3 make_double3(double x, double y, double z); +# 167 +static inline double4 make_double4(double x, double y, double z, double w); +# 73 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/vector_functions.hpp" +static inline char1 make_char1(signed char x) +# 74 +{ +# 75 +char1 t; (t.x) = x; return t; +# 76 +} +# 78 +static inline uchar1 make_uchar1(unsigned char x) +# 79 +{ +# 80 +uchar1 t; (t.x) = x; return t; +# 81 +} +# 83 +static inline char2 make_char2(signed char x, signed char y) +# 84 +{ +# 85 +char2 t; (t.x) = x; (t.y) = y; return t; +# 86 +} +# 88 +static inline uchar2 make_uchar2(unsigned char x, unsigned char y) +# 89 +{ +# 90 +uchar2 t; (t.x) = x; (t.y) = y; return t; +# 91 +} +# 93 +static inline char3 make_char3(signed char x, signed char y, signed char z) +# 94 +{ +# 95 +char3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 96 +} +# 98 +static inline uchar3 make_uchar3(unsigned char x, unsigned char y, unsigned char z) +# 99 +{ +# 100 +uchar3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 101 +} +# 103 +static inline char4 make_char4(signed char x, signed char y, signed char z, signed char w) +# 104 +{ +# 105 +char4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 106 +} +# 108 +static inline uchar4 make_uchar4(unsigned char x, unsigned char y, unsigned char z, unsigned char w) +# 109 +{ +# 110 +uchar4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 111 +} +# 113 +static inline short1 make_short1(short x) +# 114 +{ +# 115 +short1 t; (t.x) = x; return t; +# 116 +} +# 118 +static inline ushort1 make_ushort1(unsigned short x) +# 119 +{ +# 120 +ushort1 t; (t.x) = x; return t; +# 121 +} +# 123 +static inline short2 make_short2(short x, short y) +# 124 +{ +# 125 +short2 t; (t.x) = x; (t.y) = y; return t; +# 126 +} +# 128 +static inline ushort2 make_ushort2(unsigned short x, unsigned short y) +# 129 +{ +# 130 +ushort2 t; (t.x) = x; (t.y) = y; return t; +# 131 +} +# 133 +static inline short3 make_short3(short x, short y, short z) +# 134 +{ +# 135 +short3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 136 +} +# 138 +static inline ushort3 make_ushort3(unsigned short x, unsigned short y, unsigned short z) +# 139 +{ +# 140 +ushort3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 141 +} +# 143 +static inline short4 make_short4(short x, short y, short z, short w) +# 144 +{ +# 145 +short4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 146 +} +# 148 +static inline ushort4 make_ushort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w) +# 149 +{ +# 150 +ushort4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 151 +} +# 153 +static inline int1 make_int1(int x) +# 154 +{ +# 155 +int1 t; (t.x) = x; return t; +# 156 +} +# 158 +static inline uint1 make_uint1(unsigned x) +# 159 +{ +# 160 +uint1 t; (t.x) = x; return t; +# 161 +} +# 163 +static inline int2 make_int2(int x, int y) +# 164 +{ +# 165 +int2 t; (t.x) = x; (t.y) = y; return t; +# 166 +} +# 168 +static inline uint2 make_uint2(unsigned x, unsigned y) +# 169 +{ +# 170 +uint2 t; (t.x) = x; (t.y) = y; return t; +# 171 +} +# 173 +static inline int3 make_int3(int x, int y, int z) +# 174 +{ +# 175 +int3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 176 +} +# 178 +static inline uint3 make_uint3(unsigned x, unsigned y, unsigned z) +# 179 +{ +# 180 +uint3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 181 +} +# 183 +static inline int4 make_int4(int x, int y, int z, int w) +# 184 +{ +# 185 +int4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 186 +} +# 188 +static inline uint4 make_uint4(unsigned x, unsigned y, unsigned z, unsigned w) +# 189 +{ +# 190 +uint4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 191 +} +# 193 +static inline long1 make_long1(long x) +# 194 +{ +# 195 +long1 t; (t.x) = x; return t; +# 196 +} +# 198 +static inline ulong1 make_ulong1(unsigned long x) +# 199 +{ +# 200 +ulong1 t; (t.x) = x; return t; +# 201 +} +# 203 +static inline long2 make_long2(long x, long y) +# 204 +{ +# 205 +long2 t; (t.x) = x; (t.y) = y; return t; +# 206 +} +# 208 +static inline ulong2 make_ulong2(unsigned long x, unsigned long y) +# 209 +{ +# 210 +ulong2 t; (t.x) = x; (t.y) = y; return t; +# 211 +} +# 213 +static inline long3 make_long3(long x, long y, long z) +# 214 +{ +# 215 +long3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 216 +} +# 218 +static inline ulong3 make_ulong3(unsigned long x, unsigned long y, unsigned long z) +# 219 +{ +# 220 +ulong3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 221 +} +# 223 +static inline long4 make_long4(long x, long y, long z, long w) +# 224 +{ +# 225 +long4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 226 +} +# 228 +static inline ulong4 make_ulong4(unsigned long x, unsigned long y, unsigned long z, unsigned long w) +# 229 +{ +# 230 +ulong4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 231 +} +# 233 +static inline float1 make_float1(float x) +# 234 +{ +# 235 +float1 t; (t.x) = x; return t; +# 236 +} +# 238 +static inline float2 make_float2(float x, float y) +# 239 +{ +# 240 +float2 t; (t.x) = x; (t.y) = y; return t; +# 241 +} +# 243 +static inline float3 make_float3(float x, float y, float z) +# 244 +{ +# 245 +float3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 246 +} +# 248 +static inline float4 make_float4(float x, float y, float z, float w) +# 249 +{ +# 250 +float4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 251 +} +# 253 +static inline longlong1 make_longlong1(long long x) +# 254 +{ +# 255 +longlong1 t; (t.x) = x; return t; +# 256 +} +# 258 +static inline ulonglong1 make_ulonglong1(unsigned long long x) +# 259 +{ +# 260 +ulonglong1 t; (t.x) = x; return t; +# 261 +} +# 263 +static inline longlong2 make_longlong2(long long x, long long y) +# 264 +{ +# 265 +longlong2 t; (t.x) = x; (t.y) = y; return t; +# 266 +} +# 268 +static inline ulonglong2 make_ulonglong2(unsigned long long x, unsigned long long y) +# 269 +{ +# 270 +ulonglong2 t; (t.x) = x; (t.y) = y; return t; +# 271 +} +# 273 +static inline longlong3 make_longlong3(long long x, long long y, long long z) +# 274 +{ +# 275 +longlong3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 276 +} +# 278 +static inline ulonglong3 make_ulonglong3(unsigned long long x, unsigned long long y, unsigned long long z) +# 279 +{ +# 280 +ulonglong3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 281 +} +# 283 +static inline longlong4 make_longlong4(long long x, long long y, long long z, long long w) +# 284 +{ +# 285 +longlong4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 286 +} +# 288 +static inline ulonglong4 make_ulonglong4(unsigned long long x, unsigned long long y, unsigned long long z, unsigned long long w) +# 289 +{ +# 290 +ulonglong4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 291 +} +# 293 +static inline double1 make_double1(double x) +# 294 +{ +# 295 +double1 t; (t.x) = x; return t; +# 296 +} +# 298 +static inline double2 make_double2(double x, double y) +# 299 +{ +# 300 +double2 t; (t.x) = x; (t.y) = y; return t; +# 301 +} +# 303 +static inline double3 make_double3(double x, double y, double z) +# 304 +{ +# 305 +double3 t; (t.x) = x; (t.y) = y; (t.z) = z; return t; +# 306 +} +# 308 +static inline double4 make_double4(double x, double y, double z, double w) +# 309 +{ +# 310 +double4 t; (t.x) = x; (t.y) = y; (t.z) = z; (t.w) = w; return t; +# 311 +} +# 28 "/usr/include/string.h" 3 +extern "C" { +# 43 "/usr/include/string.h" 3 +extern void *memcpy(void *__restrict__ __dest, const void *__restrict__ __src, size_t __n) throw() +# 44 + __attribute((__nonnull__(1, 2))); +# 47 +extern void *memmove(void * __dest, const void * __src, size_t __n) throw() +# 48 + __attribute((__nonnull__(1, 2))); +# 54 +extern void *memccpy(void *__restrict__ __dest, const void *__restrict__ __src, int __c, size_t __n) throw() +# 56 + __attribute((__nonnull__(1, 2))); +# 61 +extern void *memset(void * __s, int __c, size_t __n) throw() __attribute((__nonnull__(1))); +# 64 +extern int memcmp(const void * __s1, const void * __s2, size_t __n) throw() +# 65 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 69 +extern "C++" { +# 71 +extern void *memchr(void * __s, int __c, size_t __n) throw() __asm__("memchr") +# 72 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 73 +extern const void *memchr(const void * __s, int __c, size_t __n) throw() __asm__("memchr") +# 74 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 89 "/usr/include/string.h" 3 +} +# 99 "/usr/include/string.h" 3 +extern "C++" void *rawmemchr(void * __s, int __c) throw() __asm__("rawmemchr") +# 100 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 101 +extern "C++" const void *rawmemchr(const void * __s, int __c) throw() __asm__("rawmemchr") +# 102 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 110 +extern "C++" void *memrchr(void * __s, int __c, size_t __n) throw() __asm__("memrchr") +# 111 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 112 +extern "C++" const void *memrchr(const void * __s, int __c, size_t __n) throw() __asm__("memrchr") +# 113 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 122 "/usr/include/string.h" 3 +extern char *strcpy(char *__restrict__ __dest, const char *__restrict__ __src) throw() +# 123 + __attribute((__nonnull__(1, 2))); +# 125 +extern char *strncpy(char *__restrict__ __dest, const char *__restrict__ __src, size_t __n) throw() +# 127 + __attribute((__nonnull__(1, 2))); +# 130 +extern char *strcat(char *__restrict__ __dest, const char *__restrict__ __src) throw() +# 131 + __attribute((__nonnull__(1, 2))); +# 133 +extern char *strncat(char *__restrict__ __dest, const char *__restrict__ __src, size_t __n) throw() +# 134 + __attribute((__nonnull__(1, 2))); +# 137 +extern int strcmp(const char * __s1, const char * __s2) throw() +# 138 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 140 +extern int strncmp(const char * __s1, const char * __s2, size_t __n) throw() +# 141 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 144 +extern int strcoll(const char * __s1, const char * __s2) throw() +# 145 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 147 +extern size_t strxfrm(char *__restrict__ __dest, const char *__restrict__ __src, size_t __n) throw() +# 149 + __attribute((__nonnull__(2))); +# 28 "/usr/include/bits/types/__locale_t.h" 3 +struct __locale_struct { +# 31 +struct __locale_data *__locales[13]; +# 34 +const unsigned short *__ctype_b; +# 35 +const int *__ctype_tolower; +# 36 +const int *__ctype_toupper; +# 39 +const char *__names[13]; +# 40 +}; +# 42 +typedef __locale_struct *__locale_t; +# 24 "/usr/include/bits/types/locale_t.h" 3 +typedef __locale_t locale_t; +# 156 "/usr/include/string.h" 3 +extern int strcoll_l(const char * __s1, const char * __s2, locale_t __l) throw() +# 157 + __attribute((__pure__)) __attribute((__nonnull__(1, 2, 3))); +# 160 +extern size_t strxfrm_l(char * __dest, const char * __src, size_t __n, locale_t __l) throw() +# 161 + __attribute((__nonnull__(2, 4))); +# 167 +extern char *strdup(const char * __s) throw() +# 168 + __attribute((__malloc__)) __attribute((__nonnull__(1))); +# 175 +extern char *strndup(const char * __string, size_t __n) throw() +# 176 + __attribute((__malloc__)) __attribute((__nonnull__(1))); +# 204 "/usr/include/string.h" 3 +extern "C++" { +# 206 +extern char *strchr(char * __s, int __c) throw() __asm__("strchr") +# 207 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 208 +extern const char *strchr(const char * __s, int __c) throw() __asm__("strchr") +# 209 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 224 "/usr/include/string.h" 3 +} +# 231 +extern "C++" { +# 233 +extern char *strrchr(char * __s, int __c) throw() __asm__("strrchr") +# 234 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 235 +extern const char *strrchr(const char * __s, int __c) throw() __asm__("strrchr") +# 236 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 251 "/usr/include/string.h" 3 +} +# 261 "/usr/include/string.h" 3 +extern "C++" char *strchrnul(char * __s, int __c) throw() __asm__("strchrnul") +# 262 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 263 +extern "C++" const char *strchrnul(const char * __s, int __c) throw() __asm__("strchrnul") +# 264 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 273 "/usr/include/string.h" 3 +extern size_t strcspn(const char * __s, const char * __reject) throw() +# 274 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 277 +extern size_t strspn(const char * __s, const char * __accept) throw() +# 278 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 281 +extern "C++" { +# 283 +extern char *strpbrk(char * __s, const char * __accept) throw() __asm__("strpbrk") +# 284 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 285 +extern const char *strpbrk(const char * __s, const char * __accept) throw() __asm__("strpbrk") +# 286 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 301 "/usr/include/string.h" 3 +} +# 308 +extern "C++" { +# 310 +extern char *strstr(char * __haystack, const char * __needle) throw() __asm__("strstr") +# 311 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 312 +extern const char *strstr(const char * __haystack, const char * __needle) throw() __asm__("strstr") +# 313 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 328 "/usr/include/string.h" 3 +} +# 336 +extern char *strtok(char *__restrict__ __s, const char *__restrict__ __delim) throw() +# 337 + __attribute((__nonnull__(2))); +# 341 +extern char *__strtok_r(char *__restrict__ __s, const char *__restrict__ __delim, char **__restrict__ __save_ptr) throw() +# 344 + __attribute((__nonnull__(2, 3))); +# 346 +extern char *strtok_r(char *__restrict__ __s, const char *__restrict__ __delim, char **__restrict__ __save_ptr) throw() +# 348 + __attribute((__nonnull__(2, 3))); +# 354 +extern "C++" char *strcasestr(char * __haystack, const char * __needle) throw() __asm__("strcasestr") +# 355 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 356 +extern "C++" const char *strcasestr(const char * __haystack, const char * __needle) throw() __asm__("strcasestr") +# 358 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 369 "/usr/include/string.h" 3 +extern void *memmem(const void * __haystack, size_t __haystacklen, const void * __needle, size_t __needlelen) throw() +# 371 + __attribute((__pure__)) __attribute((__nonnull__(1, 3))); +# 375 +extern void *__mempcpy(void *__restrict__ __dest, const void *__restrict__ __src, size_t __n) throw() +# 377 + __attribute((__nonnull__(1, 2))); +# 378 +extern void *mempcpy(void *__restrict__ __dest, const void *__restrict__ __src, size_t __n) throw() +# 380 + __attribute((__nonnull__(1, 2))); +# 385 +extern size_t strlen(const char * __s) throw() +# 386 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 391 +extern size_t strnlen(const char * __string, size_t __maxlen) throw() +# 392 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 397 +extern char *strerror(int __errnum) throw(); +# 421 "/usr/include/string.h" 3 +extern char *strerror_r(int __errnum, char * __buf, size_t __buflen) throw() +# 422 + __attribute((__nonnull__(2))); +# 428 +extern char *strerror_l(int __errnum, locale_t __l) throw(); +# 30 "/usr/include/strings.h" 3 +extern "C" { +# 34 +extern int bcmp(const void * __s1, const void * __s2, size_t __n) throw() +# 35 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 38 +extern void bcopy(const void * __src, void * __dest, size_t __n) throw() +# 39 + __attribute((__nonnull__(1, 2))); +# 42 +extern void bzero(void * __s, size_t __n) throw() __attribute((__nonnull__(1))); +# 46 +extern "C++" { +# 48 +extern char *index(char * __s, int __c) throw() __asm__("index") +# 49 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 50 +extern const char *index(const char * __s, int __c) throw() __asm__("index") +# 51 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 66 "/usr/include/strings.h" 3 +} +# 74 +extern "C++" { +# 76 +extern char *rindex(char * __s, int __c) throw() __asm__("rindex") +# 77 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 78 +extern const char *rindex(const char * __s, int __c) throw() __asm__("rindex") +# 79 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 94 "/usr/include/strings.h" 3 +} +# 104 "/usr/include/strings.h" 3 +extern int ffs(int __i) throw() __attribute((const)); +# 110 +extern int ffsl(long __l) throw() __attribute((const)); +# 111 +__extension__ extern int ffsll(long long __ll) throw() +# 112 + __attribute((const)); +# 116 +extern int strcasecmp(const char * __s1, const char * __s2) throw() +# 117 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 120 +extern int strncasecmp(const char * __s1, const char * __s2, size_t __n) throw() +# 121 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 128 +extern int strcasecmp_l(const char * __s1, const char * __s2, locale_t __loc) throw() +# 129 + __attribute((__pure__)) __attribute((__nonnull__(1, 2, 3))); +# 133 +extern int strncasecmp_l(const char * __s1, const char * __s2, size_t __n, locale_t __loc) throw() +# 135 + __attribute((__pure__)) __attribute((__nonnull__(1, 2, 4))); +# 138 +} +# 436 "/usr/include/string.h" 3 +extern void explicit_bzero(void * __s, size_t __n) throw() __attribute((__nonnull__(1))); +# 440 +extern char *strsep(char **__restrict__ __stringp, const char *__restrict__ __delim) throw() +# 442 + __attribute((__nonnull__(1, 2))); +# 447 +extern char *strsignal(int __sig) throw(); +# 450 +extern char *__stpcpy(char *__restrict__ __dest, const char *__restrict__ __src) throw() +# 451 + __attribute((__nonnull__(1, 2))); +# 452 +extern char *stpcpy(char *__restrict__ __dest, const char *__restrict__ __src) throw() +# 453 + __attribute((__nonnull__(1, 2))); +# 457 +extern char *__stpncpy(char *__restrict__ __dest, const char *__restrict__ __src, size_t __n) throw() +# 459 + __attribute((__nonnull__(1, 2))); +# 460 +extern char *stpncpy(char *__restrict__ __dest, const char *__restrict__ __src, size_t __n) throw() +# 462 + __attribute((__nonnull__(1, 2))); +# 467 +extern int strverscmp(const char * __s1, const char * __s2) throw() +# 468 + __attribute((__pure__)) __attribute((__nonnull__(1, 2))); +# 471 +extern char *strfry(char * __string) throw() __attribute((__nonnull__(1))); +# 474 +extern void *memfrob(void * __s, size_t __n) throw() __attribute((__nonnull__(1))); +# 482 +extern "C++" char *basename(char * __filename) throw() __asm__("basename") +# 483 + __attribute((__nonnull__(1))); +# 484 +extern "C++" const char *basename(const char * __filename) throw() __asm__("basename") +# 485 + __attribute((__nonnull__(1))); +# 499 "/usr/include/string.h" 3 +} +# 30 "/usr/include/bits/types.h" 3 +typedef unsigned char __u_char; +# 31 +typedef unsigned short __u_short; +# 32 +typedef unsigned __u_int; +# 33 +typedef unsigned long __u_long; +# 36 +typedef signed char __int8_t; +# 37 +typedef unsigned char __uint8_t; +# 38 +typedef signed short __int16_t; +# 39 +typedef unsigned short __uint16_t; +# 40 +typedef signed int __int32_t; +# 41 +typedef unsigned __uint32_t; +# 43 +typedef signed long __int64_t; +# 44 +typedef unsigned long __uint64_t; +# 51 +typedef __int8_t __int_least8_t; +# 52 +typedef __uint8_t __uint_least8_t; +# 53 +typedef __int16_t __int_least16_t; +# 54 +typedef __uint16_t __uint_least16_t; +# 55 +typedef __int32_t __int_least32_t; +# 56 +typedef __uint32_t __uint_least32_t; +# 57 +typedef __int64_t __int_least64_t; +# 58 +typedef __uint64_t __uint_least64_t; +# 62 +typedef long __quad_t; +# 63 +typedef unsigned long __u_quad_t; +# 71 +typedef long __intmax_t; +# 72 +typedef unsigned long __uintmax_t; +# 143 "/usr/include/bits/types.h" 3 +typedef unsigned long __dev_t; +# 144 +typedef unsigned __uid_t; +# 145 +typedef unsigned __gid_t; +# 146 +typedef unsigned long __ino_t; +# 147 +typedef unsigned long __ino64_t; +# 148 +typedef unsigned __mode_t; +# 149 +typedef unsigned long __nlink_t; +# 150 +typedef long __off_t; +# 151 +typedef long __off64_t; +# 152 +typedef int __pid_t; +# 153 +typedef struct { int __val[2]; } __fsid_t; +# 154 +typedef long __clock_t; +# 155 +typedef unsigned long __rlim_t; +# 156 +typedef unsigned long __rlim64_t; +# 157 +typedef unsigned __id_t; +# 158 +typedef long __time_t; +# 159 +typedef unsigned __useconds_t; +# 160 +typedef long __suseconds_t; +# 162 +typedef int __daddr_t; +# 163 +typedef int __key_t; +# 166 +typedef int __clockid_t; +# 169 +typedef void *__timer_t; +# 172 +typedef long __blksize_t; +# 177 +typedef long __blkcnt_t; +# 178 +typedef long __blkcnt64_t; +# 181 +typedef unsigned long __fsblkcnt_t; +# 182 +typedef unsigned long __fsblkcnt64_t; +# 185 +typedef unsigned long __fsfilcnt_t; +# 186 +typedef unsigned long __fsfilcnt64_t; +# 189 +typedef long __fsword_t; +# 191 +typedef long __ssize_t; +# 194 +typedef long __syscall_slong_t; +# 196 +typedef unsigned long __syscall_ulong_t; +# 200 +typedef __off64_t __loff_t; +# 201 +typedef char *__caddr_t; +# 204 +typedef long __intptr_t; +# 207 +typedef unsigned __socklen_t; +# 212 +typedef int __sig_atomic_t; +# 8 "/usr/include/bits/types/struct_timeval.h" 3 +struct timeval { +# 10 +__time_t tv_sec; +# 11 +__suseconds_t tv_usec; +# 12 +}; +# 26 "/usr/include/bits/timex.h" 3 +struct timex { +# 28 +unsigned modes; +# 29 +__syscall_slong_t offset; +# 30 +__syscall_slong_t freq; +# 31 +__syscall_slong_t maxerror; +# 32 +__syscall_slong_t esterror; +# 33 +int status; +# 34 +__syscall_slong_t constant; +# 35 +__syscall_slong_t precision; +# 36 +__syscall_slong_t tolerance; +# 37 +timeval time; +# 38 +__syscall_slong_t tick; +# 39 +__syscall_slong_t ppsfreq; +# 40 +__syscall_slong_t jitter; +# 41 +int shift; +# 42 +__syscall_slong_t stabil; +# 43 +__syscall_slong_t jitcnt; +# 44 +__syscall_slong_t calcnt; +# 45 +__syscall_slong_t errcnt; +# 46 +__syscall_slong_t stbcnt; +# 48 +int tai; +# 51 +int:32; int:32; int:32; int:32; +# 52 +int:32; int:32; int:32; int:32; +# 53 +int:32; int:32; int:32; +# 54 +}; +# 75 "/usr/include/bits/time.h" 3 +extern "C" { +# 78 +extern int clock_adjtime(__clockid_t __clock_id, timex * __utx) throw(); +# 80 +} +# 7 "/usr/include/bits/types/clock_t.h" 3 +typedef __clock_t clock_t; +# 7 "/usr/include/bits/types/time_t.h" 3 +typedef __time_t time_t; +# 7 "/usr/include/bits/types/struct_tm.h" 3 +struct tm { +# 9 +int tm_sec; +# 10 +int tm_min; +# 11 +int tm_hour; +# 12 +int tm_mday; +# 13 +int tm_mon; +# 14 +int tm_year; +# 15 +int tm_wday; +# 16 +int tm_yday; +# 17 +int tm_isdst; +# 20 +long tm_gmtoff; +# 21 +const char *tm_zone; +# 26 +}; +# 9 "/usr/include/bits/types/struct_timespec.h" 3 +struct timespec { +# 11 +__time_t tv_sec; +# 12 +__syscall_slong_t tv_nsec; +# 13 +}; +# 7 "/usr/include/bits/types/clockid_t.h" 3 +typedef __clockid_t clockid_t; +# 7 "/usr/include/bits/types/timer_t.h" 3 +typedef __timer_t timer_t; +# 8 "/usr/include/bits/types/struct_itimerspec.h" 3 +struct itimerspec { +# 10 +timespec it_interval; +# 11 +timespec it_value; +# 12 +}; +# 49 "/usr/include/time.h" 3 +struct sigevent; +# 54 +typedef __pid_t pid_t; +# 68 "/usr/include/time.h" 3 +extern "C" { +# 72 +extern clock_t clock() throw(); +# 75 +extern time_t time(time_t * __timer) throw(); +# 78 +extern double difftime(time_t __time1, time_t __time0) throw() +# 79 + __attribute((const)); +# 82 +extern time_t mktime(tm * __tp) throw(); +# 88 +extern size_t strftime(char *__restrict__ __s, size_t __maxsize, const char *__restrict__ __format, const tm *__restrict__ __tp) throw(); +# 95 +extern char *strptime(const char *__restrict__ __s, const char *__restrict__ __fmt, tm * __tp) throw(); +# 104 +extern size_t strftime_l(char *__restrict__ __s, size_t __maxsize, const char *__restrict__ __format, const tm *__restrict__ __tp, locale_t __loc) throw(); +# 111 +extern char *strptime_l(const char *__restrict__ __s, const char *__restrict__ __fmt, tm * __tp, locale_t __loc) throw(); +# 119 +extern tm *gmtime(const time_t * __timer) throw(); +# 123 +extern tm *localtime(const time_t * __timer) throw(); +# 128 +extern tm *gmtime_r(const time_t *__restrict__ __timer, tm *__restrict__ __tp) throw(); +# 133 +extern tm *localtime_r(const time_t *__restrict__ __timer, tm *__restrict__ __tp) throw(); +# 139 +extern char *asctime(const tm * __tp) throw(); +# 142 +extern char *ctime(const time_t * __timer) throw(); +# 149 +extern char *asctime_r(const tm *__restrict__ __tp, char *__restrict__ __buf) throw(); +# 153 +extern char *ctime_r(const time_t *__restrict__ __timer, char *__restrict__ __buf) throw(); +# 159 +extern char *__tzname[2]; +# 160 +extern int __daylight; +# 161 +extern long __timezone; +# 166 +extern char *tzname[2]; +# 170 +extern void tzset() throw(); +# 174 +extern int daylight; +# 175 +extern long timezone; +# 181 +extern int stime(const time_t * __when) throw(); +# 196 "/usr/include/time.h" 3 +extern time_t timegm(tm * __tp) throw(); +# 199 +extern time_t timelocal(tm * __tp) throw(); +# 202 +extern int dysize(int __year) throw() __attribute((const)); +# 211 "/usr/include/time.h" 3 +extern int nanosleep(const timespec * __requested_time, timespec * __remaining); +# 216 +extern int clock_getres(clockid_t __clock_id, timespec * __res) throw(); +# 219 +extern int clock_gettime(clockid_t __clock_id, timespec * __tp) throw(); +# 222 +extern int clock_settime(clockid_t __clock_id, const timespec * __tp) throw(); +# 230 +extern int clock_nanosleep(clockid_t __clock_id, int __flags, const timespec * __req, timespec * __rem); +# 235 +extern int clock_getcpuclockid(pid_t __pid, clockid_t * __clock_id) throw(); +# 240 +extern int timer_create(clockid_t __clock_id, sigevent *__restrict__ __evp, timer_t *__restrict__ __timerid) throw(); +# 245 +extern int timer_delete(timer_t __timerid) throw(); +# 248 +extern int timer_settime(timer_t __timerid, int __flags, const itimerspec *__restrict__ __value, itimerspec *__restrict__ __ovalue) throw(); +# 253 +extern int timer_gettime(timer_t __timerid, itimerspec * __value) throw(); +# 257 +extern int timer_getoverrun(timer_t __timerid) throw(); +# 263 +extern int timespec_get(timespec * __ts, int __base) throw() +# 264 + __attribute((__nonnull__(1))); +# 280 "/usr/include/time.h" 3 +extern int getdate_err; +# 289 "/usr/include/time.h" 3 +extern tm *getdate(const char * __string); +# 303 "/usr/include/time.h" 3 +extern int getdate_r(const char *__restrict__ __string, tm *__restrict__ __resbufp); +# 307 +} +# 88 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern "C" { +# 91 +extern clock_t clock() throw(); +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern void *memset(void *, int, size_t) throw(); +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +extern void *memcpy(void *, const void *, size_t) throw(); +# 99 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/common_functions.h" +} +# 115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C" { +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int abs(int a) throw(); +# 221 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long labs(long a) throw(); +# 229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long long llabs(long long a) throw(); +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double fabs(double x) throw(); +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float fabsf(float x) throw(); +# 332 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern inline int min(const int a, const int b); +# 339 +extern inline unsigned umin(const unsigned a, const unsigned b); +# 346 +extern inline long long llmin(const long long a, const long long b); +# 353 +extern inline unsigned long long ullmin(const unsigned long long a, const unsigned long long b); +# 374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float fminf(float x, float y) throw(); +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double fmin(double x, double y) throw(); +# 407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern inline int max(const int a, const int b); +# 415 +extern inline unsigned umax(const unsigned a, const unsigned b); +# 422 +extern inline long long llmax(const long long a, const long long b); +# 429 +extern inline unsigned long long ullmax(const unsigned long long a, const unsigned long long b); +# 450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float fmaxf(float x, float y) throw(); +# 470 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double fmax(double, double) throw(); +# 514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double sin(double x) throw(); +# 547 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double cos(double x) throw(); +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern void sincos(double x, double * sptr, double * cptr) throw(); +# 582 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern void sincosf(float x, float * sptr, float * cptr) throw(); +# 627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double tan(double x) throw(); +# 696 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double sqrt(double x) throw(); +# 768 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double rsqrt(double x); +# 838 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float rsqrtf(float x); +# 894 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double log2(double x) throw(); +# 959 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double exp2(double x) throw(); +# 1024 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float exp2f(float x) throw(); +# 1091 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double exp10(double x) throw(); +# 1154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float exp10f(float x) throw(); +# 1247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double expm1(double x) throw(); +# 1339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float expm1f(float x) throw(); +# 1395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float log2f(float x) throw(); +# 1449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double log10(double x) throw(); +# 1519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double log(double x) throw(); +# 1615 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double log1p(double x) throw(); +# 1714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float log1pf(float x) throw(); +# 1778 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double floor(double x) throw(); +# 1857 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double exp(double x) throw(); +# 1898 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double cosh(double x) throw(); +# 1948 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double sinh(double x) throw(); +# 1998 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double tanh(double x) throw(); +# 2053 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double acosh(double x) throw(); +# 2111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float acoshf(float x) throw(); +# 2164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double asinh(double x) throw(); +# 2217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float asinhf(float x) throw(); +# 2271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double atanh(double x) throw(); +# 2325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float atanhf(float x) throw(); +# 2374 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double ldexp(double x, int exp) throw(); +# 2420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float ldexpf(float x, int exp) throw(); +# 2472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double logb(double x) throw(); +# 2527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float logbf(float x) throw(); +# 2567 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int ilogb(double x) throw(); +# 2607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int ilogbf(float x) throw(); +# 2683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double scalbn(double x, int n) throw(); +# 2759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float scalbnf(float x, int n) throw(); +# 2835 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double scalbln(double x, long n) throw(); +# 2911 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float scalblnf(float x, long n) throw(); +# 2988 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double frexp(double x, int * nptr) throw(); +# 3062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float frexpf(float x, int * nptr) throw(); +# 3114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double round(double x) throw(); +# 3169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float roundf(float x) throw(); +# 3187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long lround(double x) throw(); +# 3205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long lroundf(float x) throw(); +# 3223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long long llround(double x) throw(); +# 3241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long long llroundf(float x) throw(); +# 3369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float rintf(float x) throw(); +# 3386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long lrint(double x) throw(); +# 3403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long lrintf(float x) throw(); +# 3420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long long llrint(double x) throw(); +# 3437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern long long llrintf(float x) throw(); +# 3490 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double nearbyint(double x) throw(); +# 3543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float nearbyintf(float x) throw(); +# 3605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double ceil(double x) throw(); +# 3655 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double trunc(double x) throw(); +# 3708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float truncf(float x) throw(); +# 3734 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double fdim(double x, double y) throw(); +# 3760 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float fdimf(float x, float y) throw(); +# 4060 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double atan2(double y, double x) throw(); +# 4131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double atan(double x) throw(); +# 4154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double acos(double x) throw(); +# 4205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double asin(double x) throw(); +# 4273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double hypot(double x, double y) throw(); +# 4396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float hypotf(float x, float y) throw(); +# 5182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double cbrt(double x) throw(); +# 5268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float cbrtf(float x) throw(); +# 5323 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double rcbrt(double x); +# 5373 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float rcbrtf(float x); +# 5433 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double sinpi(double x); +# 5493 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float sinpif(float x); +# 5545 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double cospi(double x); +# 5597 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float cospif(float x); +# 5627 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern void sincospi(double x, double * sptr, double * cptr); +# 5657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern void sincospif(float x, float * sptr, float * cptr); +# 5990 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double pow(double x, double y) throw(); +# 6046 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double modf(double x, double * iptr) throw(); +# 6105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double fmod(double x, double y) throw(); +# 6201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double remainder(double x, double y) throw(); +# 6300 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float remainderf(float x, float y) throw(); +# 6372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double remquo(double x, double y, int * quo) throw(); +# 6444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float remquof(float x, float y, int * quo) throw(); +# 6485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double j0(double x) throw(); +# 6527 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float j0f(float x) throw(); +# 6596 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double j1(double x) throw(); +# 6665 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float j1f(float x) throw(); +# 6708 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double jn(int n, double x) throw(); +# 6751 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float jnf(int n, float x) throw(); +# 6812 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double y0(double x) throw(); +# 6873 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float y0f(float x) throw(); +# 6934 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double y1(double x) throw(); +# 6995 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float y1f(float x) throw(); +# 7058 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double yn(int n, double x) throw(); +# 7121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float ynf(int n, float x) throw(); +# 7310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double erf(double x) throw(); +# 7392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float erff(float x) throw(); +# 7464 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double erfinv(double x); +# 7529 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float erfinvf(float x); +# 7568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double erfc(double x) throw(); +# 7606 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float erfcf(float x) throw(); +# 7723 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double lgamma(double x) throw(); +# 7785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double erfcinv(double x); +# 7840 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float erfcinvf(float x); +# 7908 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double normcdfinv(double x); +# 7976 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float normcdfinvf(float x); +# 8019 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double normcdf(double x); +# 8062 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float normcdff(float x); +# 8126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double erfcx(double x); +# 8190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float erfcxf(float x); +# 8309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float lgammaf(float x) throw(); +# 8407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double tgamma(double x) throw(); +# 8505 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float tgammaf(float x) throw(); +# 8518 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double copysign(double x, double y) throw(); +# 8531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float copysignf(float x, float y) throw(); +# 8550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double nextafter(double x, double y) throw(); +# 8569 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float nextafterf(float x, float y) throw(); +# 8585 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double nan(const char * tagp) throw(); +# 8601 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float nanf(const char * tagp) throw(); +# 8608 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __isinff(float) throw(); +# 8609 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __isnanf(float) throw(); +# 8619 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __finite(double) throw(); +# 8620 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __finitef(float) throw(); +# 8621 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __signbit(double) throw(); +# 8622 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __isnan(double) throw(); +# 8623 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __isinf(double) throw(); +# 8626 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __signbitf(float) throw(); +# 8785 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern double fma(double x, double y, double z) throw(); +# 8943 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float fmaf(float x, float y, float z) throw(); +# 8954 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __signbitl(long double) throw(); +# 8960 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __finitel(long double) throw(); +# 8961 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __isinfl(long double) throw(); +# 8962 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern int __isnanl(long double) throw(); +# 9012 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float acosf(float x) throw(); +# 9071 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float asinf(float x) throw(); +# 9151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float atanf(float x) throw(); +# 9448 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float atan2f(float y, float x) throw(); +# 9482 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float cosf(float x) throw(); +# 9524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float sinf(float x) throw(); +# 9566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float tanf(float x) throw(); +# 9607 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float coshf(float x) throw(); +# 9657 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float sinhf(float x) throw(); +# 9707 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float tanhf(float x) throw(); +# 9759 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float logf(float x) throw(); +# 9839 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float expf(float x) throw(); +# 9891 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float log10f(float x) throw(); +# 9946 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float modff(float x, float * iptr) throw(); +# 10276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float powf(float x, float y) throw(); +# 10345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float sqrtf(float x) throw(); +# 10404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float ceilf(float x) throw(); +# 10465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float floorf(float x) throw(); +# 10523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern float fmodf(float x, float y) throw(); +# 10538 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +} +# 252 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std { +# 254 +typedef unsigned long size_t; +# 255 +typedef long ptrdiff_t; +# 258 +typedef __decltype((nullptr)) nullptr_t; +# 260 +} +# 274 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std { +# 276 +inline namespace __cxx11 __attribute((__abi_tag__("cxx11"))) { } +# 277 +} +# 278 +namespace __gnu_cxx { +# 280 +inline namespace __cxx11 __attribute((__abi_tag__("cxx11"))) { } +# 281 +} +# 417 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +namespace std { +# 419 +inline namespace __gnu_cxx_ldbl128 { } +# 420 +} +# 67 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +extern "C++" { +# 69 +namespace std __attribute((__visibility__("default"))) { +# 73 +struct __true_type { }; +# 74 +struct __false_type { }; +# 76 +template< bool > +# 77 +struct __truth_type { +# 78 +typedef __false_type __type; }; +# 81 +template<> struct __truth_type< true> { +# 82 +typedef __true_type __type; }; +# 86 +template< class _Sp, class _Tp> +# 87 +struct __traitor { +# 89 +enum { __value = ((bool)_Sp::__value) || ((bool)_Tp::__value)}; +# 90 +typedef typename __truth_type< __value> ::__type __type; +# 91 +}; +# 94 +template< class , class > +# 95 +struct __are_same { +# 97 +enum { __value}; +# 98 +typedef __false_type __type; +# 99 +}; +# 101 +template< class _Tp> +# 102 +struct __are_same< _Tp, _Tp> { +# 104 +enum { __value = 1}; +# 105 +typedef __true_type __type; +# 106 +}; +# 109 +template< class _Tp> +# 110 +struct __is_void { +# 112 +enum { __value}; +# 113 +typedef __false_type __type; +# 114 +}; +# 117 +template<> struct __is_void< void> { +# 119 +enum { __value = 1}; +# 120 +typedef __true_type __type; +# 121 +}; +# 126 +template< class _Tp> +# 127 +struct __is_integer { +# 129 +enum { __value}; +# 130 +typedef __false_type __type; +# 131 +}; +# 138 +template<> struct __is_integer< bool> { +# 140 +enum { __value = 1}; +# 141 +typedef __true_type __type; +# 142 +}; +# 145 +template<> struct __is_integer< char> { +# 147 +enum { __value = 1}; +# 148 +typedef __true_type __type; +# 149 +}; +# 152 +template<> struct __is_integer< signed char> { +# 154 +enum { __value = 1}; +# 155 +typedef __true_type __type; +# 156 +}; +# 159 +template<> struct __is_integer< unsigned char> { +# 161 +enum { __value = 1}; +# 162 +typedef __true_type __type; +# 163 +}; +# 167 +template<> struct __is_integer< wchar_t> { +# 169 +enum { __value = 1}; +# 170 +typedef __true_type __type; +# 171 +}; +# 185 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +template<> struct __is_integer< char16_t> { +# 187 +enum { __value = 1}; +# 188 +typedef __true_type __type; +# 189 +}; +# 192 +template<> struct __is_integer< char32_t> { +# 194 +enum { __value = 1}; +# 195 +typedef __true_type __type; +# 196 +}; +# 200 +template<> struct __is_integer< short> { +# 202 +enum { __value = 1}; +# 203 +typedef __true_type __type; +# 204 +}; +# 207 +template<> struct __is_integer< unsigned short> { +# 209 +enum { __value = 1}; +# 210 +typedef __true_type __type; +# 211 +}; +# 214 +template<> struct __is_integer< int> { +# 216 +enum { __value = 1}; +# 217 +typedef __true_type __type; +# 218 +}; +# 221 +template<> struct __is_integer< unsigned> { +# 223 +enum { __value = 1}; +# 224 +typedef __true_type __type; +# 225 +}; +# 228 +template<> struct __is_integer< long> { +# 230 +enum { __value = 1}; +# 231 +typedef __true_type __type; +# 232 +}; +# 235 +template<> struct __is_integer< unsigned long> { +# 237 +enum { __value = 1}; +# 238 +typedef __true_type __type; +# 239 +}; +# 242 +template<> struct __is_integer< long long> { +# 244 +enum { __value = 1}; +# 245 +typedef __true_type __type; +# 246 +}; +# 249 +template<> struct __is_integer< unsigned long long> { +# 251 +enum { __value = 1}; +# 252 +typedef __true_type __type; +# 253 +}; +# 270 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +template<> struct __is_integer< __int128> { enum { __value = 1}; typedef __true_type __type; }; template<> struct __is_integer< unsigned __int128> { enum { __value = 1}; typedef __true_type __type; }; +# 287 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +template< class _Tp> +# 288 +struct __is_floating { +# 290 +enum { __value}; +# 291 +typedef __false_type __type; +# 292 +}; +# 296 +template<> struct __is_floating< float> { +# 298 +enum { __value = 1}; +# 299 +typedef __true_type __type; +# 300 +}; +# 303 +template<> struct __is_floating< double> { +# 305 +enum { __value = 1}; +# 306 +typedef __true_type __type; +# 307 +}; +# 310 +template<> struct __is_floating< long double> { +# 312 +enum { __value = 1}; +# 313 +typedef __true_type __type; +# 314 +}; +# 319 +template< class _Tp> +# 320 +struct __is_pointer { +# 322 +enum { __value}; +# 323 +typedef __false_type __type; +# 324 +}; +# 326 +template< class _Tp> +# 327 +struct __is_pointer< _Tp *> { +# 329 +enum { __value = 1}; +# 330 +typedef __true_type __type; +# 331 +}; +# 336 +template< class _Tp> +# 337 +struct __is_arithmetic : public __traitor< __is_integer< _Tp> , __is_floating< _Tp> > { +# 339 +}; +# 344 +template< class _Tp> +# 345 +struct __is_scalar : public __traitor< __is_arithmetic< _Tp> , __is_pointer< _Tp> > { +# 347 +}; +# 352 +template< class _Tp> +# 353 +struct __is_char { +# 355 +enum { __value}; +# 356 +typedef __false_type __type; +# 357 +}; +# 360 +template<> struct __is_char< char> { +# 362 +enum { __value = 1}; +# 363 +typedef __true_type __type; +# 364 +}; +# 368 +template<> struct __is_char< wchar_t> { +# 370 +enum { __value = 1}; +# 371 +typedef __true_type __type; +# 372 +}; +# 375 +template< class _Tp> +# 376 +struct __is_byte { +# 378 +enum { __value}; +# 379 +typedef __false_type __type; +# 380 +}; +# 383 +template<> struct __is_byte< char> { +# 385 +enum { __value = 1}; +# 386 +typedef __true_type __type; +# 387 +}; +# 390 +template<> struct __is_byte< signed char> { +# 392 +enum { __value = 1}; +# 393 +typedef __true_type __type; +# 394 +}; +# 397 +template<> struct __is_byte< unsigned char> { +# 399 +enum { __value = 1}; +# 400 +typedef __true_type __type; +# 401 +}; +# 417 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h" 3 +template< class _Tp> +# 418 +struct __is_move_iterator { +# 420 +enum { __value}; +# 421 +typedef __false_type __type; +# 422 +}; +# 426 +template< class _Iterator> inline _Iterator +# 428 +__miter_base(_Iterator __it) +# 429 +{ return __it; } +# 432 +} +# 433 +} +# 37 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h" 3 +extern "C++" { +# 39 +namespace __gnu_cxx __attribute((__visibility__("default"))) { +# 44 +template< bool , class > +# 45 +struct __enable_if { +# 46 +}; +# 48 +template< class _Tp> +# 49 +struct __enable_if< true, _Tp> { +# 50 +typedef _Tp __type; }; +# 54 +template< bool _Cond, class _Iftrue, class _Iffalse> +# 55 +struct __conditional_type { +# 56 +typedef _Iftrue __type; }; +# 58 +template< class _Iftrue, class _Iffalse> +# 59 +struct __conditional_type< false, _Iftrue, _Iffalse> { +# 60 +typedef _Iffalse __type; }; +# 64 +template< class _Tp> +# 65 +struct __add_unsigned { +# 68 +private: typedef __enable_if< std::__is_integer< _Tp> ::__value, _Tp> __if_type; +# 71 +public: typedef typename __enable_if< std::__is_integer< _Tp> ::__value, _Tp> ::__type __type; +# 72 +}; +# 75 +template<> struct __add_unsigned< char> { +# 76 +typedef unsigned char __type; }; +# 79 +template<> struct __add_unsigned< signed char> { +# 80 +typedef unsigned char __type; }; +# 83 +template<> struct __add_unsigned< short> { +# 84 +typedef unsigned short __type; }; +# 87 +template<> struct __add_unsigned< int> { +# 88 +typedef unsigned __type; }; +# 91 +template<> struct __add_unsigned< long> { +# 92 +typedef unsigned long __type; }; +# 95 +template<> struct __add_unsigned< long long> { +# 96 +typedef unsigned long long __type; }; +# 100 +template<> struct __add_unsigned< bool> ; +# 103 +template<> struct __add_unsigned< wchar_t> ; +# 107 +template< class _Tp> +# 108 +struct __remove_unsigned { +# 111 +private: typedef __enable_if< std::__is_integer< _Tp> ::__value, _Tp> __if_type; +# 114 +public: typedef typename __enable_if< std::__is_integer< _Tp> ::__value, _Tp> ::__type __type; +# 115 +}; +# 118 +template<> struct __remove_unsigned< char> { +# 119 +typedef signed char __type; }; +# 122 +template<> struct __remove_unsigned< unsigned char> { +# 123 +typedef signed char __type; }; +# 126 +template<> struct __remove_unsigned< unsigned short> { +# 127 +typedef short __type; }; +# 130 +template<> struct __remove_unsigned< unsigned> { +# 131 +typedef int __type; }; +# 134 +template<> struct __remove_unsigned< unsigned long> { +# 135 +typedef long __type; }; +# 138 +template<> struct __remove_unsigned< unsigned long long> { +# 139 +typedef long long __type; }; +# 143 +template<> struct __remove_unsigned< bool> ; +# 146 +template<> struct __remove_unsigned< wchar_t> ; +# 150 +template< class _Type> inline bool +# 152 +__is_null_pointer(_Type *__ptr) +# 153 +{ return __ptr == 0; } +# 155 +template< class _Type> inline bool +# 157 +__is_null_pointer(_Type) +# 158 +{ return false; } +# 162 +inline bool __is_null_pointer(std::nullptr_t) +# 163 +{ return true; } +# 167 +template< class _Tp, bool = std::template __is_integer< _Tp> ::__value> +# 168 +struct __promote { +# 169 +typedef double __type; }; +# 174 +template< class _Tp> +# 175 +struct __promote< _Tp, false> { +# 176 +}; +# 179 +template<> struct __promote< long double> { +# 180 +typedef long double __type; }; +# 183 +template<> struct __promote< double> { +# 184 +typedef double __type; }; +# 187 +template<> struct __promote< float> { +# 188 +typedef float __type; }; +# 190 +template< class _Tp, class _Up, class +# 191 +_Tp2 = typename __promote< _Tp> ::__type, class +# 192 +_Up2 = typename __promote< _Up> ::__type> +# 193 +struct __promote_2 { +# 195 +typedef __typeof__(_Tp2() + _Up2()) __type; +# 196 +}; +# 198 +template< class _Tp, class _Up, class _Vp, class +# 199 +_Tp2 = typename __promote< _Tp> ::__type, class +# 200 +_Up2 = typename __promote< _Up> ::__type, class +# 201 +_Vp2 = typename __promote< _Vp> ::__type> +# 202 +struct __promote_3 { +# 204 +typedef __typeof__((_Tp2() + _Up2()) + _Vp2()) __type; +# 205 +}; +# 207 +template< class _Tp, class _Up, class _Vp, class _Wp, class +# 208 +_Tp2 = typename __promote< _Tp> ::__type, class +# 209 +_Up2 = typename __promote< _Up> ::__type, class +# 210 +_Vp2 = typename __promote< _Vp> ::__type, class +# 211 +_Wp2 = typename __promote< _Wp> ::__type> +# 212 +struct __promote_4 { +# 214 +typedef __typeof__(((_Tp2() + _Up2()) + _Vp2()) + _Wp2()) __type; +# 215 +}; +# 218 +} +# 219 +} +# 34 "/usr/include/math.h" 3 +extern "C" { +# 79 "/usr/include/bits/floatn.h" 3 +typedef __float128 _Float128; +# 82 +typedef float __complex__ __cfloat128 __attribute((__mode__(__KC__))); +# 214 "/usr/include/bits/floatn-common.h" 3 +typedef float _Float32; +# 251 "/usr/include/bits/floatn-common.h" 3 +typedef double _Float64; +# 268 "/usr/include/bits/floatn-common.h" 3 +typedef double _Float32x; +# 298 "/usr/include/bits/floatn-common.h" 3 +typedef _Float128 _Float64x; +# 149 "/usr/include/math.h" 3 +typedef float float_t; +# 150 +typedef double double_t; +# 238 "/usr/include/math.h" 3 +enum { +# 239 +FP_INT_UPWARD, +# 242 +FP_INT_DOWNWARD, +# 245 +FP_INT_TOWARDZERO, +# 248 +FP_INT_TONEARESTFROMZERO, +# 251 +FP_INT_TONEAREST +# 254 +}; +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 +extern int __fpclassify(double __value) throw() +# 22 + __attribute((const)); +# 25 +extern int __signbit(double __value) throw() +# 26 + __attribute((const)); +# 30 +extern int __isinf(double __value) throw() __attribute((const)); +# 33 +extern int __finite(double __value) throw() __attribute((const)); +# 36 +extern int __isnan(double __value) throw() __attribute((const)); +# 39 +extern int __iseqsig(double __x, double __y) throw(); +# 42 +extern int __issignaling(double __value) throw() +# 43 + __attribute((const)); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern double acos(double __x) throw(); extern double __acos(double __x) throw(); +# 55 +extern double asin(double __x) throw(); extern double __asin(double __x) throw(); +# 57 +extern double atan(double __x) throw(); extern double __atan(double __x) throw(); +# 59 +extern double atan2(double __y, double __x) throw(); extern double __atan2(double __y, double __x) throw(); +# 62 +extern double cos(double __x) throw(); extern double __cos(double __x) throw(); +# 64 +extern double sin(double __x) throw(); extern double __sin(double __x) throw(); +# 66 +extern double tan(double __x) throw(); extern double __tan(double __x) throw(); +# 71 +extern double cosh(double __x) throw(); extern double __cosh(double __x) throw(); +# 73 +extern double sinh(double __x) throw(); extern double __sinh(double __x) throw(); +# 75 +extern double tanh(double __x) throw(); extern double __tanh(double __x) throw(); +# 79 +extern void sincos(double __x, double * __sinx, double * __cosx) throw(); extern void __sincos(double __x, double * __sinx, double * __cosx) throw(); +# 85 +extern double acosh(double __x) throw(); extern double __acosh(double __x) throw(); +# 87 +extern double asinh(double __x) throw(); extern double __asinh(double __x) throw(); +# 89 +extern double atanh(double __x) throw(); extern double __atanh(double __x) throw(); +# 95 +extern double exp(double __x) throw(); extern double __exp(double __x) throw(); +# 98 +extern double frexp(double __x, int * __exponent) throw(); extern double __frexp(double __x, int * __exponent) throw(); +# 101 +extern double ldexp(double __x, int __exponent) throw(); extern double __ldexp(double __x, int __exponent) throw(); +# 104 +extern double log(double __x) throw(); extern double __log(double __x) throw(); +# 107 +extern double log10(double __x) throw(); extern double __log10(double __x) throw(); +# 110 +extern double modf(double __x, double * __iptr) throw(); extern double __modf(double __x, double * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern double exp10(double __x) throw(); extern double __exp10(double __x) throw(); +# 119 +extern double expm1(double __x) throw(); extern double __expm1(double __x) throw(); +# 122 +extern double log1p(double __x) throw(); extern double __log1p(double __x) throw(); +# 125 +extern double logb(double __x) throw(); extern double __logb(double __x) throw(); +# 130 +extern double exp2(double __x) throw(); extern double __exp2(double __x) throw(); +# 133 +extern double log2(double __x) throw(); extern double __log2(double __x) throw(); +# 140 +extern double pow(double __x, double __y) throw(); extern double __pow(double __x, double __y) throw(); +# 143 +extern double sqrt(double __x) throw(); extern double __sqrt(double __x) throw(); +# 147 +extern double hypot(double __x, double __y) throw(); extern double __hypot(double __x, double __y) throw(); +# 152 +extern double cbrt(double __x) throw(); extern double __cbrt(double __x) throw(); +# 159 +extern double ceil(double __x) throw() __attribute((const)); extern double __ceil(double __x) throw() __attribute((const)); +# 162 +extern double fabs(double __x) throw() __attribute((const)); extern double __fabs(double __x) throw() __attribute((const)); +# 165 +extern double floor(double __x) throw() __attribute((const)); extern double __floor(double __x) throw() __attribute((const)); +# 168 +extern double fmod(double __x, double __y) throw(); extern double __fmod(double __x, double __y) throw(); +# 182 "/usr/include/bits/mathcalls.h" 3 +extern int finite(double __value) throw() __attribute((const)); +# 185 +extern double drem(double __x, double __y) throw(); extern double __drem(double __x, double __y) throw(); +# 189 +extern double significand(double __x) throw(); extern double __significand(double __x) throw(); +# 196 +extern double copysign(double __x, double __y) throw() __attribute((const)); extern double __copysign(double __x, double __y) throw() __attribute((const)); +# 201 +extern double nan(const char * __tagb) throw(); extern double __nan(const char * __tagb) throw(); +# 217 "/usr/include/bits/mathcalls.h" 3 +extern double j0(double) throw(); extern double __j0(double) throw(); +# 218 +extern double j1(double) throw(); extern double __j1(double) throw(); +# 219 +extern double jn(int, double) throw(); extern double __jn(int, double) throw(); +# 220 +extern double y0(double) throw(); extern double __y0(double) throw(); +# 221 +extern double y1(double) throw(); extern double __y1(double) throw(); +# 222 +extern double yn(int, double) throw(); extern double __yn(int, double) throw(); +# 228 +extern double erf(double) throw(); extern double __erf(double) throw(); +# 229 +extern double erfc(double) throw(); extern double __erfc(double) throw(); +# 230 +extern double lgamma(double) throw(); extern double __lgamma(double) throw(); +# 235 +extern double tgamma(double) throw(); extern double __tgamma(double) throw(); +# 241 +extern double gamma(double) throw(); extern double __gamma(double) throw(); +# 249 +extern double lgamma_r(double, int * __signgamp) throw(); extern double __lgamma_r(double, int * __signgamp) throw(); +# 256 +extern double rint(double __x) throw(); extern double __rint(double __x) throw(); +# 259 +extern double nextafter(double __x, double __y) throw(); extern double __nextafter(double __x, double __y) throw(); +# 261 +extern double nexttoward(double __x, long double __y) throw(); extern double __nexttoward(double __x, long double __y) throw(); +# 266 +extern double nextdown(double __x) throw(); extern double __nextdown(double __x) throw(); +# 268 +extern double nextup(double __x) throw(); extern double __nextup(double __x) throw(); +# 272 +extern double remainder(double __x, double __y) throw(); extern double __remainder(double __x, double __y) throw(); +# 276 +extern double scalbn(double __x, int __n) throw(); extern double __scalbn(double __x, int __n) throw(); +# 280 +extern int ilogb(double __x) throw(); extern int __ilogb(double __x) throw(); +# 285 +extern long llogb(double __x) throw(); extern long __llogb(double __x) throw(); +# 290 +extern double scalbln(double __x, long __n) throw(); extern double __scalbln(double __x, long __n) throw(); +# 294 +extern double nearbyint(double __x) throw(); extern double __nearbyint(double __x) throw(); +# 298 +extern double round(double __x) throw() __attribute((const)); extern double __round(double __x) throw() __attribute((const)); +# 302 +extern double trunc(double __x) throw() __attribute((const)); extern double __trunc(double __x) throw() __attribute((const)); +# 307 +extern double remquo(double __x, double __y, int * __quo) throw(); extern double __remquo(double __x, double __y, int * __quo) throw(); +# 314 +extern long lrint(double __x) throw(); extern long __lrint(double __x) throw(); +# 316 +__extension__ extern long long llrint(double __x) throw(); extern long long __llrint(double __x) throw(); +# 320 +extern long lround(double __x) throw(); extern long __lround(double __x) throw(); +# 322 +__extension__ extern long long llround(double __x) throw(); extern long long __llround(double __x) throw(); +# 326 +extern double fdim(double __x, double __y) throw(); extern double __fdim(double __x, double __y) throw(); +# 329 +extern double fmax(double __x, double __y) throw() __attribute((const)); extern double __fmax(double __x, double __y) throw() __attribute((const)); +# 332 +extern double fmin(double __x, double __y) throw() __attribute((const)); extern double __fmin(double __x, double __y) throw() __attribute((const)); +# 335 +extern double fma(double __x, double __y, double __z) throw(); extern double __fma(double __x, double __y, double __z) throw(); +# 340 +extern double roundeven(double __x) throw() __attribute((const)); extern double __roundeven(double __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfp(double __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfp(double __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfp(double __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfp(double __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpx(double __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpx(double __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpx(double __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpx(double __x, int __round, unsigned __width) throw(); +# 365 +extern double fmaxmag(double __x, double __y) throw() __attribute((const)); extern double __fmaxmag(double __x, double __y) throw() __attribute((const)); +# 368 +extern double fminmag(double __x, double __y) throw() __attribute((const)); extern double __fminmag(double __x, double __y) throw() __attribute((const)); +# 371 +extern int totalorder(double __x, double __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermag(double __x, double __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalize(double * __cx, const double * __x) throw(); +# 382 +extern double getpayload(const double * __x) throw(); extern double __getpayload(const double * __x) throw(); +# 385 +extern int setpayload(double * __x, double __payload) throw(); +# 388 +extern int setpayloadsig(double * __x, double __payload) throw(); +# 396 +extern double scalb(double __x, double __n) throw(); extern double __scalb(double __x, double __n) throw(); +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 +extern int __fpclassifyf(float __value) throw() +# 22 + __attribute((const)); +# 25 +extern int __signbitf(float __value) throw() +# 26 + __attribute((const)); +# 30 +extern int __isinff(float __value) throw() __attribute((const)); +# 33 +extern int __finitef(float __value) throw() __attribute((const)); +# 36 +extern int __isnanf(float __value) throw() __attribute((const)); +# 39 +extern int __iseqsigf(float __x, float __y) throw(); +# 42 +extern int __issignalingf(float __value) throw() +# 43 + __attribute((const)); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern float acosf(float __x) throw(); extern float __acosf(float __x) throw(); +# 55 +extern float asinf(float __x) throw(); extern float __asinf(float __x) throw(); +# 57 +extern float atanf(float __x) throw(); extern float __atanf(float __x) throw(); +# 59 +extern float atan2f(float __y, float __x) throw(); extern float __atan2f(float __y, float __x) throw(); +# 62 +extern float cosf(float __x) throw(); +# 64 +extern float sinf(float __x) throw(); +# 66 +extern float tanf(float __x) throw(); +# 71 +extern float coshf(float __x) throw(); extern float __coshf(float __x) throw(); +# 73 +extern float sinhf(float __x) throw(); extern float __sinhf(float __x) throw(); +# 75 +extern float tanhf(float __x) throw(); extern float __tanhf(float __x) throw(); +# 79 +extern void sincosf(float __x, float * __sinx, float * __cosx) throw(); +# 85 +extern float acoshf(float __x) throw(); extern float __acoshf(float __x) throw(); +# 87 +extern float asinhf(float __x) throw(); extern float __asinhf(float __x) throw(); +# 89 +extern float atanhf(float __x) throw(); extern float __atanhf(float __x) throw(); +# 95 +extern float expf(float __x) throw(); +# 98 +extern float frexpf(float __x, int * __exponent) throw(); extern float __frexpf(float __x, int * __exponent) throw(); +# 101 +extern float ldexpf(float __x, int __exponent) throw(); extern float __ldexpf(float __x, int __exponent) throw(); +# 104 +extern float logf(float __x) throw(); +# 107 +extern float log10f(float __x) throw(); +# 110 +extern float modff(float __x, float * __iptr) throw(); extern float __modff(float __x, float * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern float exp10f(float __x) throw(); +# 119 +extern float expm1f(float __x) throw(); extern float __expm1f(float __x) throw(); +# 122 +extern float log1pf(float __x) throw(); extern float __log1pf(float __x) throw(); +# 125 +extern float logbf(float __x) throw(); extern float __logbf(float __x) throw(); +# 130 +extern float exp2f(float __x) throw(); extern float __exp2f(float __x) throw(); +# 133 +extern float log2f(float __x) throw(); +# 140 +extern float powf(float __x, float __y) throw(); +# 143 +extern float sqrtf(float __x) throw(); extern float __sqrtf(float __x) throw(); +# 147 +extern float hypotf(float __x, float __y) throw(); extern float __hypotf(float __x, float __y) throw(); +# 152 +extern float cbrtf(float __x) throw(); extern float __cbrtf(float __x) throw(); +# 159 +extern float ceilf(float __x) throw() __attribute((const)); extern float __ceilf(float __x) throw() __attribute((const)); +# 162 +extern float fabsf(float __x) throw() __attribute((const)); extern float __fabsf(float __x) throw() __attribute((const)); +# 165 +extern float floorf(float __x) throw() __attribute((const)); extern float __floorf(float __x) throw() __attribute((const)); +# 168 +extern float fmodf(float __x, float __y) throw(); extern float __fmodf(float __x, float __y) throw(); +# 177 "/usr/include/bits/mathcalls.h" 3 +extern int isinff(float __value) throw() __attribute((const)); +# 182 +extern int finitef(float __value) throw() __attribute((const)); +# 185 +extern float dremf(float __x, float __y) throw(); extern float __dremf(float __x, float __y) throw(); +# 189 +extern float significandf(float __x) throw(); extern float __significandf(float __x) throw(); +# 196 +extern float copysignf(float __x, float __y) throw() __attribute((const)); extern float __copysignf(float __x, float __y) throw() __attribute((const)); +# 201 +extern float nanf(const char * __tagb) throw(); extern float __nanf(const char * __tagb) throw(); +# 211 "/usr/include/bits/mathcalls.h" 3 +extern int isnanf(float __value) throw() __attribute((const)); +# 217 +extern float j0f(float) throw(); extern float __j0f(float) throw(); +# 218 +extern float j1f(float) throw(); extern float __j1f(float) throw(); +# 219 +extern float jnf(int, float) throw(); extern float __jnf(int, float) throw(); +# 220 +extern float y0f(float) throw(); extern float __y0f(float) throw(); +# 221 +extern float y1f(float) throw(); extern float __y1f(float) throw(); +# 222 +extern float ynf(int, float) throw(); extern float __ynf(int, float) throw(); +# 228 +extern float erff(float) throw(); extern float __erff(float) throw(); +# 229 +extern float erfcf(float) throw(); extern float __erfcf(float) throw(); +# 230 +extern float lgammaf(float) throw(); extern float __lgammaf(float) throw(); +# 235 +extern float tgammaf(float) throw(); extern float __tgammaf(float) throw(); +# 241 +extern float gammaf(float) throw(); extern float __gammaf(float) throw(); +# 249 +extern float lgammaf_r(float, int * __signgamp) throw(); extern float __lgammaf_r(float, int * __signgamp) throw(); +# 256 +extern float rintf(float __x) throw(); extern float __rintf(float __x) throw(); +# 259 +extern float nextafterf(float __x, float __y) throw(); extern float __nextafterf(float __x, float __y) throw(); +# 261 +extern float nexttowardf(float __x, long double __y) throw(); extern float __nexttowardf(float __x, long double __y) throw(); +# 266 +extern float nextdownf(float __x) throw(); extern float __nextdownf(float __x) throw(); +# 268 +extern float nextupf(float __x) throw(); extern float __nextupf(float __x) throw(); +# 272 +extern float remainderf(float __x, float __y) throw(); extern float __remainderf(float __x, float __y) throw(); +# 276 +extern float scalbnf(float __x, int __n) throw(); extern float __scalbnf(float __x, int __n) throw(); +# 280 +extern int ilogbf(float __x) throw(); extern int __ilogbf(float __x) throw(); +# 285 +extern long llogbf(float __x) throw(); extern long __llogbf(float __x) throw(); +# 290 +extern float scalblnf(float __x, long __n) throw(); extern float __scalblnf(float __x, long __n) throw(); +# 294 +extern float nearbyintf(float __x) throw(); extern float __nearbyintf(float __x) throw(); +# 298 +extern float roundf(float __x) throw() __attribute((const)); extern float __roundf(float __x) throw() __attribute((const)); +# 302 +extern float truncf(float __x) throw() __attribute((const)); extern float __truncf(float __x) throw() __attribute((const)); +# 307 +extern float remquof(float __x, float __y, int * __quo) throw(); extern float __remquof(float __x, float __y, int * __quo) throw(); +# 314 +extern long lrintf(float __x) throw(); extern long __lrintf(float __x) throw(); +# 316 +__extension__ extern long long llrintf(float __x) throw(); extern long long __llrintf(float __x) throw(); +# 320 +extern long lroundf(float __x) throw(); extern long __lroundf(float __x) throw(); +# 322 +__extension__ extern long long llroundf(float __x) throw(); extern long long __llroundf(float __x) throw(); +# 326 +extern float fdimf(float __x, float __y) throw(); extern float __fdimf(float __x, float __y) throw(); +# 329 +extern float fmaxf(float __x, float __y) throw() __attribute((const)); extern float __fmaxf(float __x, float __y) throw() __attribute((const)); +# 332 +extern float fminf(float __x, float __y) throw() __attribute((const)); extern float __fminf(float __x, float __y) throw() __attribute((const)); +# 335 +extern float fmaf(float __x, float __y, float __z) throw(); extern float __fmaf(float __x, float __y, float __z) throw(); +# 340 +extern float roundevenf(float __x) throw() __attribute((const)); extern float __roundevenf(float __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfpf(float __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpf(float __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfpf(float __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpf(float __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpxf(float __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpxf(float __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpxf(float __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpxf(float __x, int __round, unsigned __width) throw(); +# 365 +extern float fmaxmagf(float __x, float __y) throw() __attribute((const)); extern float __fmaxmagf(float __x, float __y) throw() __attribute((const)); +# 368 +extern float fminmagf(float __x, float __y) throw() __attribute((const)); extern float __fminmagf(float __x, float __y) throw() __attribute((const)); +# 371 +extern int totalorderf(float __x, float __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermagf(float __x, float __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalizef(float * __cx, const float * __x) throw(); +# 382 +extern float getpayloadf(const float * __x) throw(); extern float __getpayloadf(const float * __x) throw(); +# 385 +extern int setpayloadf(float * __x, float __payload) throw(); +# 388 +extern int setpayloadsigf(float * __x, float __payload) throw(); +# 396 +extern float scalbf(float __x, float __n) throw(); extern float __scalbf(float __x, float __n) throw(); +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 +extern int __fpclassifyl(long double __value) throw() +# 22 + __attribute((const)); +# 25 +extern int __signbitl(long double __value) throw() +# 26 + __attribute((const)); +# 30 +extern int __isinfl(long double __value) throw() __attribute((const)); +# 33 +extern int __finitel(long double __value) throw() __attribute((const)); +# 36 +extern int __isnanl(long double __value) throw() __attribute((const)); +# 39 +extern int __iseqsigl(long double __x, long double __y) throw(); +# 42 +extern int __issignalingl(long double __value) throw() +# 43 + __attribute((const)); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern long double acosl(long double __x) throw(); extern long double __acosl(long double __x) throw(); +# 55 +extern long double asinl(long double __x) throw(); extern long double __asinl(long double __x) throw(); +# 57 +extern long double atanl(long double __x) throw(); extern long double __atanl(long double __x) throw(); +# 59 +extern long double atan2l(long double __y, long double __x) throw(); extern long double __atan2l(long double __y, long double __x) throw(); +# 62 +extern long double cosl(long double __x) throw(); extern long double __cosl(long double __x) throw(); +# 64 +extern long double sinl(long double __x) throw(); extern long double __sinl(long double __x) throw(); +# 66 +extern long double tanl(long double __x) throw(); extern long double __tanl(long double __x) throw(); +# 71 +extern long double coshl(long double __x) throw(); extern long double __coshl(long double __x) throw(); +# 73 +extern long double sinhl(long double __x) throw(); extern long double __sinhl(long double __x) throw(); +# 75 +extern long double tanhl(long double __x) throw(); extern long double __tanhl(long double __x) throw(); +# 79 +extern void sincosl(long double __x, long double * __sinx, long double * __cosx) throw(); extern void __sincosl(long double __x, long double * __sinx, long double * __cosx) throw(); +# 85 +extern long double acoshl(long double __x) throw(); extern long double __acoshl(long double __x) throw(); +# 87 +extern long double asinhl(long double __x) throw(); extern long double __asinhl(long double __x) throw(); +# 89 +extern long double atanhl(long double __x) throw(); extern long double __atanhl(long double __x) throw(); +# 95 +extern long double expl(long double __x) throw(); extern long double __expl(long double __x) throw(); +# 98 +extern long double frexpl(long double __x, int * __exponent) throw(); extern long double __frexpl(long double __x, int * __exponent) throw(); +# 101 +extern long double ldexpl(long double __x, int __exponent) throw(); extern long double __ldexpl(long double __x, int __exponent) throw(); +# 104 +extern long double logl(long double __x) throw(); extern long double __logl(long double __x) throw(); +# 107 +extern long double log10l(long double __x) throw(); extern long double __log10l(long double __x) throw(); +# 110 +extern long double modfl(long double __x, long double * __iptr) throw(); extern long double __modfl(long double __x, long double * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern long double exp10l(long double __x) throw(); extern long double __exp10l(long double __x) throw(); +# 119 +extern long double expm1l(long double __x) throw(); extern long double __expm1l(long double __x) throw(); +# 122 +extern long double log1pl(long double __x) throw(); extern long double __log1pl(long double __x) throw(); +# 125 +extern long double logbl(long double __x) throw(); extern long double __logbl(long double __x) throw(); +# 130 +extern long double exp2l(long double __x) throw(); extern long double __exp2l(long double __x) throw(); +# 133 +extern long double log2l(long double __x) throw(); extern long double __log2l(long double __x) throw(); +# 140 +extern long double powl(long double __x, long double __y) throw(); extern long double __powl(long double __x, long double __y) throw(); +# 143 +extern long double sqrtl(long double __x) throw(); extern long double __sqrtl(long double __x) throw(); +# 147 +extern long double hypotl(long double __x, long double __y) throw(); extern long double __hypotl(long double __x, long double __y) throw(); +# 152 +extern long double cbrtl(long double __x) throw(); extern long double __cbrtl(long double __x) throw(); +# 159 +extern long double ceill(long double __x) throw() __attribute((const)); extern long double __ceill(long double __x) throw() __attribute((const)); +# 162 +extern long double fabsl(long double __x) throw() __attribute((const)); extern long double __fabsl(long double __x) throw() __attribute((const)); +# 165 +extern long double floorl(long double __x) throw() __attribute((const)); extern long double __floorl(long double __x) throw() __attribute((const)); +# 168 +extern long double fmodl(long double __x, long double __y) throw(); extern long double __fmodl(long double __x, long double __y) throw(); +# 177 "/usr/include/bits/mathcalls.h" 3 +extern int isinfl(long double __value) throw() __attribute((const)); +# 182 +extern int finitel(long double __value) throw() __attribute((const)); +# 185 +extern long double dreml(long double __x, long double __y) throw(); extern long double __dreml(long double __x, long double __y) throw(); +# 189 +extern long double significandl(long double __x) throw(); extern long double __significandl(long double __x) throw(); +# 196 +extern long double copysignl(long double __x, long double __y) throw() __attribute((const)); extern long double __copysignl(long double __x, long double __y) throw() __attribute((const)); +# 201 +extern long double nanl(const char * __tagb) throw(); extern long double __nanl(const char * __tagb) throw(); +# 211 "/usr/include/bits/mathcalls.h" 3 +extern int isnanl(long double __value) throw() __attribute((const)); +# 217 +extern long double j0l(long double) throw(); extern long double __j0l(long double) throw(); +# 218 +extern long double j1l(long double) throw(); extern long double __j1l(long double) throw(); +# 219 +extern long double jnl(int, long double) throw(); extern long double __jnl(int, long double) throw(); +# 220 +extern long double y0l(long double) throw(); extern long double __y0l(long double) throw(); +# 221 +extern long double y1l(long double) throw(); extern long double __y1l(long double) throw(); +# 222 +extern long double ynl(int, long double) throw(); extern long double __ynl(int, long double) throw(); +# 228 +extern long double erfl(long double) throw(); extern long double __erfl(long double) throw(); +# 229 +extern long double erfcl(long double) throw(); extern long double __erfcl(long double) throw(); +# 230 +extern long double lgammal(long double) throw(); extern long double __lgammal(long double) throw(); +# 235 +extern long double tgammal(long double) throw(); extern long double __tgammal(long double) throw(); +# 241 +extern long double gammal(long double) throw(); extern long double __gammal(long double) throw(); +# 249 +extern long double lgammal_r(long double, int * __signgamp) throw(); extern long double __lgammal_r(long double, int * __signgamp) throw(); +# 256 +extern long double rintl(long double __x) throw(); extern long double __rintl(long double __x) throw(); +# 259 +extern long double nextafterl(long double __x, long double __y) throw(); extern long double __nextafterl(long double __x, long double __y) throw(); +# 261 +extern long double nexttowardl(long double __x, long double __y) throw(); extern long double __nexttowardl(long double __x, long double __y) throw(); +# 266 +extern long double nextdownl(long double __x) throw(); extern long double __nextdownl(long double __x) throw(); +# 268 +extern long double nextupl(long double __x) throw(); extern long double __nextupl(long double __x) throw(); +# 272 +extern long double remainderl(long double __x, long double __y) throw(); extern long double __remainderl(long double __x, long double __y) throw(); +# 276 +extern long double scalbnl(long double __x, int __n) throw(); extern long double __scalbnl(long double __x, int __n) throw(); +# 280 +extern int ilogbl(long double __x) throw(); extern int __ilogbl(long double __x) throw(); +# 285 +extern long llogbl(long double __x) throw(); extern long __llogbl(long double __x) throw(); +# 290 +extern long double scalblnl(long double __x, long __n) throw(); extern long double __scalblnl(long double __x, long __n) throw(); +# 294 +extern long double nearbyintl(long double __x) throw(); extern long double __nearbyintl(long double __x) throw(); +# 298 +extern long double roundl(long double __x) throw() __attribute((const)); extern long double __roundl(long double __x) throw() __attribute((const)); +# 302 +extern long double truncl(long double __x) throw() __attribute((const)); extern long double __truncl(long double __x) throw() __attribute((const)); +# 307 +extern long double remquol(long double __x, long double __y, int * __quo) throw(); extern long double __remquol(long double __x, long double __y, int * __quo) throw(); +# 314 +extern long lrintl(long double __x) throw(); extern long __lrintl(long double __x) throw(); +# 316 +__extension__ extern long long llrintl(long double __x) throw(); extern long long __llrintl(long double __x) throw(); +# 320 +extern long lroundl(long double __x) throw(); extern long __lroundl(long double __x) throw(); +# 322 +__extension__ extern long long llroundl(long double __x) throw(); extern long long __llroundl(long double __x) throw(); +# 326 +extern long double fdiml(long double __x, long double __y) throw(); extern long double __fdiml(long double __x, long double __y) throw(); +# 329 +extern long double fmaxl(long double __x, long double __y) throw() __attribute((const)); extern long double __fmaxl(long double __x, long double __y) throw() __attribute((const)); +# 332 +extern long double fminl(long double __x, long double __y) throw() __attribute((const)); extern long double __fminl(long double __x, long double __y) throw() __attribute((const)); +# 335 +extern long double fmal(long double __x, long double __y, long double __z) throw(); extern long double __fmal(long double __x, long double __y, long double __z) throw(); +# 340 +extern long double roundevenl(long double __x) throw() __attribute((const)); extern long double __roundevenl(long double __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfpl(long double __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpl(long double __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfpl(long double __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpl(long double __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpxl(long double __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpxl(long double __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpxl(long double __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpxl(long double __x, int __round, unsigned __width) throw(); +# 365 +extern long double fmaxmagl(long double __x, long double __y) throw() __attribute((const)); extern long double __fmaxmagl(long double __x, long double __y) throw() __attribute((const)); +# 368 +extern long double fminmagl(long double __x, long double __y) throw() __attribute((const)); extern long double __fminmagl(long double __x, long double __y) throw() __attribute((const)); +# 371 +extern int totalorderl(long double __x, long double __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermagl(long double __x, long double __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalizel(long double * __cx, const long double * __x) throw(); +# 382 +extern long double getpayloadl(const long double * __x) throw(); extern long double __getpayloadl(const long double * __x) throw(); +# 385 +extern int setpayloadl(long double * __x, long double __payload) throw(); +# 388 +extern int setpayloadsigl(long double * __x, long double __payload) throw(); +# 396 +extern long double scalbl(long double __x, long double __n) throw(); extern long double __scalbl(long double __x, long double __n) throw(); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern _Float32 acosf32(_Float32 __x) throw(); extern _Float32 __acosf32(_Float32 __x) throw(); +# 55 +extern _Float32 asinf32(_Float32 __x) throw(); extern _Float32 __asinf32(_Float32 __x) throw(); +# 57 +extern _Float32 atanf32(_Float32 __x) throw(); extern _Float32 __atanf32(_Float32 __x) throw(); +# 59 +extern _Float32 atan2f32(_Float32 __y, _Float32 __x) throw(); extern _Float32 __atan2f32(_Float32 __y, _Float32 __x) throw(); +# 62 +extern _Float32 cosf32(_Float32 __x) throw(); extern _Float32 __cosf32(_Float32 __x) throw(); +# 64 +extern _Float32 sinf32(_Float32 __x) throw(); extern _Float32 __sinf32(_Float32 __x) throw(); +# 66 +extern _Float32 tanf32(_Float32 __x) throw(); extern _Float32 __tanf32(_Float32 __x) throw(); +# 71 +extern _Float32 coshf32(_Float32 __x) throw(); extern _Float32 __coshf32(_Float32 __x) throw(); +# 73 +extern _Float32 sinhf32(_Float32 __x) throw(); extern _Float32 __sinhf32(_Float32 __x) throw(); +# 75 +extern _Float32 tanhf32(_Float32 __x) throw(); extern _Float32 __tanhf32(_Float32 __x) throw(); +# 79 +extern void sincosf32(_Float32 __x, _Float32 * __sinx, _Float32 * __cosx) throw(); extern void __sincosf32(_Float32 __x, _Float32 * __sinx, _Float32 * __cosx) throw(); +# 85 +extern _Float32 acoshf32(_Float32 __x) throw(); extern _Float32 __acoshf32(_Float32 __x) throw(); +# 87 +extern _Float32 asinhf32(_Float32 __x) throw(); extern _Float32 __asinhf32(_Float32 __x) throw(); +# 89 +extern _Float32 atanhf32(_Float32 __x) throw(); extern _Float32 __atanhf32(_Float32 __x) throw(); +# 95 +extern _Float32 expf32(_Float32 __x) throw(); extern _Float32 __expf32(_Float32 __x) throw(); +# 98 +extern _Float32 frexpf32(_Float32 __x, int * __exponent) throw(); extern _Float32 __frexpf32(_Float32 __x, int * __exponent) throw(); +# 101 +extern _Float32 ldexpf32(_Float32 __x, int __exponent) throw(); extern _Float32 __ldexpf32(_Float32 __x, int __exponent) throw(); +# 104 +extern _Float32 logf32(_Float32 __x) throw(); extern _Float32 __logf32(_Float32 __x) throw(); +# 107 +extern _Float32 log10f32(_Float32 __x) throw(); extern _Float32 __log10f32(_Float32 __x) throw(); +# 110 +extern _Float32 modff32(_Float32 __x, _Float32 * __iptr) throw(); extern _Float32 __modff32(_Float32 __x, _Float32 * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern _Float32 exp10f32(_Float32 __x) throw(); extern _Float32 __exp10f32(_Float32 __x) throw(); +# 119 +extern _Float32 expm1f32(_Float32 __x) throw(); extern _Float32 __expm1f32(_Float32 __x) throw(); +# 122 +extern _Float32 log1pf32(_Float32 __x) throw(); extern _Float32 __log1pf32(_Float32 __x) throw(); +# 125 +extern _Float32 logbf32(_Float32 __x) throw(); extern _Float32 __logbf32(_Float32 __x) throw(); +# 130 +extern _Float32 exp2f32(_Float32 __x) throw(); extern _Float32 __exp2f32(_Float32 __x) throw(); +# 133 +extern _Float32 log2f32(_Float32 __x) throw(); extern _Float32 __log2f32(_Float32 __x) throw(); +# 140 +extern _Float32 powf32(_Float32 __x, _Float32 __y) throw(); extern _Float32 __powf32(_Float32 __x, _Float32 __y) throw(); +# 143 +extern _Float32 sqrtf32(_Float32 __x) throw(); extern _Float32 __sqrtf32(_Float32 __x) throw(); +# 147 +extern _Float32 hypotf32(_Float32 __x, _Float32 __y) throw(); extern _Float32 __hypotf32(_Float32 __x, _Float32 __y) throw(); +# 152 +extern _Float32 cbrtf32(_Float32 __x) throw(); extern _Float32 __cbrtf32(_Float32 __x) throw(); +# 159 +extern _Float32 ceilf32(_Float32 __x) throw() __attribute((const)); extern _Float32 __ceilf32(_Float32 __x) throw() __attribute((const)); +# 162 +extern _Float32 fabsf32(_Float32 __x) throw() __attribute((const)); extern _Float32 __fabsf32(_Float32 __x) throw() __attribute((const)); +# 165 +extern _Float32 floorf32(_Float32 __x) throw() __attribute((const)); extern _Float32 __floorf32(_Float32 __x) throw() __attribute((const)); +# 168 +extern _Float32 fmodf32(_Float32 __x, _Float32 __y) throw(); extern _Float32 __fmodf32(_Float32 __x, _Float32 __y) throw(); +# 196 "/usr/include/bits/mathcalls.h" 3 +extern _Float32 copysignf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); extern _Float32 __copysignf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); +# 201 +extern _Float32 nanf32(const char * __tagb) throw(); extern _Float32 __nanf32(const char * __tagb) throw(); +# 217 "/usr/include/bits/mathcalls.h" 3 +extern _Float32 j0f32(_Float32) throw(); extern _Float32 __j0f32(_Float32) throw(); +# 218 +extern _Float32 j1f32(_Float32) throw(); extern _Float32 __j1f32(_Float32) throw(); +# 219 +extern _Float32 jnf32(int, _Float32) throw(); extern _Float32 __jnf32(int, _Float32) throw(); +# 220 +extern _Float32 y0f32(_Float32) throw(); extern _Float32 __y0f32(_Float32) throw(); +# 221 +extern _Float32 y1f32(_Float32) throw(); extern _Float32 __y1f32(_Float32) throw(); +# 222 +extern _Float32 ynf32(int, _Float32) throw(); extern _Float32 __ynf32(int, _Float32) throw(); +# 228 +extern _Float32 erff32(_Float32) throw(); extern _Float32 __erff32(_Float32) throw(); +# 229 +extern _Float32 erfcf32(_Float32) throw(); extern _Float32 __erfcf32(_Float32) throw(); +# 230 +extern _Float32 lgammaf32(_Float32) throw(); extern _Float32 __lgammaf32(_Float32) throw(); +# 235 +extern _Float32 tgammaf32(_Float32) throw(); extern _Float32 __tgammaf32(_Float32) throw(); +# 249 "/usr/include/bits/mathcalls.h" 3 +extern _Float32 lgammaf32_r(_Float32, int * __signgamp) throw(); extern _Float32 __lgammaf32_r(_Float32, int * __signgamp) throw(); +# 256 +extern _Float32 rintf32(_Float32 __x) throw(); extern _Float32 __rintf32(_Float32 __x) throw(); +# 259 +extern _Float32 nextafterf32(_Float32 __x, _Float32 __y) throw(); extern _Float32 __nextafterf32(_Float32 __x, _Float32 __y) throw(); +# 266 +extern _Float32 nextdownf32(_Float32 __x) throw(); extern _Float32 __nextdownf32(_Float32 __x) throw(); +# 268 +extern _Float32 nextupf32(_Float32 __x) throw(); extern _Float32 __nextupf32(_Float32 __x) throw(); +# 272 +extern _Float32 remainderf32(_Float32 __x, _Float32 __y) throw(); extern _Float32 __remainderf32(_Float32 __x, _Float32 __y) throw(); +# 276 +extern _Float32 scalbnf32(_Float32 __x, int __n) throw(); extern _Float32 __scalbnf32(_Float32 __x, int __n) throw(); +# 280 +extern int ilogbf32(_Float32 __x) throw(); extern int __ilogbf32(_Float32 __x) throw(); +# 285 +extern long llogbf32(_Float32 __x) throw(); extern long __llogbf32(_Float32 __x) throw(); +# 290 +extern _Float32 scalblnf32(_Float32 __x, long __n) throw(); extern _Float32 __scalblnf32(_Float32 __x, long __n) throw(); +# 294 +extern _Float32 nearbyintf32(_Float32 __x) throw(); extern _Float32 __nearbyintf32(_Float32 __x) throw(); +# 298 +extern _Float32 roundf32(_Float32 __x) throw() __attribute((const)); extern _Float32 __roundf32(_Float32 __x) throw() __attribute((const)); +# 302 +extern _Float32 truncf32(_Float32 __x) throw() __attribute((const)); extern _Float32 __truncf32(_Float32 __x) throw() __attribute((const)); +# 307 +extern _Float32 remquof32(_Float32 __x, _Float32 __y, int * __quo) throw(); extern _Float32 __remquof32(_Float32 __x, _Float32 __y, int * __quo) throw(); +# 314 +extern long lrintf32(_Float32 __x) throw(); extern long __lrintf32(_Float32 __x) throw(); +# 316 +__extension__ extern long long llrintf32(_Float32 __x) throw(); extern long long __llrintf32(_Float32 __x) throw(); +# 320 +extern long lroundf32(_Float32 __x) throw(); extern long __lroundf32(_Float32 __x) throw(); +# 322 +__extension__ extern long long llroundf32(_Float32 __x) throw(); extern long long __llroundf32(_Float32 __x) throw(); +# 326 +extern _Float32 fdimf32(_Float32 __x, _Float32 __y) throw(); extern _Float32 __fdimf32(_Float32 __x, _Float32 __y) throw(); +# 329 +extern _Float32 fmaxf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); extern _Float32 __fmaxf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); +# 332 +extern _Float32 fminf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); extern _Float32 __fminf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); +# 335 +extern _Float32 fmaf32(_Float32 __x, _Float32 __y, _Float32 __z) throw(); extern _Float32 __fmaf32(_Float32 __x, _Float32 __y, _Float32 __z) throw(); +# 340 +extern _Float32 roundevenf32(_Float32 __x) throw() __attribute((const)); extern _Float32 __roundevenf32(_Float32 __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfpf32(_Float32 __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpf32(_Float32 __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfpf32(_Float32 __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpf32(_Float32 __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpxf32(_Float32 __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpxf32(_Float32 __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpxf32(_Float32 __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpxf32(_Float32 __x, int __round, unsigned __width) throw(); +# 365 +extern _Float32 fmaxmagf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); extern _Float32 __fmaxmagf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); +# 368 +extern _Float32 fminmagf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); extern _Float32 __fminmagf32(_Float32 __x, _Float32 __y) throw() __attribute((const)); +# 371 +extern int totalorderf32(_Float32 __x, _Float32 __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermagf32(_Float32 __x, _Float32 __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalizef32(_Float32 * __cx, const _Float32 * __x) throw(); +# 382 +extern _Float32 getpayloadf32(const _Float32 * __x) throw(); extern _Float32 __getpayloadf32(const _Float32 * __x) throw(); +# 385 +extern int setpayloadf32(_Float32 * __x, _Float32 __payload) throw(); +# 388 +extern int setpayloadsigf32(_Float32 * __x, _Float32 __payload) throw(); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern _Float64 acosf64(_Float64 __x) throw(); extern _Float64 __acosf64(_Float64 __x) throw(); +# 55 +extern _Float64 asinf64(_Float64 __x) throw(); extern _Float64 __asinf64(_Float64 __x) throw(); +# 57 +extern _Float64 atanf64(_Float64 __x) throw(); extern _Float64 __atanf64(_Float64 __x) throw(); +# 59 +extern _Float64 atan2f64(_Float64 __y, _Float64 __x) throw(); extern _Float64 __atan2f64(_Float64 __y, _Float64 __x) throw(); +# 62 +extern _Float64 cosf64(_Float64 __x) throw(); extern _Float64 __cosf64(_Float64 __x) throw(); +# 64 +extern _Float64 sinf64(_Float64 __x) throw(); extern _Float64 __sinf64(_Float64 __x) throw(); +# 66 +extern _Float64 tanf64(_Float64 __x) throw(); extern _Float64 __tanf64(_Float64 __x) throw(); +# 71 +extern _Float64 coshf64(_Float64 __x) throw(); extern _Float64 __coshf64(_Float64 __x) throw(); +# 73 +extern _Float64 sinhf64(_Float64 __x) throw(); extern _Float64 __sinhf64(_Float64 __x) throw(); +# 75 +extern _Float64 tanhf64(_Float64 __x) throw(); extern _Float64 __tanhf64(_Float64 __x) throw(); +# 79 +extern void sincosf64(_Float64 __x, _Float64 * __sinx, _Float64 * __cosx) throw(); extern void __sincosf64(_Float64 __x, _Float64 * __sinx, _Float64 * __cosx) throw(); +# 85 +extern _Float64 acoshf64(_Float64 __x) throw(); extern _Float64 __acoshf64(_Float64 __x) throw(); +# 87 +extern _Float64 asinhf64(_Float64 __x) throw(); extern _Float64 __asinhf64(_Float64 __x) throw(); +# 89 +extern _Float64 atanhf64(_Float64 __x) throw(); extern _Float64 __atanhf64(_Float64 __x) throw(); +# 95 +extern _Float64 expf64(_Float64 __x) throw(); extern _Float64 __expf64(_Float64 __x) throw(); +# 98 +extern _Float64 frexpf64(_Float64 __x, int * __exponent) throw(); extern _Float64 __frexpf64(_Float64 __x, int * __exponent) throw(); +# 101 +extern _Float64 ldexpf64(_Float64 __x, int __exponent) throw(); extern _Float64 __ldexpf64(_Float64 __x, int __exponent) throw(); +# 104 +extern _Float64 logf64(_Float64 __x) throw(); extern _Float64 __logf64(_Float64 __x) throw(); +# 107 +extern _Float64 log10f64(_Float64 __x) throw(); extern _Float64 __log10f64(_Float64 __x) throw(); +# 110 +extern _Float64 modff64(_Float64 __x, _Float64 * __iptr) throw(); extern _Float64 __modff64(_Float64 __x, _Float64 * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern _Float64 exp10f64(_Float64 __x) throw(); extern _Float64 __exp10f64(_Float64 __x) throw(); +# 119 +extern _Float64 expm1f64(_Float64 __x) throw(); extern _Float64 __expm1f64(_Float64 __x) throw(); +# 122 +extern _Float64 log1pf64(_Float64 __x) throw(); extern _Float64 __log1pf64(_Float64 __x) throw(); +# 125 +extern _Float64 logbf64(_Float64 __x) throw(); extern _Float64 __logbf64(_Float64 __x) throw(); +# 130 +extern _Float64 exp2f64(_Float64 __x) throw(); extern _Float64 __exp2f64(_Float64 __x) throw(); +# 133 +extern _Float64 log2f64(_Float64 __x) throw(); extern _Float64 __log2f64(_Float64 __x) throw(); +# 140 +extern _Float64 powf64(_Float64 __x, _Float64 __y) throw(); extern _Float64 __powf64(_Float64 __x, _Float64 __y) throw(); +# 143 +extern _Float64 sqrtf64(_Float64 __x) throw(); extern _Float64 __sqrtf64(_Float64 __x) throw(); +# 147 +extern _Float64 hypotf64(_Float64 __x, _Float64 __y) throw(); extern _Float64 __hypotf64(_Float64 __x, _Float64 __y) throw(); +# 152 +extern _Float64 cbrtf64(_Float64 __x) throw(); extern _Float64 __cbrtf64(_Float64 __x) throw(); +# 159 +extern _Float64 ceilf64(_Float64 __x) throw() __attribute((const)); extern _Float64 __ceilf64(_Float64 __x) throw() __attribute((const)); +# 162 +extern _Float64 fabsf64(_Float64 __x) throw() __attribute((const)); extern _Float64 __fabsf64(_Float64 __x) throw() __attribute((const)); +# 165 +extern _Float64 floorf64(_Float64 __x) throw() __attribute((const)); extern _Float64 __floorf64(_Float64 __x) throw() __attribute((const)); +# 168 +extern _Float64 fmodf64(_Float64 __x, _Float64 __y) throw(); extern _Float64 __fmodf64(_Float64 __x, _Float64 __y) throw(); +# 196 "/usr/include/bits/mathcalls.h" 3 +extern _Float64 copysignf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); extern _Float64 __copysignf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); +# 201 +extern _Float64 nanf64(const char * __tagb) throw(); extern _Float64 __nanf64(const char * __tagb) throw(); +# 217 "/usr/include/bits/mathcalls.h" 3 +extern _Float64 j0f64(_Float64) throw(); extern _Float64 __j0f64(_Float64) throw(); +# 218 +extern _Float64 j1f64(_Float64) throw(); extern _Float64 __j1f64(_Float64) throw(); +# 219 +extern _Float64 jnf64(int, _Float64) throw(); extern _Float64 __jnf64(int, _Float64) throw(); +# 220 +extern _Float64 y0f64(_Float64) throw(); extern _Float64 __y0f64(_Float64) throw(); +# 221 +extern _Float64 y1f64(_Float64) throw(); extern _Float64 __y1f64(_Float64) throw(); +# 222 +extern _Float64 ynf64(int, _Float64) throw(); extern _Float64 __ynf64(int, _Float64) throw(); +# 228 +extern _Float64 erff64(_Float64) throw(); extern _Float64 __erff64(_Float64) throw(); +# 229 +extern _Float64 erfcf64(_Float64) throw(); extern _Float64 __erfcf64(_Float64) throw(); +# 230 +extern _Float64 lgammaf64(_Float64) throw(); extern _Float64 __lgammaf64(_Float64) throw(); +# 235 +extern _Float64 tgammaf64(_Float64) throw(); extern _Float64 __tgammaf64(_Float64) throw(); +# 249 "/usr/include/bits/mathcalls.h" 3 +extern _Float64 lgammaf64_r(_Float64, int * __signgamp) throw(); extern _Float64 __lgammaf64_r(_Float64, int * __signgamp) throw(); +# 256 +extern _Float64 rintf64(_Float64 __x) throw(); extern _Float64 __rintf64(_Float64 __x) throw(); +# 259 +extern _Float64 nextafterf64(_Float64 __x, _Float64 __y) throw(); extern _Float64 __nextafterf64(_Float64 __x, _Float64 __y) throw(); +# 266 +extern _Float64 nextdownf64(_Float64 __x) throw(); extern _Float64 __nextdownf64(_Float64 __x) throw(); +# 268 +extern _Float64 nextupf64(_Float64 __x) throw(); extern _Float64 __nextupf64(_Float64 __x) throw(); +# 272 +extern _Float64 remainderf64(_Float64 __x, _Float64 __y) throw(); extern _Float64 __remainderf64(_Float64 __x, _Float64 __y) throw(); +# 276 +extern _Float64 scalbnf64(_Float64 __x, int __n) throw(); extern _Float64 __scalbnf64(_Float64 __x, int __n) throw(); +# 280 +extern int ilogbf64(_Float64 __x) throw(); extern int __ilogbf64(_Float64 __x) throw(); +# 285 +extern long llogbf64(_Float64 __x) throw(); extern long __llogbf64(_Float64 __x) throw(); +# 290 +extern _Float64 scalblnf64(_Float64 __x, long __n) throw(); extern _Float64 __scalblnf64(_Float64 __x, long __n) throw(); +# 294 +extern _Float64 nearbyintf64(_Float64 __x) throw(); extern _Float64 __nearbyintf64(_Float64 __x) throw(); +# 298 +extern _Float64 roundf64(_Float64 __x) throw() __attribute((const)); extern _Float64 __roundf64(_Float64 __x) throw() __attribute((const)); +# 302 +extern _Float64 truncf64(_Float64 __x) throw() __attribute((const)); extern _Float64 __truncf64(_Float64 __x) throw() __attribute((const)); +# 307 +extern _Float64 remquof64(_Float64 __x, _Float64 __y, int * __quo) throw(); extern _Float64 __remquof64(_Float64 __x, _Float64 __y, int * __quo) throw(); +# 314 +extern long lrintf64(_Float64 __x) throw(); extern long __lrintf64(_Float64 __x) throw(); +# 316 +__extension__ extern long long llrintf64(_Float64 __x) throw(); extern long long __llrintf64(_Float64 __x) throw(); +# 320 +extern long lroundf64(_Float64 __x) throw(); extern long __lroundf64(_Float64 __x) throw(); +# 322 +__extension__ extern long long llroundf64(_Float64 __x) throw(); extern long long __llroundf64(_Float64 __x) throw(); +# 326 +extern _Float64 fdimf64(_Float64 __x, _Float64 __y) throw(); extern _Float64 __fdimf64(_Float64 __x, _Float64 __y) throw(); +# 329 +extern _Float64 fmaxf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); extern _Float64 __fmaxf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); +# 332 +extern _Float64 fminf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); extern _Float64 __fminf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); +# 335 +extern _Float64 fmaf64(_Float64 __x, _Float64 __y, _Float64 __z) throw(); extern _Float64 __fmaf64(_Float64 __x, _Float64 __y, _Float64 __z) throw(); +# 340 +extern _Float64 roundevenf64(_Float64 __x) throw() __attribute((const)); extern _Float64 __roundevenf64(_Float64 __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfpf64(_Float64 __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpf64(_Float64 __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfpf64(_Float64 __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpf64(_Float64 __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpxf64(_Float64 __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpxf64(_Float64 __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpxf64(_Float64 __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpxf64(_Float64 __x, int __round, unsigned __width) throw(); +# 365 +extern _Float64 fmaxmagf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); extern _Float64 __fmaxmagf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); +# 368 +extern _Float64 fminmagf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); extern _Float64 __fminmagf64(_Float64 __x, _Float64 __y) throw() __attribute((const)); +# 371 +extern int totalorderf64(_Float64 __x, _Float64 __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermagf64(_Float64 __x, _Float64 __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalizef64(_Float64 * __cx, const _Float64 * __x) throw(); +# 382 +extern _Float64 getpayloadf64(const _Float64 * __x) throw(); extern _Float64 __getpayloadf64(const _Float64 * __x) throw(); +# 385 +extern int setpayloadf64(_Float64 * __x, _Float64 __payload) throw(); +# 388 +extern int setpayloadsigf64(_Float64 * __x, _Float64 __payload) throw(); +# 21 "/usr/include/bits/mathcalls-helper-functions.h" 3 +extern int __fpclassifyf128(_Float128 __value) throw() +# 22 + __attribute((const)); +# 25 +extern int __signbitf128(_Float128 __value) throw() +# 26 + __attribute((const)); +# 30 +extern int __isinff128(_Float128 __value) throw() __attribute((const)); +# 33 +extern int __finitef128(_Float128 __value) throw() __attribute((const)); +# 36 +extern int __isnanf128(_Float128 __value) throw() __attribute((const)); +# 39 +extern int __iseqsigf128(_Float128 __x, _Float128 __y) throw(); +# 42 +extern int __issignalingf128(_Float128 __value) throw() +# 43 + __attribute((const)); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern _Float128 acosf128(_Float128 __x) throw(); extern _Float128 __acosf128(_Float128 __x) throw(); +# 55 +extern _Float128 asinf128(_Float128 __x) throw(); extern _Float128 __asinf128(_Float128 __x) throw(); +# 57 +extern _Float128 atanf128(_Float128 __x) throw(); extern _Float128 __atanf128(_Float128 __x) throw(); +# 59 +extern _Float128 atan2f128(_Float128 __y, _Float128 __x) throw(); extern _Float128 __atan2f128(_Float128 __y, _Float128 __x) throw(); +# 62 +extern _Float128 cosf128(_Float128 __x) throw(); extern _Float128 __cosf128(_Float128 __x) throw(); +# 64 +extern _Float128 sinf128(_Float128 __x) throw(); extern _Float128 __sinf128(_Float128 __x) throw(); +# 66 +extern _Float128 tanf128(_Float128 __x) throw(); extern _Float128 __tanf128(_Float128 __x) throw(); +# 71 +extern _Float128 coshf128(_Float128 __x) throw(); extern _Float128 __coshf128(_Float128 __x) throw(); +# 73 +extern _Float128 sinhf128(_Float128 __x) throw(); extern _Float128 __sinhf128(_Float128 __x) throw(); +# 75 +extern _Float128 tanhf128(_Float128 __x) throw(); extern _Float128 __tanhf128(_Float128 __x) throw(); +# 79 +extern void sincosf128(_Float128 __x, _Float128 * __sinx, _Float128 * __cosx) throw(); extern void __sincosf128(_Float128 __x, _Float128 * __sinx, _Float128 * __cosx) throw(); +# 85 +extern _Float128 acoshf128(_Float128 __x) throw(); extern _Float128 __acoshf128(_Float128 __x) throw(); +# 87 +extern _Float128 asinhf128(_Float128 __x) throw(); extern _Float128 __asinhf128(_Float128 __x) throw(); +# 89 +extern _Float128 atanhf128(_Float128 __x) throw(); extern _Float128 __atanhf128(_Float128 __x) throw(); +# 95 +extern _Float128 expf128(_Float128 __x) throw(); extern _Float128 __expf128(_Float128 __x) throw(); +# 98 +extern _Float128 frexpf128(_Float128 __x, int * __exponent) throw(); extern _Float128 __frexpf128(_Float128 __x, int * __exponent) throw(); +# 101 +extern _Float128 ldexpf128(_Float128 __x, int __exponent) throw(); extern _Float128 __ldexpf128(_Float128 __x, int __exponent) throw(); +# 104 +extern _Float128 logf128(_Float128 __x) throw(); extern _Float128 __logf128(_Float128 __x) throw(); +# 107 +extern _Float128 log10f128(_Float128 __x) throw(); extern _Float128 __log10f128(_Float128 __x) throw(); +# 110 +extern _Float128 modff128(_Float128 __x, _Float128 * __iptr) throw(); extern _Float128 __modff128(_Float128 __x, _Float128 * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern _Float128 exp10f128(_Float128 __x) throw(); extern _Float128 __exp10f128(_Float128 __x) throw(); +# 119 +extern _Float128 expm1f128(_Float128 __x) throw(); extern _Float128 __expm1f128(_Float128 __x) throw(); +# 122 +extern _Float128 log1pf128(_Float128 __x) throw(); extern _Float128 __log1pf128(_Float128 __x) throw(); +# 125 +extern _Float128 logbf128(_Float128 __x) throw(); extern _Float128 __logbf128(_Float128 __x) throw(); +# 130 +extern _Float128 exp2f128(_Float128 __x) throw(); extern _Float128 __exp2f128(_Float128 __x) throw(); +# 133 +extern _Float128 log2f128(_Float128 __x) throw(); extern _Float128 __log2f128(_Float128 __x) throw(); +# 140 +extern _Float128 powf128(_Float128 __x, _Float128 __y) throw(); extern _Float128 __powf128(_Float128 __x, _Float128 __y) throw(); +# 143 +extern _Float128 sqrtf128(_Float128 __x) throw(); extern _Float128 __sqrtf128(_Float128 __x) throw(); +# 147 +extern _Float128 hypotf128(_Float128 __x, _Float128 __y) throw(); extern _Float128 __hypotf128(_Float128 __x, _Float128 __y) throw(); +# 152 +extern _Float128 cbrtf128(_Float128 __x) throw(); extern _Float128 __cbrtf128(_Float128 __x) throw(); +# 159 +extern _Float128 ceilf128(_Float128 __x) throw() __attribute((const)); extern _Float128 __ceilf128(_Float128 __x) throw() __attribute((const)); +# 162 +extern _Float128 fabsf128(_Float128 __x) throw() __attribute((const)); extern _Float128 __fabsf128(_Float128 __x) throw() __attribute((const)); +# 165 +extern _Float128 floorf128(_Float128 __x) throw() __attribute((const)); extern _Float128 __floorf128(_Float128 __x) throw() __attribute((const)); +# 168 +extern _Float128 fmodf128(_Float128 __x, _Float128 __y) throw(); extern _Float128 __fmodf128(_Float128 __x, _Float128 __y) throw(); +# 196 "/usr/include/bits/mathcalls.h" 3 +extern _Float128 copysignf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); extern _Float128 __copysignf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); +# 201 +extern _Float128 nanf128(const char * __tagb) throw(); extern _Float128 __nanf128(const char * __tagb) throw(); +# 217 "/usr/include/bits/mathcalls.h" 3 +extern _Float128 j0f128(_Float128) throw(); extern _Float128 __j0f128(_Float128) throw(); +# 218 +extern _Float128 j1f128(_Float128) throw(); extern _Float128 __j1f128(_Float128) throw(); +# 219 +extern _Float128 jnf128(int, _Float128) throw(); extern _Float128 __jnf128(int, _Float128) throw(); +# 220 +extern _Float128 y0f128(_Float128) throw(); extern _Float128 __y0f128(_Float128) throw(); +# 221 +extern _Float128 y1f128(_Float128) throw(); extern _Float128 __y1f128(_Float128) throw(); +# 222 +extern _Float128 ynf128(int, _Float128) throw(); extern _Float128 __ynf128(int, _Float128) throw(); +# 228 +extern _Float128 erff128(_Float128) throw(); extern _Float128 __erff128(_Float128) throw(); +# 229 +extern _Float128 erfcf128(_Float128) throw(); extern _Float128 __erfcf128(_Float128) throw(); +# 230 +extern _Float128 lgammaf128(_Float128) throw(); extern _Float128 __lgammaf128(_Float128) throw(); +# 235 +extern _Float128 tgammaf128(_Float128) throw(); extern _Float128 __tgammaf128(_Float128) throw(); +# 249 "/usr/include/bits/mathcalls.h" 3 +extern _Float128 lgammaf128_r(_Float128, int * __signgamp) throw(); extern _Float128 __lgammaf128_r(_Float128, int * __signgamp) throw(); +# 256 +extern _Float128 rintf128(_Float128 __x) throw(); extern _Float128 __rintf128(_Float128 __x) throw(); +# 259 +extern _Float128 nextafterf128(_Float128 __x, _Float128 __y) throw(); extern _Float128 __nextafterf128(_Float128 __x, _Float128 __y) throw(); +# 266 +extern _Float128 nextdownf128(_Float128 __x) throw(); extern _Float128 __nextdownf128(_Float128 __x) throw(); +# 268 +extern _Float128 nextupf128(_Float128 __x) throw(); extern _Float128 __nextupf128(_Float128 __x) throw(); +# 272 +extern _Float128 remainderf128(_Float128 __x, _Float128 __y) throw(); extern _Float128 __remainderf128(_Float128 __x, _Float128 __y) throw(); +# 276 +extern _Float128 scalbnf128(_Float128 __x, int __n) throw(); extern _Float128 __scalbnf128(_Float128 __x, int __n) throw(); +# 280 +extern int ilogbf128(_Float128 __x) throw(); extern int __ilogbf128(_Float128 __x) throw(); +# 285 +extern long llogbf128(_Float128 __x) throw(); extern long __llogbf128(_Float128 __x) throw(); +# 290 +extern _Float128 scalblnf128(_Float128 __x, long __n) throw(); extern _Float128 __scalblnf128(_Float128 __x, long __n) throw(); +# 294 +extern _Float128 nearbyintf128(_Float128 __x) throw(); extern _Float128 __nearbyintf128(_Float128 __x) throw(); +# 298 +extern _Float128 roundf128(_Float128 __x) throw() __attribute((const)); extern _Float128 __roundf128(_Float128 __x) throw() __attribute((const)); +# 302 +extern _Float128 truncf128(_Float128 __x) throw() __attribute((const)); extern _Float128 __truncf128(_Float128 __x) throw() __attribute((const)); +# 307 +extern _Float128 remquof128(_Float128 __x, _Float128 __y, int * __quo) throw(); extern _Float128 __remquof128(_Float128 __x, _Float128 __y, int * __quo) throw(); +# 314 +extern long lrintf128(_Float128 __x) throw(); extern long __lrintf128(_Float128 __x) throw(); +# 316 +__extension__ extern long long llrintf128(_Float128 __x) throw(); extern long long __llrintf128(_Float128 __x) throw(); +# 320 +extern long lroundf128(_Float128 __x) throw(); extern long __lroundf128(_Float128 __x) throw(); +# 322 +__extension__ extern long long llroundf128(_Float128 __x) throw(); extern long long __llroundf128(_Float128 __x) throw(); +# 326 +extern _Float128 fdimf128(_Float128 __x, _Float128 __y) throw(); extern _Float128 __fdimf128(_Float128 __x, _Float128 __y) throw(); +# 329 +extern _Float128 fmaxf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); extern _Float128 __fmaxf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); +# 332 +extern _Float128 fminf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); extern _Float128 __fminf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); +# 335 +extern _Float128 fmaf128(_Float128 __x, _Float128 __y, _Float128 __z) throw(); extern _Float128 __fmaf128(_Float128 __x, _Float128 __y, _Float128 __z) throw(); +# 340 +extern _Float128 roundevenf128(_Float128 __x) throw() __attribute((const)); extern _Float128 __roundevenf128(_Float128 __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfpf128(_Float128 __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpf128(_Float128 __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfpf128(_Float128 __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpf128(_Float128 __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpxf128(_Float128 __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpxf128(_Float128 __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpxf128(_Float128 __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpxf128(_Float128 __x, int __round, unsigned __width) throw(); +# 365 +extern _Float128 fmaxmagf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); extern _Float128 __fmaxmagf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); +# 368 +extern _Float128 fminmagf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); extern _Float128 __fminmagf128(_Float128 __x, _Float128 __y) throw() __attribute((const)); +# 371 +extern int totalorderf128(_Float128 __x, _Float128 __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermagf128(_Float128 __x, _Float128 __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalizef128(_Float128 * __cx, const _Float128 * __x) throw(); +# 382 +extern _Float128 getpayloadf128(const _Float128 * __x) throw(); extern _Float128 __getpayloadf128(const _Float128 * __x) throw(); +# 385 +extern int setpayloadf128(_Float128 * __x, _Float128 __payload) throw(); +# 388 +extern int setpayloadsigf128(_Float128 * __x, _Float128 __payload) throw(); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern _Float32x acosf32x(_Float32x __x) throw(); extern _Float32x __acosf32x(_Float32x __x) throw(); +# 55 +extern _Float32x asinf32x(_Float32x __x) throw(); extern _Float32x __asinf32x(_Float32x __x) throw(); +# 57 +extern _Float32x atanf32x(_Float32x __x) throw(); extern _Float32x __atanf32x(_Float32x __x) throw(); +# 59 +extern _Float32x atan2f32x(_Float32x __y, _Float32x __x) throw(); extern _Float32x __atan2f32x(_Float32x __y, _Float32x __x) throw(); +# 62 +extern _Float32x cosf32x(_Float32x __x) throw(); extern _Float32x __cosf32x(_Float32x __x) throw(); +# 64 +extern _Float32x sinf32x(_Float32x __x) throw(); extern _Float32x __sinf32x(_Float32x __x) throw(); +# 66 +extern _Float32x tanf32x(_Float32x __x) throw(); extern _Float32x __tanf32x(_Float32x __x) throw(); +# 71 +extern _Float32x coshf32x(_Float32x __x) throw(); extern _Float32x __coshf32x(_Float32x __x) throw(); +# 73 +extern _Float32x sinhf32x(_Float32x __x) throw(); extern _Float32x __sinhf32x(_Float32x __x) throw(); +# 75 +extern _Float32x tanhf32x(_Float32x __x) throw(); extern _Float32x __tanhf32x(_Float32x __x) throw(); +# 79 +extern void sincosf32x(_Float32x __x, _Float32x * __sinx, _Float32x * __cosx) throw(); extern void __sincosf32x(_Float32x __x, _Float32x * __sinx, _Float32x * __cosx) throw(); +# 85 +extern _Float32x acoshf32x(_Float32x __x) throw(); extern _Float32x __acoshf32x(_Float32x __x) throw(); +# 87 +extern _Float32x asinhf32x(_Float32x __x) throw(); extern _Float32x __asinhf32x(_Float32x __x) throw(); +# 89 +extern _Float32x atanhf32x(_Float32x __x) throw(); extern _Float32x __atanhf32x(_Float32x __x) throw(); +# 95 +extern _Float32x expf32x(_Float32x __x) throw(); extern _Float32x __expf32x(_Float32x __x) throw(); +# 98 +extern _Float32x frexpf32x(_Float32x __x, int * __exponent) throw(); extern _Float32x __frexpf32x(_Float32x __x, int * __exponent) throw(); +# 101 +extern _Float32x ldexpf32x(_Float32x __x, int __exponent) throw(); extern _Float32x __ldexpf32x(_Float32x __x, int __exponent) throw(); +# 104 +extern _Float32x logf32x(_Float32x __x) throw(); extern _Float32x __logf32x(_Float32x __x) throw(); +# 107 +extern _Float32x log10f32x(_Float32x __x) throw(); extern _Float32x __log10f32x(_Float32x __x) throw(); +# 110 +extern _Float32x modff32x(_Float32x __x, _Float32x * __iptr) throw(); extern _Float32x __modff32x(_Float32x __x, _Float32x * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern _Float32x exp10f32x(_Float32x __x) throw(); extern _Float32x __exp10f32x(_Float32x __x) throw(); +# 119 +extern _Float32x expm1f32x(_Float32x __x) throw(); extern _Float32x __expm1f32x(_Float32x __x) throw(); +# 122 +extern _Float32x log1pf32x(_Float32x __x) throw(); extern _Float32x __log1pf32x(_Float32x __x) throw(); +# 125 +extern _Float32x logbf32x(_Float32x __x) throw(); extern _Float32x __logbf32x(_Float32x __x) throw(); +# 130 +extern _Float32x exp2f32x(_Float32x __x) throw(); extern _Float32x __exp2f32x(_Float32x __x) throw(); +# 133 +extern _Float32x log2f32x(_Float32x __x) throw(); extern _Float32x __log2f32x(_Float32x __x) throw(); +# 140 +extern _Float32x powf32x(_Float32x __x, _Float32x __y) throw(); extern _Float32x __powf32x(_Float32x __x, _Float32x __y) throw(); +# 143 +extern _Float32x sqrtf32x(_Float32x __x) throw(); extern _Float32x __sqrtf32x(_Float32x __x) throw(); +# 147 +extern _Float32x hypotf32x(_Float32x __x, _Float32x __y) throw(); extern _Float32x __hypotf32x(_Float32x __x, _Float32x __y) throw(); +# 152 +extern _Float32x cbrtf32x(_Float32x __x) throw(); extern _Float32x __cbrtf32x(_Float32x __x) throw(); +# 159 +extern _Float32x ceilf32x(_Float32x __x) throw() __attribute((const)); extern _Float32x __ceilf32x(_Float32x __x) throw() __attribute((const)); +# 162 +extern _Float32x fabsf32x(_Float32x __x) throw() __attribute((const)); extern _Float32x __fabsf32x(_Float32x __x) throw() __attribute((const)); +# 165 +extern _Float32x floorf32x(_Float32x __x) throw() __attribute((const)); extern _Float32x __floorf32x(_Float32x __x) throw() __attribute((const)); +# 168 +extern _Float32x fmodf32x(_Float32x __x, _Float32x __y) throw(); extern _Float32x __fmodf32x(_Float32x __x, _Float32x __y) throw(); +# 196 "/usr/include/bits/mathcalls.h" 3 +extern _Float32x copysignf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); extern _Float32x __copysignf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); +# 201 +extern _Float32x nanf32x(const char * __tagb) throw(); extern _Float32x __nanf32x(const char * __tagb) throw(); +# 217 "/usr/include/bits/mathcalls.h" 3 +extern _Float32x j0f32x(_Float32x) throw(); extern _Float32x __j0f32x(_Float32x) throw(); +# 218 +extern _Float32x j1f32x(_Float32x) throw(); extern _Float32x __j1f32x(_Float32x) throw(); +# 219 +extern _Float32x jnf32x(int, _Float32x) throw(); extern _Float32x __jnf32x(int, _Float32x) throw(); +# 220 +extern _Float32x y0f32x(_Float32x) throw(); extern _Float32x __y0f32x(_Float32x) throw(); +# 221 +extern _Float32x y1f32x(_Float32x) throw(); extern _Float32x __y1f32x(_Float32x) throw(); +# 222 +extern _Float32x ynf32x(int, _Float32x) throw(); extern _Float32x __ynf32x(int, _Float32x) throw(); +# 228 +extern _Float32x erff32x(_Float32x) throw(); extern _Float32x __erff32x(_Float32x) throw(); +# 229 +extern _Float32x erfcf32x(_Float32x) throw(); extern _Float32x __erfcf32x(_Float32x) throw(); +# 230 +extern _Float32x lgammaf32x(_Float32x) throw(); extern _Float32x __lgammaf32x(_Float32x) throw(); +# 235 +extern _Float32x tgammaf32x(_Float32x) throw(); extern _Float32x __tgammaf32x(_Float32x) throw(); +# 249 "/usr/include/bits/mathcalls.h" 3 +extern _Float32x lgammaf32x_r(_Float32x, int * __signgamp) throw(); extern _Float32x __lgammaf32x_r(_Float32x, int * __signgamp) throw(); +# 256 +extern _Float32x rintf32x(_Float32x __x) throw(); extern _Float32x __rintf32x(_Float32x __x) throw(); +# 259 +extern _Float32x nextafterf32x(_Float32x __x, _Float32x __y) throw(); extern _Float32x __nextafterf32x(_Float32x __x, _Float32x __y) throw(); +# 266 +extern _Float32x nextdownf32x(_Float32x __x) throw(); extern _Float32x __nextdownf32x(_Float32x __x) throw(); +# 268 +extern _Float32x nextupf32x(_Float32x __x) throw(); extern _Float32x __nextupf32x(_Float32x __x) throw(); +# 272 +extern _Float32x remainderf32x(_Float32x __x, _Float32x __y) throw(); extern _Float32x __remainderf32x(_Float32x __x, _Float32x __y) throw(); +# 276 +extern _Float32x scalbnf32x(_Float32x __x, int __n) throw(); extern _Float32x __scalbnf32x(_Float32x __x, int __n) throw(); +# 280 +extern int ilogbf32x(_Float32x __x) throw(); extern int __ilogbf32x(_Float32x __x) throw(); +# 285 +extern long llogbf32x(_Float32x __x) throw(); extern long __llogbf32x(_Float32x __x) throw(); +# 290 +extern _Float32x scalblnf32x(_Float32x __x, long __n) throw(); extern _Float32x __scalblnf32x(_Float32x __x, long __n) throw(); +# 294 +extern _Float32x nearbyintf32x(_Float32x __x) throw(); extern _Float32x __nearbyintf32x(_Float32x __x) throw(); +# 298 +extern _Float32x roundf32x(_Float32x __x) throw() __attribute((const)); extern _Float32x __roundf32x(_Float32x __x) throw() __attribute((const)); +# 302 +extern _Float32x truncf32x(_Float32x __x) throw() __attribute((const)); extern _Float32x __truncf32x(_Float32x __x) throw() __attribute((const)); +# 307 +extern _Float32x remquof32x(_Float32x __x, _Float32x __y, int * __quo) throw(); extern _Float32x __remquof32x(_Float32x __x, _Float32x __y, int * __quo) throw(); +# 314 +extern long lrintf32x(_Float32x __x) throw(); extern long __lrintf32x(_Float32x __x) throw(); +# 316 +__extension__ extern long long llrintf32x(_Float32x __x) throw(); extern long long __llrintf32x(_Float32x __x) throw(); +# 320 +extern long lroundf32x(_Float32x __x) throw(); extern long __lroundf32x(_Float32x __x) throw(); +# 322 +__extension__ extern long long llroundf32x(_Float32x __x) throw(); extern long long __llroundf32x(_Float32x __x) throw(); +# 326 +extern _Float32x fdimf32x(_Float32x __x, _Float32x __y) throw(); extern _Float32x __fdimf32x(_Float32x __x, _Float32x __y) throw(); +# 329 +extern _Float32x fmaxf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); extern _Float32x __fmaxf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); +# 332 +extern _Float32x fminf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); extern _Float32x __fminf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); +# 335 +extern _Float32x fmaf32x(_Float32x __x, _Float32x __y, _Float32x __z) throw(); extern _Float32x __fmaf32x(_Float32x __x, _Float32x __y, _Float32x __z) throw(); +# 340 +extern _Float32x roundevenf32x(_Float32x __x) throw() __attribute((const)); extern _Float32x __roundevenf32x(_Float32x __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfpf32x(_Float32x __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpf32x(_Float32x __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfpf32x(_Float32x __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpf32x(_Float32x __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpxf32x(_Float32x __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpxf32x(_Float32x __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpxf32x(_Float32x __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpxf32x(_Float32x __x, int __round, unsigned __width) throw(); +# 365 +extern _Float32x fmaxmagf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); extern _Float32x __fmaxmagf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); +# 368 +extern _Float32x fminmagf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); extern _Float32x __fminmagf32x(_Float32x __x, _Float32x __y) throw() __attribute((const)); +# 371 +extern int totalorderf32x(_Float32x __x, _Float32x __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermagf32x(_Float32x __x, _Float32x __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalizef32x(_Float32x * __cx, const _Float32x * __x) throw(); +# 382 +extern _Float32x getpayloadf32x(const _Float32x * __x) throw(); extern _Float32x __getpayloadf32x(const _Float32x * __x) throw(); +# 385 +extern int setpayloadf32x(_Float32x * __x, _Float32x __payload) throw(); +# 388 +extern int setpayloadsigf32x(_Float32x * __x, _Float32x __payload) throw(); +# 53 "/usr/include/bits/mathcalls.h" 3 +extern _Float64x acosf64x(_Float64x __x) throw(); extern _Float64x __acosf64x(_Float64x __x) throw(); +# 55 +extern _Float64x asinf64x(_Float64x __x) throw(); extern _Float64x __asinf64x(_Float64x __x) throw(); +# 57 +extern _Float64x atanf64x(_Float64x __x) throw(); extern _Float64x __atanf64x(_Float64x __x) throw(); +# 59 +extern _Float64x atan2f64x(_Float64x __y, _Float64x __x) throw(); extern _Float64x __atan2f64x(_Float64x __y, _Float64x __x) throw(); +# 62 +extern _Float64x cosf64x(_Float64x __x) throw(); extern _Float64x __cosf64x(_Float64x __x) throw(); +# 64 +extern _Float64x sinf64x(_Float64x __x) throw(); extern _Float64x __sinf64x(_Float64x __x) throw(); +# 66 +extern _Float64x tanf64x(_Float64x __x) throw(); extern _Float64x __tanf64x(_Float64x __x) throw(); +# 71 +extern _Float64x coshf64x(_Float64x __x) throw(); extern _Float64x __coshf64x(_Float64x __x) throw(); +# 73 +extern _Float64x sinhf64x(_Float64x __x) throw(); extern _Float64x __sinhf64x(_Float64x __x) throw(); +# 75 +extern _Float64x tanhf64x(_Float64x __x) throw(); extern _Float64x __tanhf64x(_Float64x __x) throw(); +# 79 +extern void sincosf64x(_Float64x __x, _Float64x * __sinx, _Float64x * __cosx) throw(); extern void __sincosf64x(_Float64x __x, _Float64x * __sinx, _Float64x * __cosx) throw(); +# 85 +extern _Float64x acoshf64x(_Float64x __x) throw(); extern _Float64x __acoshf64x(_Float64x __x) throw(); +# 87 +extern _Float64x asinhf64x(_Float64x __x) throw(); extern _Float64x __asinhf64x(_Float64x __x) throw(); +# 89 +extern _Float64x atanhf64x(_Float64x __x) throw(); extern _Float64x __atanhf64x(_Float64x __x) throw(); +# 95 +extern _Float64x expf64x(_Float64x __x) throw(); extern _Float64x __expf64x(_Float64x __x) throw(); +# 98 +extern _Float64x frexpf64x(_Float64x __x, int * __exponent) throw(); extern _Float64x __frexpf64x(_Float64x __x, int * __exponent) throw(); +# 101 +extern _Float64x ldexpf64x(_Float64x __x, int __exponent) throw(); extern _Float64x __ldexpf64x(_Float64x __x, int __exponent) throw(); +# 104 +extern _Float64x logf64x(_Float64x __x) throw(); extern _Float64x __logf64x(_Float64x __x) throw(); +# 107 +extern _Float64x log10f64x(_Float64x __x) throw(); extern _Float64x __log10f64x(_Float64x __x) throw(); +# 110 +extern _Float64x modff64x(_Float64x __x, _Float64x * __iptr) throw(); extern _Float64x __modff64x(_Float64x __x, _Float64x * __iptr) throw() __attribute((__nonnull__(2))); +# 114 +extern _Float64x exp10f64x(_Float64x __x) throw(); extern _Float64x __exp10f64x(_Float64x __x) throw(); +# 119 +extern _Float64x expm1f64x(_Float64x __x) throw(); extern _Float64x __expm1f64x(_Float64x __x) throw(); +# 122 +extern _Float64x log1pf64x(_Float64x __x) throw(); extern _Float64x __log1pf64x(_Float64x __x) throw(); +# 125 +extern _Float64x logbf64x(_Float64x __x) throw(); extern _Float64x __logbf64x(_Float64x __x) throw(); +# 130 +extern _Float64x exp2f64x(_Float64x __x) throw(); extern _Float64x __exp2f64x(_Float64x __x) throw(); +# 133 +extern _Float64x log2f64x(_Float64x __x) throw(); extern _Float64x __log2f64x(_Float64x __x) throw(); +# 140 +extern _Float64x powf64x(_Float64x __x, _Float64x __y) throw(); extern _Float64x __powf64x(_Float64x __x, _Float64x __y) throw(); +# 143 +extern _Float64x sqrtf64x(_Float64x __x) throw(); extern _Float64x __sqrtf64x(_Float64x __x) throw(); +# 147 +extern _Float64x hypotf64x(_Float64x __x, _Float64x __y) throw(); extern _Float64x __hypotf64x(_Float64x __x, _Float64x __y) throw(); +# 152 +extern _Float64x cbrtf64x(_Float64x __x) throw(); extern _Float64x __cbrtf64x(_Float64x __x) throw(); +# 159 +extern _Float64x ceilf64x(_Float64x __x) throw() __attribute((const)); extern _Float64x __ceilf64x(_Float64x __x) throw() __attribute((const)); +# 162 +extern _Float64x fabsf64x(_Float64x __x) throw() __attribute((const)); extern _Float64x __fabsf64x(_Float64x __x) throw() __attribute((const)); +# 165 +extern _Float64x floorf64x(_Float64x __x) throw() __attribute((const)); extern _Float64x __floorf64x(_Float64x __x) throw() __attribute((const)); +# 168 +extern _Float64x fmodf64x(_Float64x __x, _Float64x __y) throw(); extern _Float64x __fmodf64x(_Float64x __x, _Float64x __y) throw(); +# 196 "/usr/include/bits/mathcalls.h" 3 +extern _Float64x copysignf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); extern _Float64x __copysignf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); +# 201 +extern _Float64x nanf64x(const char * __tagb) throw(); extern _Float64x __nanf64x(const char * __tagb) throw(); +# 217 "/usr/include/bits/mathcalls.h" 3 +extern _Float64x j0f64x(_Float64x) throw(); extern _Float64x __j0f64x(_Float64x) throw(); +# 218 +extern _Float64x j1f64x(_Float64x) throw(); extern _Float64x __j1f64x(_Float64x) throw(); +# 219 +extern _Float64x jnf64x(int, _Float64x) throw(); extern _Float64x __jnf64x(int, _Float64x) throw(); +# 220 +extern _Float64x y0f64x(_Float64x) throw(); extern _Float64x __y0f64x(_Float64x) throw(); +# 221 +extern _Float64x y1f64x(_Float64x) throw(); extern _Float64x __y1f64x(_Float64x) throw(); +# 222 +extern _Float64x ynf64x(int, _Float64x) throw(); extern _Float64x __ynf64x(int, _Float64x) throw(); +# 228 +extern _Float64x erff64x(_Float64x) throw(); extern _Float64x __erff64x(_Float64x) throw(); +# 229 +extern _Float64x erfcf64x(_Float64x) throw(); extern _Float64x __erfcf64x(_Float64x) throw(); +# 230 +extern _Float64x lgammaf64x(_Float64x) throw(); extern _Float64x __lgammaf64x(_Float64x) throw(); +# 235 +extern _Float64x tgammaf64x(_Float64x) throw(); extern _Float64x __tgammaf64x(_Float64x) throw(); +# 249 "/usr/include/bits/mathcalls.h" 3 +extern _Float64x lgammaf64x_r(_Float64x, int * __signgamp) throw(); extern _Float64x __lgammaf64x_r(_Float64x, int * __signgamp) throw(); +# 256 +extern _Float64x rintf64x(_Float64x __x) throw(); extern _Float64x __rintf64x(_Float64x __x) throw(); +# 259 +extern _Float64x nextafterf64x(_Float64x __x, _Float64x __y) throw(); extern _Float64x __nextafterf64x(_Float64x __x, _Float64x __y) throw(); +# 266 +extern _Float64x nextdownf64x(_Float64x __x) throw(); extern _Float64x __nextdownf64x(_Float64x __x) throw(); +# 268 +extern _Float64x nextupf64x(_Float64x __x) throw(); extern _Float64x __nextupf64x(_Float64x __x) throw(); +# 272 +extern _Float64x remainderf64x(_Float64x __x, _Float64x __y) throw(); extern _Float64x __remainderf64x(_Float64x __x, _Float64x __y) throw(); +# 276 +extern _Float64x scalbnf64x(_Float64x __x, int __n) throw(); extern _Float64x __scalbnf64x(_Float64x __x, int __n) throw(); +# 280 +extern int ilogbf64x(_Float64x __x) throw(); extern int __ilogbf64x(_Float64x __x) throw(); +# 285 +extern long llogbf64x(_Float64x __x) throw(); extern long __llogbf64x(_Float64x __x) throw(); +# 290 +extern _Float64x scalblnf64x(_Float64x __x, long __n) throw(); extern _Float64x __scalblnf64x(_Float64x __x, long __n) throw(); +# 294 +extern _Float64x nearbyintf64x(_Float64x __x) throw(); extern _Float64x __nearbyintf64x(_Float64x __x) throw(); +# 298 +extern _Float64x roundf64x(_Float64x __x) throw() __attribute((const)); extern _Float64x __roundf64x(_Float64x __x) throw() __attribute((const)); +# 302 +extern _Float64x truncf64x(_Float64x __x) throw() __attribute((const)); extern _Float64x __truncf64x(_Float64x __x) throw() __attribute((const)); +# 307 +extern _Float64x remquof64x(_Float64x __x, _Float64x __y, int * __quo) throw(); extern _Float64x __remquof64x(_Float64x __x, _Float64x __y, int * __quo) throw(); +# 314 +extern long lrintf64x(_Float64x __x) throw(); extern long __lrintf64x(_Float64x __x) throw(); +# 316 +__extension__ extern long long llrintf64x(_Float64x __x) throw(); extern long long __llrintf64x(_Float64x __x) throw(); +# 320 +extern long lroundf64x(_Float64x __x) throw(); extern long __lroundf64x(_Float64x __x) throw(); +# 322 +__extension__ extern long long llroundf64x(_Float64x __x) throw(); extern long long __llroundf64x(_Float64x __x) throw(); +# 326 +extern _Float64x fdimf64x(_Float64x __x, _Float64x __y) throw(); extern _Float64x __fdimf64x(_Float64x __x, _Float64x __y) throw(); +# 329 +extern _Float64x fmaxf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); extern _Float64x __fmaxf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); +# 332 +extern _Float64x fminf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); extern _Float64x __fminf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); +# 335 +extern _Float64x fmaf64x(_Float64x __x, _Float64x __y, _Float64x __z) throw(); extern _Float64x __fmaf64x(_Float64x __x, _Float64x __y, _Float64x __z) throw(); +# 340 +extern _Float64x roundevenf64x(_Float64x __x) throw() __attribute((const)); extern _Float64x __roundevenf64x(_Float64x __x) throw() __attribute((const)); +# 344 +extern __intmax_t fromfpf64x(_Float64x __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpf64x(_Float64x __x, int __round, unsigned __width) throw(); +# 349 +extern __uintmax_t ufromfpf64x(_Float64x __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpf64x(_Float64x __x, int __round, unsigned __width) throw(); +# 355 +extern __intmax_t fromfpxf64x(_Float64x __x, int __round, unsigned __width) throw(); extern __intmax_t __fromfpxf64x(_Float64x __x, int __round, unsigned __width) throw(); +# 361 +extern __uintmax_t ufromfpxf64x(_Float64x __x, int __round, unsigned __width) throw(); extern __uintmax_t __ufromfpxf64x(_Float64x __x, int __round, unsigned __width) throw(); +# 365 +extern _Float64x fmaxmagf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); extern _Float64x __fmaxmagf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); +# 368 +extern _Float64x fminmagf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); extern _Float64x __fminmagf64x(_Float64x __x, _Float64x __y) throw() __attribute((const)); +# 371 +extern int totalorderf64x(_Float64x __x, _Float64x __y) throw() +# 372 + __attribute((const)); +# 375 +extern int totalordermagf64x(_Float64x __x, _Float64x __y) throw() +# 376 + __attribute((const)); +# 379 +extern int canonicalizef64x(_Float64x * __cx, const _Float64x * __x) throw(); +# 382 +extern _Float64x getpayloadf64x(const _Float64x * __x) throw(); extern _Float64x __getpayloadf64x(const _Float64x * __x) throw(); +# 385 +extern int setpayloadf64x(_Float64x * __x, _Float64x __payload) throw(); +# 388 +extern int setpayloadsigf64x(_Float64x * __x, _Float64x __payload) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern float fadd(double __x, double __y) throw(); +# 27 +extern float fdiv(double __x, double __y) throw(); +# 30 +extern float fmul(double __x, double __y) throw(); +# 33 +extern float fsub(double __x, double __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern float faddl(long double __x, long double __y) throw(); +# 27 +extern float fdivl(long double __x, long double __y) throw(); +# 30 +extern float fmull(long double __x, long double __y) throw(); +# 33 +extern float fsubl(long double __x, long double __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern double daddl(long double __x, long double __y) throw(); +# 27 +extern double ddivl(long double __x, long double __y) throw(); +# 30 +extern double dmull(long double __x, long double __y) throw(); +# 33 +extern double dsubl(long double __x, long double __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float32 f32addf32x(_Float32x __x, _Float32x __y) throw(); +# 27 +extern _Float32 f32divf32x(_Float32x __x, _Float32x __y) throw(); +# 30 +extern _Float32 f32mulf32x(_Float32x __x, _Float32x __y) throw(); +# 33 +extern _Float32 f32subf32x(_Float32x __x, _Float32x __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float32 f32addf64(_Float64 __x, _Float64 __y) throw(); +# 27 +extern _Float32 f32divf64(_Float64 __x, _Float64 __y) throw(); +# 30 +extern _Float32 f32mulf64(_Float64 __x, _Float64 __y) throw(); +# 33 +extern _Float32 f32subf64(_Float64 __x, _Float64 __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float32 f32addf64x(_Float64x __x, _Float64x __y) throw(); +# 27 +extern _Float32 f32divf64x(_Float64x __x, _Float64x __y) throw(); +# 30 +extern _Float32 f32mulf64x(_Float64x __x, _Float64x __y) throw(); +# 33 +extern _Float32 f32subf64x(_Float64x __x, _Float64x __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float32 f32addf128(_Float128 __x, _Float128 __y) throw(); +# 27 +extern _Float32 f32divf128(_Float128 __x, _Float128 __y) throw(); +# 30 +extern _Float32 f32mulf128(_Float128 __x, _Float128 __y) throw(); +# 33 +extern _Float32 f32subf128(_Float128 __x, _Float128 __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float32x f32xaddf64(_Float64 __x, _Float64 __y) throw(); +# 27 +extern _Float32x f32xdivf64(_Float64 __x, _Float64 __y) throw(); +# 30 +extern _Float32x f32xmulf64(_Float64 __x, _Float64 __y) throw(); +# 33 +extern _Float32x f32xsubf64(_Float64 __x, _Float64 __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float32x f32xaddf64x(_Float64x __x, _Float64x __y) throw(); +# 27 +extern _Float32x f32xdivf64x(_Float64x __x, _Float64x __y) throw(); +# 30 +extern _Float32x f32xmulf64x(_Float64x __x, _Float64x __y) throw(); +# 33 +extern _Float32x f32xsubf64x(_Float64x __x, _Float64x __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float32x f32xaddf128(_Float128 __x, _Float128 __y) throw(); +# 27 +extern _Float32x f32xdivf128(_Float128 __x, _Float128 __y) throw(); +# 30 +extern _Float32x f32xmulf128(_Float128 __x, _Float128 __y) throw(); +# 33 +extern _Float32x f32xsubf128(_Float128 __x, _Float128 __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float64 f64addf64x(_Float64x __x, _Float64x __y) throw(); +# 27 +extern _Float64 f64divf64x(_Float64x __x, _Float64x __y) throw(); +# 30 +extern _Float64 f64mulf64x(_Float64x __x, _Float64x __y) throw(); +# 33 +extern _Float64 f64subf64x(_Float64x __x, _Float64x __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float64 f64addf128(_Float128 __x, _Float128 __y) throw(); +# 27 +extern _Float64 f64divf128(_Float128 __x, _Float128 __y) throw(); +# 30 +extern _Float64 f64mulf128(_Float128 __x, _Float128 __y) throw(); +# 33 +extern _Float64 f64subf128(_Float128 __x, _Float128 __y) throw(); +# 24 "/usr/include/bits/mathcalls-narrow.h" 3 +extern _Float64x f64xaddf128(_Float128 __x, _Float128 __y) throw(); +# 27 +extern _Float64x f64xdivf128(_Float128 __x, _Float128 __y) throw(); +# 30 +extern _Float64x f64xmulf128(_Float128 __x, _Float128 __y) throw(); +# 33 +extern _Float64x f64xsubf128(_Float128 __x, _Float128 __y) throw(); +# 773 "/usr/include/math.h" 3 +extern int signgam; +# 854 "/usr/include/math.h" 3 +enum { +# 855 +FP_NAN, +# 858 +FP_INFINITE, +# 861 +FP_ZERO, +# 864 +FP_SUBNORMAL, +# 867 +FP_NORMAL +# 870 +}; +# 26 "/usr/include/bits/iscanonical.h" 3 +extern int __iscanonicall(long double __x) throw() +# 27 + __attribute((const)); +# 49 "/usr/include/bits/iscanonical.h" 3 +extern "C++" { +# 50 +inline int iscanonical(float __val) { return (((void)((__typeof__(__val))__val)), 1); } +# 51 +inline int iscanonical(double __val) { return (((void)((__typeof__(__val))__val)), 1); } +# 52 +inline int iscanonical(long double __val) { return __iscanonicall(__val); } +# 54 +inline int iscanonical(_Float128 __val) { return (((void)((__typeof__(__val))__val)), 1); } +# 56 +} +# 985 "/usr/include/math.h" 3 +extern "C++" { +# 986 +inline int issignaling(float __val) { return __issignalingf(__val); } +# 987 +inline int issignaling(double __val) { return __issignaling(__val); } +# 989 +inline int issignaling(long double __val) +# 990 +{ +# 994 +return __issignalingl(__val); +# 996 +} +# 1000 +inline int issignaling(_Float128 __val) { return __issignalingf128(__val); } +# 1002 +} +# 1016 "/usr/include/math.h" 3 +extern "C++" { +# 1047 "/usr/include/math.h" 3 +template< class __T> inline bool +# 1048 +iszero(__T __val) +# 1049 +{ +# 1050 +return __val == 0; +# 1051 +} +# 1053 +} +# 1498 "/usr/include/math.h" 3 +extern "C++" { +# 1499 +template< class > struct __iseqsig_type; +# 1501 +template<> struct __iseqsig_type< float> { +# 1503 +static int __call(float __x, float __y) throw() +# 1504 +{ +# 1505 +return __iseqsigf(__x, __y); +# 1506 +} +# 1507 +}; +# 1509 +template<> struct __iseqsig_type< double> { +# 1511 +static int __call(double __x, double __y) throw() +# 1512 +{ +# 1513 +return __iseqsig(__x, __y); +# 1514 +} +# 1515 +}; +# 1517 +template<> struct __iseqsig_type< long double> { +# 1519 +static int __call(long double __x, long double __y) throw() +# 1520 +{ +# 1522 +return __iseqsigl(__x, __y); +# 1526 +} +# 1527 +}; +# 1532 +template<> struct __iseqsig_type< __float128> { +# 1534 +static int __call(_Float128 __x, _Float128 __y) throw() +# 1535 +{ +# 1536 +return __iseqsigf128(__x, __y); +# 1537 +} +# 1538 +}; +# 1541 +template< class _T1, class _T2> inline int +# 1543 +iseqsig(_T1 __x, _T2 __y) throw() +# 1544 +{ +# 1546 +typedef __decltype(((__x + __y) + (0.0F))) _T3; +# 1550 +return __iseqsig_type< __decltype(((__x + __y) + (0.0F)))> ::__call(__x, __y); +# 1551 +} +# 1553 +} +# 1558 +} +# 33 "/usr/include/stdlib.h" 3 +extern "C" { +# 62 "/usr/include/stdlib.h" 3 +typedef +# 59 +struct { +# 60 +int quot; +# 61 +int rem; +# 62 +} div_t; +# 70 +typedef +# 67 +struct { +# 68 +long quot; +# 69 +long rem; +# 70 +} ldiv_t; +# 80 +__extension__ typedef +# 77 +struct { +# 78 +long long quot; +# 79 +long long rem; +# 80 +} lldiv_t; +# 97 "/usr/include/stdlib.h" 3 +extern size_t __ctype_get_mb_cur_max() throw(); +# 101 +extern double atof(const char * __nptr) throw() +# 102 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 104 +extern int atoi(const char * __nptr) throw() +# 105 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 107 +extern long atol(const char * __nptr) throw() +# 108 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 112 +__extension__ extern long long atoll(const char * __nptr) throw() +# 113 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 117 +extern double strtod(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 119 + __attribute((__nonnull__(1))); +# 123 +extern float strtof(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 124 + __attribute((__nonnull__(1))); +# 126 +extern long double strtold(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 128 + __attribute((__nonnull__(1))); +# 140 "/usr/include/stdlib.h" 3 +extern _Float32 strtof32(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 142 + __attribute((__nonnull__(1))); +# 146 +extern _Float64 strtof64(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 148 + __attribute((__nonnull__(1))); +# 152 +extern _Float128 strtof128(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 154 + __attribute((__nonnull__(1))); +# 158 +extern _Float32x strtof32x(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 160 + __attribute((__nonnull__(1))); +# 164 +extern _Float64x strtof64x(const char *__restrict__ __nptr, char **__restrict__ __endptr) throw() +# 166 + __attribute((__nonnull__(1))); +# 176 "/usr/include/stdlib.h" 3 +extern long strtol(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base) throw() +# 178 + __attribute((__nonnull__(1))); +# 180 +extern unsigned long strtoul(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base) throw() +# 182 + __attribute((__nonnull__(1))); +# 187 +__extension__ extern long long strtoq(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base) throw() +# 189 + __attribute((__nonnull__(1))); +# 192 +__extension__ extern unsigned long long strtouq(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base) throw() +# 194 + __attribute((__nonnull__(1))); +# 200 +__extension__ extern long long strtoll(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base) throw() +# 202 + __attribute((__nonnull__(1))); +# 205 +__extension__ extern unsigned long long strtoull(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base) throw() +# 207 + __attribute((__nonnull__(1))); +# 212 +extern int strfromd(char * __dest, size_t __size, const char * __format, double __f) throw() +# 214 + __attribute((__nonnull__(3))); +# 216 +extern int strfromf(char * __dest, size_t __size, const char * __format, float __f) throw() +# 218 + __attribute((__nonnull__(3))); +# 220 +extern int strfroml(char * __dest, size_t __size, const char * __format, long double __f) throw() +# 222 + __attribute((__nonnull__(3))); +# 232 "/usr/include/stdlib.h" 3 +extern int strfromf32(char * __dest, size_t __size, const char * __format, _Float32 __f) throw() +# 234 + __attribute((__nonnull__(3))); +# 238 +extern int strfromf64(char * __dest, size_t __size, const char * __format, _Float64 __f) throw() +# 240 + __attribute((__nonnull__(3))); +# 244 +extern int strfromf128(char * __dest, size_t __size, const char * __format, _Float128 __f) throw() +# 246 + __attribute((__nonnull__(3))); +# 250 +extern int strfromf32x(char * __dest, size_t __size, const char * __format, _Float32x __f) throw() +# 252 + __attribute((__nonnull__(3))); +# 256 +extern int strfromf64x(char * __dest, size_t __size, const char * __format, _Float64x __f) throw() +# 258 + __attribute((__nonnull__(3))); +# 274 "/usr/include/stdlib.h" 3 +extern long strtol_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base, locale_t __loc) throw() +# 276 + __attribute((__nonnull__(1, 4))); +# 278 +extern unsigned long strtoul_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base, locale_t __loc) throw() +# 281 + __attribute((__nonnull__(1, 4))); +# 284 +__extension__ extern long long strtoll_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base, locale_t __loc) throw() +# 287 + __attribute((__nonnull__(1, 4))); +# 290 +__extension__ extern unsigned long long strtoull_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, int __base, locale_t __loc) throw() +# 293 + __attribute((__nonnull__(1, 4))); +# 295 +extern double strtod_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 297 + __attribute((__nonnull__(1, 3))); +# 299 +extern float strtof_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 301 + __attribute((__nonnull__(1, 3))); +# 303 +extern long double strtold_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 306 + __attribute((__nonnull__(1, 3))); +# 316 "/usr/include/stdlib.h" 3 +extern _Float32 strtof32_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 319 + __attribute((__nonnull__(1, 3))); +# 323 +extern _Float64 strtof64_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 326 + __attribute((__nonnull__(1, 3))); +# 330 +extern _Float128 strtof128_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 333 + __attribute((__nonnull__(1, 3))); +# 337 +extern _Float32x strtof32x_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 340 + __attribute((__nonnull__(1, 3))); +# 344 +extern _Float64x strtof64x_l(const char *__restrict__ __nptr, char **__restrict__ __endptr, locale_t __loc) throw() +# 347 + __attribute((__nonnull__(1, 3))); +# 385 "/usr/include/stdlib.h" 3 +extern char *l64a(long __n) throw(); +# 388 +extern long a64l(const char * __s) throw() +# 389 + __attribute((__pure__)) __attribute((__nonnull__(1))); +# 27 "/usr/include/sys/types.h" 3 +extern "C" { +# 33 +typedef __u_char u_char; +# 34 +typedef __u_short u_short; +# 35 +typedef __u_int u_int; +# 36 +typedef __u_long u_long; +# 37 +typedef __quad_t quad_t; +# 38 +typedef __u_quad_t u_quad_t; +# 39 +typedef __fsid_t fsid_t; +# 42 +typedef __loff_t loff_t; +# 47 +typedef __ino_t ino_t; +# 54 +typedef __ino64_t ino64_t; +# 59 +typedef __dev_t dev_t; +# 64 +typedef __gid_t gid_t; +# 69 +typedef __mode_t mode_t; +# 74 +typedef __nlink_t nlink_t; +# 79 +typedef __uid_t uid_t; +# 85 +typedef __off_t off_t; +# 92 +typedef __off64_t off64_t; +# 103 "/usr/include/sys/types.h" 3 +typedef __id_t id_t; +# 108 +typedef __ssize_t ssize_t; +# 114 +typedef __daddr_t daddr_t; +# 115 +typedef __caddr_t caddr_t; +# 121 +typedef __key_t key_t; +# 134 "/usr/include/sys/types.h" 3 +typedef __useconds_t useconds_t; +# 138 +typedef __suseconds_t suseconds_t; +# 148 "/usr/include/sys/types.h" 3 +typedef unsigned long ulong; +# 149 +typedef unsigned short ushort; +# 150 +typedef unsigned uint; +# 24 "/usr/include/bits/stdint-intn.h" 3 +typedef __int8_t int8_t; +# 25 +typedef __int16_t int16_t; +# 26 +typedef __int32_t int32_t; +# 27 +typedef __int64_t int64_t; +# 158 "/usr/include/sys/types.h" 3 +typedef __uint8_t u_int8_t; +# 159 +typedef __uint16_t u_int16_t; +# 160 +typedef __uint32_t u_int32_t; +# 161 +typedef __uint64_t u_int64_t; +# 164 +typedef long register_t __attribute((__mode__(__word__))); +# 34 "/usr/include/bits/byteswap.h" 3 +static inline __uint16_t __bswap_16(__uint16_t __bsx) +# 35 +{ +# 37 +return __builtin_bswap16(__bsx); +# 41 +} +# 49 +static inline __uint32_t __bswap_32(__uint32_t __bsx) +# 50 +{ +# 52 +return __builtin_bswap32(__bsx); +# 56 +} +# 70 "/usr/include/bits/byteswap.h" 3 +__extension__ static inline __uint64_t __bswap_64(__uint64_t __bsx) +# 71 +{ +# 73 +return __builtin_bswap64(__bsx); +# 77 +} +# 33 "/usr/include/bits/uintn-identity.h" 3 +static inline __uint16_t __uint16_identity(__uint16_t __x) +# 34 +{ +# 35 +return __x; +# 36 +} +# 39 +static inline __uint32_t __uint32_identity(__uint32_t __x) +# 40 +{ +# 41 +return __x; +# 42 +} +# 45 +static inline __uint64_t __uint64_identity(__uint64_t __x) +# 46 +{ +# 47 +return __x; +# 48 +} +# 8 "/usr/include/bits/types/__sigset_t.h" 3 +typedef +# 6 +struct { +# 7 +unsigned long __val[(1024) / ((8) * sizeof(unsigned long))]; +# 8 +} __sigset_t; +# 7 "/usr/include/bits/types/sigset_t.h" 3 +typedef __sigset_t sigset_t; +# 49 "/usr/include/sys/select.h" 3 +typedef long __fd_mask; +# 70 "/usr/include/sys/select.h" 3 +typedef +# 60 +struct { +# 64 +__fd_mask fds_bits[1024 / (8 * ((int)sizeof(__fd_mask)))]; +# 70 +} fd_set; +# 77 +typedef __fd_mask fd_mask; +# 91 "/usr/include/sys/select.h" 3 +extern "C" { +# 101 "/usr/include/sys/select.h" 3 +extern int select(int __nfds, fd_set *__restrict__ __readfds, fd_set *__restrict__ __writefds, fd_set *__restrict__ __exceptfds, timeval *__restrict__ __timeout); +# 113 "/usr/include/sys/select.h" 3 +extern int pselect(int __nfds, fd_set *__restrict__ __readfds, fd_set *__restrict__ __writefds, fd_set *__restrict__ __exceptfds, const timespec *__restrict__ __timeout, const __sigset_t *__restrict__ __sigmask); +# 126 "/usr/include/sys/select.h" 3 +} +# 185 "/usr/include/sys/types.h" 3 +typedef __blksize_t blksize_t; +# 192 +typedef __blkcnt_t blkcnt_t; +# 196 +typedef __fsblkcnt_t fsblkcnt_t; +# 200 +typedef __fsfilcnt_t fsfilcnt_t; +# 219 "/usr/include/sys/types.h" 3 +typedef __blkcnt64_t blkcnt64_t; +# 220 +typedef __fsblkcnt64_t fsblkcnt64_t; +# 221 +typedef __fsfilcnt64_t fsfilcnt64_t; +# 51 "/usr/include/bits/pthreadtypes-arch.h" 3 +struct __pthread_rwlock_arch_t { +# 53 +unsigned __readers; +# 54 +unsigned __writers; +# 55 +unsigned __wrphase_futex; +# 56 +unsigned __writers_futex; +# 57 +unsigned __pad3; +# 58 +unsigned __pad4; +# 60 +int __cur_writer; +# 61 +int __shared; +# 62 +unsigned char __rwelision; +# 63 +unsigned char __pad1[7]; +# 64 +unsigned long __pad2; +# 67 +unsigned __flags; +# 79 "/usr/include/bits/pthreadtypes-arch.h" 3 +}; +# 86 "/usr/include/bits/thread-shared-types.h" 3 +typedef +# 82 +struct __pthread_internal_list { +# 84 +__pthread_internal_list *__prev; +# 85 +__pthread_internal_list *__next; +# 86 +} __pthread_list_t; +# 118 "/usr/include/bits/thread-shared-types.h" 3 +struct __pthread_mutex_s { +# 120 +int __lock; +# 121 +unsigned __count; +# 122 +int __owner; +# 124 +unsigned __nusers; +# 148 "/usr/include/bits/thread-shared-types.h" 3 +int __kind; +# 154 +short __spins; short __elision; +# 155 +__pthread_list_t __list; +# 166 "/usr/include/bits/thread-shared-types.h" 3 +}; +# 171 +struct __pthread_cond_s { +# 174 +__extension__ union { +# 175 +__extension__ unsigned long long __wseq; +# 177 +struct { +# 178 +unsigned __low; +# 179 +unsigned __high; +# 180 +} __wseq32; +# 181 +}; +# 183 +__extension__ union { +# 184 +__extension__ unsigned long long __g1_start; +# 186 +struct { +# 187 +unsigned __low; +# 188 +unsigned __high; +# 189 +} __g1_start32; +# 190 +}; +# 191 +unsigned __g_refs[2]; +# 192 +unsigned __g_size[2]; +# 193 +unsigned __g1_orig_size; +# 194 +unsigned __wrefs; +# 195 +unsigned __g_signals[2]; +# 196 +}; +# 27 "/usr/include/bits/pthreadtypes.h" 3 +typedef unsigned long pthread_t; +# 36 +typedef +# 33 +union { +# 34 +char __size[4]; +# 35 +int __align; +# 36 +} pthread_mutexattr_t; +# 45 +typedef +# 42 +union { +# 43 +char __size[4]; +# 44 +int __align; +# 45 +} pthread_condattr_t; +# 49 +typedef unsigned pthread_key_t; +# 53 +typedef int pthread_once_t; +# 56 +union pthread_attr_t { +# 58 +char __size[56]; +# 59 +long __align; +# 60 +}; +# 62 +typedef pthread_attr_t pthread_attr_t; +# 72 +typedef +# 68 +union { +# 69 +__pthread_mutex_s __data; +# 70 +char __size[40]; +# 71 +long __align; +# 72 +} pthread_mutex_t; +# 80 +typedef +# 76 +union { +# 77 +__pthread_cond_s __data; +# 78 +char __size[48]; +# 79 +__extension__ long long __align; +# 80 +} pthread_cond_t; +# 91 +typedef +# 87 +union { +# 88 +__pthread_rwlock_arch_t __data; +# 89 +char __size[56]; +# 90 +long __align; +# 91 +} pthread_rwlock_t; +# 97 +typedef +# 94 +union { +# 95 +char __size[8]; +# 96 +long __align; +# 97 +} pthread_rwlockattr_t; +# 103 +typedef volatile int pthread_spinlock_t; +# 112 +typedef +# 109 +union { +# 110 +char __size[32]; +# 111 +long __align; +# 112 +} pthread_barrier_t; +# 118 +typedef +# 115 +union { +# 116 +char __size[4]; +# 117 +int __align; +# 118 +} pthread_barrierattr_t; +# 230 "/usr/include/sys/types.h" 3 +} +# 401 "/usr/include/stdlib.h" 3 +extern long random() throw(); +# 404 +extern void srandom(unsigned __seed) throw(); +# 410 +extern char *initstate(unsigned __seed, char * __statebuf, size_t __statelen) throw() +# 411 + __attribute((__nonnull__(2))); +# 415 +extern char *setstate(char * __statebuf) throw() __attribute((__nonnull__(1))); +# 423 +struct random_data { +# 425 +int32_t *fptr; +# 426 +int32_t *rptr; +# 427 +int32_t *state; +# 428 +int rand_type; +# 429 +int rand_deg; +# 430 +int rand_sep; +# 431 +int32_t *end_ptr; +# 432 +}; +# 434 +extern int random_r(random_data *__restrict__ __buf, int32_t *__restrict__ __result) throw() +# 435 + __attribute((__nonnull__(1, 2))); +# 437 +extern int srandom_r(unsigned __seed, random_data * __buf) throw() +# 438 + __attribute((__nonnull__(2))); +# 440 +extern int initstate_r(unsigned __seed, char *__restrict__ __statebuf, size_t __statelen, random_data *__restrict__ __buf) throw() +# 443 + __attribute((__nonnull__(2, 4))); +# 445 +extern int setstate_r(char *__restrict__ __statebuf, random_data *__restrict__ __buf) throw() +# 447 + __attribute((__nonnull__(1, 2))); +# 453 +extern int rand() throw(); +# 455 +extern void srand(unsigned __seed) throw(); +# 459 +extern int rand_r(unsigned * __seed) throw(); +# 467 +extern double drand48() throw(); +# 468 +extern double erand48(unsigned short __xsubi[3]) throw() __attribute((__nonnull__(1))); +# 471 +extern long lrand48() throw(); +# 472 +extern long nrand48(unsigned short __xsubi[3]) throw() +# 473 + __attribute((__nonnull__(1))); +# 476 +extern long mrand48() throw(); +# 477 +extern long jrand48(unsigned short __xsubi[3]) throw() +# 478 + __attribute((__nonnull__(1))); +# 481 +extern void srand48(long __seedval) throw(); +# 482 +extern unsigned short *seed48(unsigned short __seed16v[3]) throw() +# 483 + __attribute((__nonnull__(1))); +# 484 +extern void lcong48(unsigned short __param[7]) throw() __attribute((__nonnull__(1))); +# 490 +struct drand48_data { +# 492 +unsigned short __x[3]; +# 493 +unsigned short __old_x[3]; +# 494 +unsigned short __c; +# 495 +unsigned short __init; +# 496 +__extension__ unsigned long long __a; +# 498 +}; +# 501 +extern int drand48_r(drand48_data *__restrict__ __buffer, double *__restrict__ __result) throw() +# 502 + __attribute((__nonnull__(1, 2))); +# 503 +extern int erand48_r(unsigned short __xsubi[3], drand48_data *__restrict__ __buffer, double *__restrict__ __result) throw() +# 505 + __attribute((__nonnull__(1, 2))); +# 508 +extern int lrand48_r(drand48_data *__restrict__ __buffer, long *__restrict__ __result) throw() +# 510 + __attribute((__nonnull__(1, 2))); +# 511 +extern int nrand48_r(unsigned short __xsubi[3], drand48_data *__restrict__ __buffer, long *__restrict__ __result) throw() +# 514 + __attribute((__nonnull__(1, 2))); +# 517 +extern int mrand48_r(drand48_data *__restrict__ __buffer, long *__restrict__ __result) throw() +# 519 + __attribute((__nonnull__(1, 2))); +# 520 +extern int jrand48_r(unsigned short __xsubi[3], drand48_data *__restrict__ __buffer, long *__restrict__ __result) throw() +# 523 + __attribute((__nonnull__(1, 2))); +# 526 +extern int srand48_r(long __seedval, drand48_data * __buffer) throw() +# 527 + __attribute((__nonnull__(2))); +# 529 +extern int seed48_r(unsigned short __seed16v[3], drand48_data * __buffer) throw() +# 530 + __attribute((__nonnull__(1, 2))); +# 532 +extern int lcong48_r(unsigned short __param[7], drand48_data * __buffer) throw() +# 534 + __attribute((__nonnull__(1, 2))); +# 539 +extern void *malloc(size_t __size) throw() __attribute((__malloc__)); +# 541 +extern void *calloc(size_t __nmemb, size_t __size) throw() +# 542 + __attribute((__malloc__)); +# 549 +extern void *realloc(void * __ptr, size_t __size) throw() +# 550 + __attribute((__warn_unused_result__)); +# 558 +extern void *reallocarray(void * __ptr, size_t __nmemb, size_t __size) throw() +# 559 + __attribute((__warn_unused_result__)); +# 563 +extern void free(void * __ptr) throw(); +# 26 "/usr/include/alloca.h" 3 +extern "C" { +# 32 +extern void *alloca(size_t __size) throw(); +# 38 +} +# 572 "/usr/include/stdlib.h" 3 +extern void *valloc(size_t __size) throw() __attribute((__malloc__)); +# 577 +extern int posix_memalign(void ** __memptr, size_t __alignment, size_t __size) throw() +# 578 + __attribute((__nonnull__(1))); +# 583 +extern void *aligned_alloc(size_t __alignment, size_t __size) throw() +# 584 + __attribute((__malloc__)) __attribute((__alloc_size__(2))); +# 588 +extern void abort() throw() __attribute((__noreturn__)); +# 592 +extern int atexit(void (* __func)(void)) throw() __attribute((__nonnull__(1))); +# 597 +extern "C++" int at_quick_exit(void (* __func)(void)) throw() __asm__("at_quick_exit") +# 598 + __attribute((__nonnull__(1))); +# 607 "/usr/include/stdlib.h" 3 +extern int on_exit(void (* __func)(int __status, void * __arg), void * __arg) throw() +# 608 + __attribute((__nonnull__(1))); +# 614 +extern void exit(int __status) throw() __attribute((__noreturn__)); +# 620 +extern void quick_exit(int __status) throw() __attribute((__noreturn__)); +# 626 +extern void _Exit(int __status) throw() __attribute((__noreturn__)); +# 631 +extern char *getenv(const char * __name) throw() __attribute((__nonnull__(1))); +# 636 +extern char *secure_getenv(const char * __name) throw() +# 637 + __attribute((__nonnull__(1))); +# 644 +extern int putenv(char * __string) throw() __attribute((__nonnull__(1))); +# 650 +extern int setenv(const char * __name, const char * __value, int __replace) throw() +# 651 + __attribute((__nonnull__(2))); +# 654 +extern int unsetenv(const char * __name) throw() __attribute((__nonnull__(1))); +# 661 +extern int clearenv() throw(); +# 672 "/usr/include/stdlib.h" 3 +extern char *mktemp(char * __template) throw() __attribute((__nonnull__(1))); +# 685 "/usr/include/stdlib.h" 3 +extern int mkstemp(char * __template) __attribute((__nonnull__(1))); +# 695 "/usr/include/stdlib.h" 3 +extern int mkstemp64(char * __template) __attribute((__nonnull__(1))); +# 707 "/usr/include/stdlib.h" 3 +extern int mkstemps(char * __template, int __suffixlen) __attribute((__nonnull__(1))); +# 717 "/usr/include/stdlib.h" 3 +extern int mkstemps64(char * __template, int __suffixlen) +# 718 + __attribute((__nonnull__(1))); +# 728 "/usr/include/stdlib.h" 3 +extern char *mkdtemp(char * __template) throw() __attribute((__nonnull__(1))); +# 739 "/usr/include/stdlib.h" 3 +extern int mkostemp(char * __template, int __flags) __attribute((__nonnull__(1))); +# 749 "/usr/include/stdlib.h" 3 +extern int mkostemp64(char * __template, int __flags) __attribute((__nonnull__(1))); +# 759 "/usr/include/stdlib.h" 3 +extern int mkostemps(char * __template, int __suffixlen, int __flags) +# 760 + __attribute((__nonnull__(1))); +# 771 "/usr/include/stdlib.h" 3 +extern int mkostemps64(char * __template, int __suffixlen, int __flags) +# 772 + __attribute((__nonnull__(1))); +# 781 "/usr/include/stdlib.h" 3 +extern int system(const char * __command); +# 787 +extern char *canonicalize_file_name(const char * __name) throw() +# 788 + __attribute((__nonnull__(1))); +# 797 "/usr/include/stdlib.h" 3 +extern char *realpath(const char *__restrict__ __name, char *__restrict__ __resolved) throw(); +# 805 +typedef int (*__compar_fn_t)(const void *, const void *); +# 808 +typedef __compar_fn_t comparison_fn_t; +# 812 +typedef int (*__compar_d_fn_t)(const void *, const void *, void *); +# 817 +extern void *bsearch(const void * __key, const void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar) +# 819 + __attribute((__nonnull__(1, 2, 5))); +# 827 +extern void qsort(void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar) +# 828 + __attribute((__nonnull__(1, 4))); +# 830 +extern void qsort_r(void * __base, size_t __nmemb, size_t __size, __compar_d_fn_t __compar, void * __arg) +# 832 + __attribute((__nonnull__(1, 4))); +# 837 +extern int abs(int __x) throw() __attribute((const)); +# 838 +extern long labs(long __x) throw() __attribute((const)); +# 841 +__extension__ extern long long llabs(long long __x) throw() +# 842 + __attribute((const)); +# 849 +extern div_t div(int __numer, int __denom) throw() +# 850 + __attribute((const)); +# 851 +extern ldiv_t ldiv(long __numer, long __denom) throw() +# 852 + __attribute((const)); +# 855 +__extension__ extern lldiv_t lldiv(long long __numer, long long __denom) throw() +# 857 + __attribute((const)); +# 869 "/usr/include/stdlib.h" 3 +extern char *ecvt(double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign) throw() +# 870 + __attribute((__nonnull__(3, 4))); +# 875 +extern char *fcvt(double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign) throw() +# 876 + __attribute((__nonnull__(3, 4))); +# 881 +extern char *gcvt(double __value, int __ndigit, char * __buf) throw() +# 882 + __attribute((__nonnull__(3))); +# 887 +extern char *qecvt(long double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign) throw() +# 889 + __attribute((__nonnull__(3, 4))); +# 890 +extern char *qfcvt(long double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign) throw() +# 892 + __attribute((__nonnull__(3, 4))); +# 893 +extern char *qgcvt(long double __value, int __ndigit, char * __buf) throw() +# 894 + __attribute((__nonnull__(3))); +# 899 +extern int ecvt_r(double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign, char *__restrict__ __buf, size_t __len) throw() +# 901 + __attribute((__nonnull__(3, 4, 5))); +# 902 +extern int fcvt_r(double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign, char *__restrict__ __buf, size_t __len) throw() +# 904 + __attribute((__nonnull__(3, 4, 5))); +# 906 +extern int qecvt_r(long double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign, char *__restrict__ __buf, size_t __len) throw() +# 909 + __attribute((__nonnull__(3, 4, 5))); +# 910 +extern int qfcvt_r(long double __value, int __ndigit, int *__restrict__ __decpt, int *__restrict__ __sign, char *__restrict__ __buf, size_t __len) throw() +# 913 + __attribute((__nonnull__(3, 4, 5))); +# 919 +extern int mblen(const char * __s, size_t __n) throw(); +# 922 +extern int mbtowc(wchar_t *__restrict__ __pwc, const char *__restrict__ __s, size_t __n) throw(); +# 926 +extern int wctomb(char * __s, wchar_t __wchar) throw(); +# 930 +extern size_t mbstowcs(wchar_t *__restrict__ __pwcs, const char *__restrict__ __s, size_t __n) throw(); +# 933 +extern size_t wcstombs(char *__restrict__ __s, const wchar_t *__restrict__ __pwcs, size_t __n) throw(); +# 943 +extern int rpmatch(const char * __response) throw() __attribute((__nonnull__(1))); +# 954 "/usr/include/stdlib.h" 3 +extern int getsubopt(char **__restrict__ __optionp, char *const *__restrict__ __tokens, char **__restrict__ __valuep) throw() +# 957 + __attribute((__nonnull__(1, 2, 3))); +# 965 +extern int posix_openpt(int __oflag); +# 973 +extern int grantpt(int __fd) throw(); +# 977 +extern int unlockpt(int __fd) throw(); +# 982 +extern char *ptsname(int __fd) throw(); +# 989 +extern int ptsname_r(int __fd, char * __buf, size_t __buflen) throw() +# 990 + __attribute((__nonnull__(2))); +# 993 +extern int getpt(); +# 1000 +extern int getloadavg(double __loadavg[], int __nelem) throw() +# 1001 + __attribute((__nonnull__(1))); +# 1020 "/usr/include/stdlib.h" 3 +} +# 46 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 +extern "C++" { +# 48 +namespace std __attribute((__visibility__("default"))) { +# 52 +using ::abs; +# 56 +inline long abs(long __i) { return __builtin_labs(__i); } +# 61 +inline long long abs(long long __x) { return __builtin_llabs(__x); } +# 71 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 +constexpr double abs(double __x) +# 72 +{ return __builtin_fabs(__x); } +# 75 +constexpr float abs(float __x) +# 76 +{ return __builtin_fabsf(__x); } +# 79 +constexpr long double abs(long double __x) +# 80 +{ return __builtin_fabsl(__x); } +# 85 +constexpr __int128 abs(__int128 __x) { return (__x >= (0)) ? __x : (-__x); } +# 103 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h" 3 +constexpr __float128 abs(__float128 __x) +# 104 +{ return (__x < (0)) ? -__x : __x; } +# 108 +} +# 109 +} +# 77 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +extern "C++" { +# 79 +namespace std __attribute((__visibility__("default"))) { +# 83 +using ::acos; +# 87 +constexpr float acos(float __x) +# 88 +{ return __builtin_acosf(__x); } +# 91 +constexpr long double acos(long double __x) +# 92 +{ return __builtin_acosl(__x); } +# 95 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 99 +acos(_Tp __x) +# 100 +{ return __builtin_acos(__x); } +# 102 +using ::asin; +# 106 +constexpr float asin(float __x) +# 107 +{ return __builtin_asinf(__x); } +# 110 +constexpr long double asin(long double __x) +# 111 +{ return __builtin_asinl(__x); } +# 114 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 118 +asin(_Tp __x) +# 119 +{ return __builtin_asin(__x); } +# 121 +using ::atan; +# 125 +constexpr float atan(float __x) +# 126 +{ return __builtin_atanf(__x); } +# 129 +constexpr long double atan(long double __x) +# 130 +{ return __builtin_atanl(__x); } +# 133 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 137 +atan(_Tp __x) +# 138 +{ return __builtin_atan(__x); } +# 140 +using ::atan2; +# 144 +constexpr float atan2(float __y, float __x) +# 145 +{ return __builtin_atan2f(__y, __x); } +# 148 +constexpr long double atan2(long double __y, long double __x) +# 149 +{ return __builtin_atan2l(__y, __x); } +# 152 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 155 +atan2(_Tp __y, _Up __x) +# 156 +{ +# 157 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 158 +return atan2((__type)__y, (__type)__x); +# 159 +} +# 161 +using ::ceil; +# 165 +constexpr float ceil(float __x) +# 166 +{ return __builtin_ceilf(__x); } +# 169 +constexpr long double ceil(long double __x) +# 170 +{ return __builtin_ceill(__x); } +# 173 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 177 +ceil(_Tp __x) +# 178 +{ return __builtin_ceil(__x); } +# 180 +using ::cos; +# 184 +constexpr float cos(float __x) +# 185 +{ return __builtin_cosf(__x); } +# 188 +constexpr long double cos(long double __x) +# 189 +{ return __builtin_cosl(__x); } +# 192 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 196 +cos(_Tp __x) +# 197 +{ return __builtin_cos(__x); } +# 199 +using ::cosh; +# 203 +constexpr float cosh(float __x) +# 204 +{ return __builtin_coshf(__x); } +# 207 +constexpr long double cosh(long double __x) +# 208 +{ return __builtin_coshl(__x); } +# 211 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 215 +cosh(_Tp __x) +# 216 +{ return __builtin_cosh(__x); } +# 218 +using ::exp; +# 222 +constexpr float exp(float __x) +# 223 +{ return __builtin_expf(__x); } +# 226 +constexpr long double exp(long double __x) +# 227 +{ return __builtin_expl(__x); } +# 230 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 234 +exp(_Tp __x) +# 235 +{ return __builtin_exp(__x); } +# 237 +using ::fabs; +# 241 +constexpr float fabs(float __x) +# 242 +{ return __builtin_fabsf(__x); } +# 245 +constexpr long double fabs(long double __x) +# 246 +{ return __builtin_fabsl(__x); } +# 249 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 253 +fabs(_Tp __x) +# 254 +{ return __builtin_fabs(__x); } +# 256 +using ::floor; +# 260 +constexpr float floor(float __x) +# 261 +{ return __builtin_floorf(__x); } +# 264 +constexpr long double floor(long double __x) +# 265 +{ return __builtin_floorl(__x); } +# 268 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 272 +floor(_Tp __x) +# 273 +{ return __builtin_floor(__x); } +# 275 +using ::fmod; +# 279 +constexpr float fmod(float __x, float __y) +# 280 +{ return __builtin_fmodf(__x, __y); } +# 283 +constexpr long double fmod(long double __x, long double __y) +# 284 +{ return __builtin_fmodl(__x, __y); } +# 287 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 290 +fmod(_Tp __x, _Up __y) +# 291 +{ +# 292 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 293 +return fmod((__type)__x, (__type)__y); +# 294 +} +# 296 +using ::frexp; +# 300 +inline float frexp(float __x, int *__exp) +# 301 +{ return __builtin_frexpf(__x, __exp); } +# 304 +inline long double frexp(long double __x, int *__exp) +# 305 +{ return __builtin_frexpl(__x, __exp); } +# 308 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 312 +frexp(_Tp __x, int *__exp) +# 313 +{ return __builtin_frexp(__x, __exp); } +# 315 +using ::ldexp; +# 319 +constexpr float ldexp(float __x, int __exp) +# 320 +{ return __builtin_ldexpf(__x, __exp); } +# 323 +constexpr long double ldexp(long double __x, int __exp) +# 324 +{ return __builtin_ldexpl(__x, __exp); } +# 327 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 331 +ldexp(_Tp __x, int __exp) +# 332 +{ return __builtin_ldexp(__x, __exp); } +# 334 +using ::log; +# 338 +constexpr float log(float __x) +# 339 +{ return __builtin_logf(__x); } +# 342 +constexpr long double log(long double __x) +# 343 +{ return __builtin_logl(__x); } +# 346 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 350 +log(_Tp __x) +# 351 +{ return __builtin_log(__x); } +# 353 +using ::log10; +# 357 +constexpr float log10(float __x) +# 358 +{ return __builtin_log10f(__x); } +# 361 +constexpr long double log10(long double __x) +# 362 +{ return __builtin_log10l(__x); } +# 365 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 369 +log10(_Tp __x) +# 370 +{ return __builtin_log10(__x); } +# 372 +using ::modf; +# 376 +inline float modf(float __x, float *__iptr) +# 377 +{ return __builtin_modff(__x, __iptr); } +# 380 +inline long double modf(long double __x, long double *__iptr) +# 381 +{ return __builtin_modfl(__x, __iptr); } +# 384 +using ::pow; +# 388 +constexpr float pow(float __x, float __y) +# 389 +{ return __builtin_powf(__x, __y); } +# 392 +constexpr long double pow(long double __x, long double __y) +# 393 +{ return __builtin_powl(__x, __y); } +# 412 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 415 +pow(_Tp __x, _Up __y) +# 416 +{ +# 417 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 418 +return pow((__type)__x, (__type)__y); +# 419 +} +# 421 +using ::sin; +# 425 +constexpr float sin(float __x) +# 426 +{ return __builtin_sinf(__x); } +# 429 +constexpr long double sin(long double __x) +# 430 +{ return __builtin_sinl(__x); } +# 433 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 437 +sin(_Tp __x) +# 438 +{ return __builtin_sin(__x); } +# 440 +using ::sinh; +# 444 +constexpr float sinh(float __x) +# 445 +{ return __builtin_sinhf(__x); } +# 448 +constexpr long double sinh(long double __x) +# 449 +{ return __builtin_sinhl(__x); } +# 452 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 456 +sinh(_Tp __x) +# 457 +{ return __builtin_sinh(__x); } +# 459 +using ::sqrt; +# 463 +constexpr float sqrt(float __x) +# 464 +{ return __builtin_sqrtf(__x); } +# 467 +constexpr long double sqrt(long double __x) +# 468 +{ return __builtin_sqrtl(__x); } +# 471 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 475 +sqrt(_Tp __x) +# 476 +{ return __builtin_sqrt(__x); } +# 478 +using ::tan; +# 482 +constexpr float tan(float __x) +# 483 +{ return __builtin_tanf(__x); } +# 486 +constexpr long double tan(long double __x) +# 487 +{ return __builtin_tanl(__x); } +# 490 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 494 +tan(_Tp __x) +# 495 +{ return __builtin_tan(__x); } +# 497 +using ::tanh; +# 501 +constexpr float tanh(float __x) +# 502 +{ return __builtin_tanhf(__x); } +# 505 +constexpr long double tanh(long double __x) +# 506 +{ return __builtin_tanhl(__x); } +# 509 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 513 +tanh(_Tp __x) +# 514 +{ return __builtin_tanh(__x); } +# 537 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +constexpr int fpclassify(float __x) +# 538 +{ return __builtin_fpclassify(0, 1, 4, 3, 2, __x); +# 539 +} +# 542 +constexpr int fpclassify(double __x) +# 543 +{ return __builtin_fpclassify(0, 1, 4, 3, 2, __x); +# 544 +} +# 547 +constexpr int fpclassify(long double __x) +# 548 +{ return __builtin_fpclassify(0, 1, 4, 3, 2, __x); +# 549 +} +# 553 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, int> ::__type +# 556 +fpclassify(_Tp __x) +# 557 +{ return (__x != 0) ? 4 : 2; } +# 562 +constexpr bool isfinite(float __x) +# 563 +{ return __builtin_isfinite(__x); } +# 566 +constexpr bool isfinite(double __x) +# 567 +{ return __builtin_isfinite(__x); } +# 570 +constexpr bool isfinite(long double __x) +# 571 +{ return __builtin_isfinite(__x); } +# 575 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, bool> ::__type +# 578 +isfinite(_Tp __x) +# 579 +{ return true; } +# 584 +constexpr bool isinf(float __x) +# 585 +{ return __builtin_isinf(__x); } +# 592 +constexpr bool isinf(double __x) +# 593 +{ return __builtin_isinf(__x); } +# 597 +constexpr bool isinf(long double __x) +# 598 +{ return __builtin_isinf(__x); } +# 602 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, bool> ::__type +# 605 +isinf(_Tp __x) +# 606 +{ return false; } +# 611 +constexpr bool isnan(float __x) +# 612 +{ return __builtin_isnan(__x); } +# 619 +constexpr bool isnan(double __x) +# 620 +{ return __builtin_isnan(__x); } +# 624 +constexpr bool isnan(long double __x) +# 625 +{ return __builtin_isnan(__x); } +# 629 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, bool> ::__type +# 632 +isnan(_Tp __x) +# 633 +{ return false; } +# 638 +constexpr bool isnormal(float __x) +# 639 +{ return __builtin_isnormal(__x); } +# 642 +constexpr bool isnormal(double __x) +# 643 +{ return __builtin_isnormal(__x); } +# 646 +constexpr bool isnormal(long double __x) +# 647 +{ return __builtin_isnormal(__x); } +# 651 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, bool> ::__type +# 654 +isnormal(_Tp __x) +# 655 +{ return (__x != 0) ? true : false; } +# 661 +constexpr bool signbit(float __x) +# 662 +{ return __builtin_signbit(__x); } +# 665 +constexpr bool signbit(double __x) +# 666 +{ return __builtin_signbit(__x); } +# 669 +constexpr bool signbit(long double __x) +# 670 +{ return __builtin_signbit(__x); } +# 674 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, bool> ::__type +# 677 +signbit(_Tp __x) +# 678 +{ return (__x < 0) ? true : false; } +# 683 +constexpr bool isgreater(float __x, float __y) +# 684 +{ return __builtin_isgreater(__x, __y); } +# 687 +constexpr bool isgreater(double __x, double __y) +# 688 +{ return __builtin_isgreater(__x, __y); } +# 691 +constexpr bool isgreater(long double __x, long double __y) +# 692 +{ return __builtin_isgreater(__x, __y); } +# 696 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__enable_if< __is_arithmetic< _Tp> ::__value && __is_arithmetic< _Up> ::__value, bool> ::__type +# 700 +isgreater(_Tp __x, _Up __y) +# 701 +{ +# 702 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 703 +return __builtin_isgreater((__type)__x, (__type)__y); +# 704 +} +# 709 +constexpr bool isgreaterequal(float __x, float __y) +# 710 +{ return __builtin_isgreaterequal(__x, __y); } +# 713 +constexpr bool isgreaterequal(double __x, double __y) +# 714 +{ return __builtin_isgreaterequal(__x, __y); } +# 717 +constexpr bool isgreaterequal(long double __x, long double __y) +# 718 +{ return __builtin_isgreaterequal(__x, __y); } +# 722 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__enable_if< __is_arithmetic< _Tp> ::__value && __is_arithmetic< _Up> ::__value, bool> ::__type +# 726 +isgreaterequal(_Tp __x, _Up __y) +# 727 +{ +# 728 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 729 +return __builtin_isgreaterequal((__type)__x, (__type)__y); +# 730 +} +# 735 +constexpr bool isless(float __x, float __y) +# 736 +{ return __builtin_isless(__x, __y); } +# 739 +constexpr bool isless(double __x, double __y) +# 740 +{ return __builtin_isless(__x, __y); } +# 743 +constexpr bool isless(long double __x, long double __y) +# 744 +{ return __builtin_isless(__x, __y); } +# 748 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__enable_if< __is_arithmetic< _Tp> ::__value && __is_arithmetic< _Up> ::__value, bool> ::__type +# 752 +isless(_Tp __x, _Up __y) +# 753 +{ +# 754 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 755 +return __builtin_isless((__type)__x, (__type)__y); +# 756 +} +# 761 +constexpr bool islessequal(float __x, float __y) +# 762 +{ return __builtin_islessequal(__x, __y); } +# 765 +constexpr bool islessequal(double __x, double __y) +# 766 +{ return __builtin_islessequal(__x, __y); } +# 769 +constexpr bool islessequal(long double __x, long double __y) +# 770 +{ return __builtin_islessequal(__x, __y); } +# 774 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__enable_if< __is_arithmetic< _Tp> ::__value && __is_arithmetic< _Up> ::__value, bool> ::__type +# 778 +islessequal(_Tp __x, _Up __y) +# 779 +{ +# 780 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 781 +return __builtin_islessequal((__type)__x, (__type)__y); +# 782 +} +# 787 +constexpr bool islessgreater(float __x, float __y) +# 788 +{ return __builtin_islessgreater(__x, __y); } +# 791 +constexpr bool islessgreater(double __x, double __y) +# 792 +{ return __builtin_islessgreater(__x, __y); } +# 795 +constexpr bool islessgreater(long double __x, long double __y) +# 796 +{ return __builtin_islessgreater(__x, __y); } +# 800 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__enable_if< __is_arithmetic< _Tp> ::__value && __is_arithmetic< _Up> ::__value, bool> ::__type +# 804 +islessgreater(_Tp __x, _Up __y) +# 805 +{ +# 806 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 807 +return __builtin_islessgreater((__type)__x, (__type)__y); +# 808 +} +# 813 +constexpr bool isunordered(float __x, float __y) +# 814 +{ return __builtin_isunordered(__x, __y); } +# 817 +constexpr bool isunordered(double __x, double __y) +# 818 +{ return __builtin_isunordered(__x, __y); } +# 821 +constexpr bool isunordered(long double __x, long double __y) +# 822 +{ return __builtin_isunordered(__x, __y); } +# 826 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__enable_if< __is_arithmetic< _Tp> ::__value && __is_arithmetic< _Up> ::__value, bool> ::__type +# 830 +isunordered(_Tp __x, _Up __y) +# 831 +{ +# 832 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 833 +return __builtin_isunordered((__type)__x, (__type)__y); +# 834 +} +# 1065 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +using ::double_t; +# 1066 +using ::float_t; +# 1069 +using ::acosh; +# 1070 +using ::acoshf; +# 1071 +using ::acoshl; +# 1073 +using ::asinh; +# 1074 +using ::asinhf; +# 1075 +using ::asinhl; +# 1077 +using ::atanh; +# 1078 +using ::atanhf; +# 1079 +using ::atanhl; +# 1081 +using ::cbrt; +# 1082 +using ::cbrtf; +# 1083 +using ::cbrtl; +# 1085 +using ::copysign; +# 1086 +using ::copysignf; +# 1087 +using ::copysignl; +# 1089 +using ::erf; +# 1090 +using ::erff; +# 1091 +using ::erfl; +# 1093 +using ::erfc; +# 1094 +using ::erfcf; +# 1095 +using ::erfcl; +# 1097 +using ::exp2; +# 1098 +using ::exp2f; +# 1099 +using ::exp2l; +# 1101 +using ::expm1; +# 1102 +using ::expm1f; +# 1103 +using ::expm1l; +# 1105 +using ::fdim; +# 1106 +using ::fdimf; +# 1107 +using ::fdiml; +# 1109 +using ::fma; +# 1110 +using ::fmaf; +# 1111 +using ::fmal; +# 1113 +using ::fmax; +# 1114 +using ::fmaxf; +# 1115 +using ::fmaxl; +# 1117 +using ::fmin; +# 1118 +using ::fminf; +# 1119 +using ::fminl; +# 1121 +using ::hypot; +# 1122 +using ::hypotf; +# 1123 +using ::hypotl; +# 1125 +using ::ilogb; +# 1126 +using ::ilogbf; +# 1127 +using ::ilogbl; +# 1129 +using ::lgamma; +# 1130 +using ::lgammaf; +# 1131 +using ::lgammal; +# 1134 +using ::llrint; +# 1135 +using ::llrintf; +# 1136 +using ::llrintl; +# 1138 +using ::llround; +# 1139 +using ::llroundf; +# 1140 +using ::llroundl; +# 1143 +using ::log1p; +# 1144 +using ::log1pf; +# 1145 +using ::log1pl; +# 1147 +using ::log2; +# 1148 +using ::log2f; +# 1149 +using ::log2l; +# 1151 +using ::logb; +# 1152 +using ::logbf; +# 1153 +using ::logbl; +# 1155 +using ::lrint; +# 1156 +using ::lrintf; +# 1157 +using ::lrintl; +# 1159 +using ::lround; +# 1160 +using ::lroundf; +# 1161 +using ::lroundl; +# 1163 +using ::nan; +# 1164 +using ::nanf; +# 1165 +using ::nanl; +# 1167 +using ::nearbyint; +# 1168 +using ::nearbyintf; +# 1169 +using ::nearbyintl; +# 1171 +using ::nextafter; +# 1172 +using ::nextafterf; +# 1173 +using ::nextafterl; +# 1175 +using ::nexttoward; +# 1176 +using ::nexttowardf; +# 1177 +using ::nexttowardl; +# 1179 +using ::remainder; +# 1180 +using ::remainderf; +# 1181 +using ::remainderl; +# 1183 +using ::remquo; +# 1184 +using ::remquof; +# 1185 +using ::remquol; +# 1187 +using ::rint; +# 1188 +using ::rintf; +# 1189 +using ::rintl; +# 1191 +using ::round; +# 1192 +using ::roundf; +# 1193 +using ::roundl; +# 1195 +using ::scalbln; +# 1196 +using ::scalblnf; +# 1197 +using ::scalblnl; +# 1199 +using ::scalbn; +# 1200 +using ::scalbnf; +# 1201 +using ::scalbnl; +# 1203 +using ::tgamma; +# 1204 +using ::tgammaf; +# 1205 +using ::tgammal; +# 1207 +using ::trunc; +# 1208 +using ::truncf; +# 1209 +using ::truncl; +# 1214 +constexpr float acosh(float __x) +# 1215 +{ return __builtin_acoshf(__x); } +# 1218 +constexpr long double acosh(long double __x) +# 1219 +{ return __builtin_acoshl(__x); } +# 1223 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1226 +acosh(_Tp __x) +# 1227 +{ return __builtin_acosh(__x); } +# 1232 +constexpr float asinh(float __x) +# 1233 +{ return __builtin_asinhf(__x); } +# 1236 +constexpr long double asinh(long double __x) +# 1237 +{ return __builtin_asinhl(__x); } +# 1241 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1244 +asinh(_Tp __x) +# 1245 +{ return __builtin_asinh(__x); } +# 1250 +constexpr float atanh(float __x) +# 1251 +{ return __builtin_atanhf(__x); } +# 1254 +constexpr long double atanh(long double __x) +# 1255 +{ return __builtin_atanhl(__x); } +# 1259 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1262 +atanh(_Tp __x) +# 1263 +{ return __builtin_atanh(__x); } +# 1268 +constexpr float cbrt(float __x) +# 1269 +{ return __builtin_cbrtf(__x); } +# 1272 +constexpr long double cbrt(long double __x) +# 1273 +{ return __builtin_cbrtl(__x); } +# 1277 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1280 +cbrt(_Tp __x) +# 1281 +{ return __builtin_cbrt(__x); } +# 1286 +constexpr float copysign(float __x, float __y) +# 1287 +{ return __builtin_copysignf(__x, __y); } +# 1290 +constexpr long double copysign(long double __x, long double __y) +# 1291 +{ return __builtin_copysignl(__x, __y); } +# 1295 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1297 +copysign(_Tp __x, _Up __y) +# 1298 +{ +# 1299 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1300 +return copysign((__type)__x, (__type)__y); +# 1301 +} +# 1306 +constexpr float erf(float __x) +# 1307 +{ return __builtin_erff(__x); } +# 1310 +constexpr long double erf(long double __x) +# 1311 +{ return __builtin_erfl(__x); } +# 1315 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1318 +erf(_Tp __x) +# 1319 +{ return __builtin_erf(__x); } +# 1324 +constexpr float erfc(float __x) +# 1325 +{ return __builtin_erfcf(__x); } +# 1328 +constexpr long double erfc(long double __x) +# 1329 +{ return __builtin_erfcl(__x); } +# 1333 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1336 +erfc(_Tp __x) +# 1337 +{ return __builtin_erfc(__x); } +# 1342 +constexpr float exp2(float __x) +# 1343 +{ return __builtin_exp2f(__x); } +# 1346 +constexpr long double exp2(long double __x) +# 1347 +{ return __builtin_exp2l(__x); } +# 1351 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1354 +exp2(_Tp __x) +# 1355 +{ return __builtin_exp2(__x); } +# 1360 +constexpr float expm1(float __x) +# 1361 +{ return __builtin_expm1f(__x); } +# 1364 +constexpr long double expm1(long double __x) +# 1365 +{ return __builtin_expm1l(__x); } +# 1369 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1372 +expm1(_Tp __x) +# 1373 +{ return __builtin_expm1(__x); } +# 1378 +constexpr float fdim(float __x, float __y) +# 1379 +{ return __builtin_fdimf(__x, __y); } +# 1382 +constexpr long double fdim(long double __x, long double __y) +# 1383 +{ return __builtin_fdiml(__x, __y); } +# 1387 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1389 +fdim(_Tp __x, _Up __y) +# 1390 +{ +# 1391 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1392 +return fdim((__type)__x, (__type)__y); +# 1393 +} +# 1398 +constexpr float fma(float __x, float __y, float __z) +# 1399 +{ return __builtin_fmaf(__x, __y, __z); } +# 1402 +constexpr long double fma(long double __x, long double __y, long double __z) +# 1403 +{ return __builtin_fmal(__x, __y, __z); } +# 1407 +template< class _Tp, class _Up, class _Vp> constexpr typename __gnu_cxx::__promote_3< _Tp, _Up, _Vp> ::__type +# 1409 +fma(_Tp __x, _Up __y, _Vp __z) +# 1410 +{ +# 1411 +typedef typename __gnu_cxx::__promote_3< _Tp, _Up, _Vp> ::__type __type; +# 1412 +return fma((__type)__x, (__type)__y, (__type)__z); +# 1413 +} +# 1418 +constexpr float fmax(float __x, float __y) +# 1419 +{ return __builtin_fmaxf(__x, __y); } +# 1422 +constexpr long double fmax(long double __x, long double __y) +# 1423 +{ return __builtin_fmaxl(__x, __y); } +# 1427 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1429 +fmax(_Tp __x, _Up __y) +# 1430 +{ +# 1431 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1432 +return fmax((__type)__x, (__type)__y); +# 1433 +} +# 1438 +constexpr float fmin(float __x, float __y) +# 1439 +{ return __builtin_fminf(__x, __y); } +# 1442 +constexpr long double fmin(long double __x, long double __y) +# 1443 +{ return __builtin_fminl(__x, __y); } +# 1447 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1449 +fmin(_Tp __x, _Up __y) +# 1450 +{ +# 1451 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1452 +return fmin((__type)__x, (__type)__y); +# 1453 +} +# 1458 +constexpr float hypot(float __x, float __y) +# 1459 +{ return __builtin_hypotf(__x, __y); } +# 1462 +constexpr long double hypot(long double __x, long double __y) +# 1463 +{ return __builtin_hypotl(__x, __y); } +# 1467 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1469 +hypot(_Tp __x, _Up __y) +# 1470 +{ +# 1471 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1472 +return hypot((__type)__x, (__type)__y); +# 1473 +} +# 1478 +constexpr int ilogb(float __x) +# 1479 +{ return __builtin_ilogbf(__x); } +# 1482 +constexpr int ilogb(long double __x) +# 1483 +{ return __builtin_ilogbl(__x); } +# 1487 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, int> ::__type +# 1491 +ilogb(_Tp __x) +# 1492 +{ return __builtin_ilogb(__x); } +# 1497 +constexpr float lgamma(float __x) +# 1498 +{ return __builtin_lgammaf(__x); } +# 1501 +constexpr long double lgamma(long double __x) +# 1502 +{ return __builtin_lgammal(__x); } +# 1506 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1509 +lgamma(_Tp __x) +# 1510 +{ return __builtin_lgamma(__x); } +# 1515 +constexpr long long llrint(float __x) +# 1516 +{ return __builtin_llrintf(__x); } +# 1519 +constexpr long long llrint(long double __x) +# 1520 +{ return __builtin_llrintl(__x); } +# 1524 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, long long> ::__type +# 1527 +llrint(_Tp __x) +# 1528 +{ return __builtin_llrint(__x); } +# 1533 +constexpr long long llround(float __x) +# 1534 +{ return __builtin_llroundf(__x); } +# 1537 +constexpr long long llround(long double __x) +# 1538 +{ return __builtin_llroundl(__x); } +# 1542 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, long long> ::__type +# 1545 +llround(_Tp __x) +# 1546 +{ return __builtin_llround(__x); } +# 1551 +constexpr float log1p(float __x) +# 1552 +{ return __builtin_log1pf(__x); } +# 1555 +constexpr long double log1p(long double __x) +# 1556 +{ return __builtin_log1pl(__x); } +# 1560 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1563 +log1p(_Tp __x) +# 1564 +{ return __builtin_log1p(__x); } +# 1570 +constexpr float log2(float __x) +# 1571 +{ return __builtin_log2f(__x); } +# 1574 +constexpr long double log2(long double __x) +# 1575 +{ return __builtin_log2l(__x); } +# 1579 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1582 +log2(_Tp __x) +# 1583 +{ return __builtin_log2(__x); } +# 1588 +constexpr float logb(float __x) +# 1589 +{ return __builtin_logbf(__x); } +# 1592 +constexpr long double logb(long double __x) +# 1593 +{ return __builtin_logbl(__x); } +# 1597 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1600 +logb(_Tp __x) +# 1601 +{ return __builtin_logb(__x); } +# 1606 +constexpr long lrint(float __x) +# 1607 +{ return __builtin_lrintf(__x); } +# 1610 +constexpr long lrint(long double __x) +# 1611 +{ return __builtin_lrintl(__x); } +# 1615 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, long> ::__type +# 1618 +lrint(_Tp __x) +# 1619 +{ return __builtin_lrint(__x); } +# 1624 +constexpr long lround(float __x) +# 1625 +{ return __builtin_lroundf(__x); } +# 1628 +constexpr long lround(long double __x) +# 1629 +{ return __builtin_lroundl(__x); } +# 1633 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, long> ::__type +# 1636 +lround(_Tp __x) +# 1637 +{ return __builtin_lround(__x); } +# 1642 +constexpr float nearbyint(float __x) +# 1643 +{ return __builtin_nearbyintf(__x); } +# 1646 +constexpr long double nearbyint(long double __x) +# 1647 +{ return __builtin_nearbyintl(__x); } +# 1651 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1654 +nearbyint(_Tp __x) +# 1655 +{ return __builtin_nearbyint(__x); } +# 1660 +constexpr float nextafter(float __x, float __y) +# 1661 +{ return __builtin_nextafterf(__x, __y); } +# 1664 +constexpr long double nextafter(long double __x, long double __y) +# 1665 +{ return __builtin_nextafterl(__x, __y); } +# 1669 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1671 +nextafter(_Tp __x, _Up __y) +# 1672 +{ +# 1673 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1674 +return nextafter((__type)__x, (__type)__y); +# 1675 +} +# 1680 +constexpr float nexttoward(float __x, long double __y) +# 1681 +{ return __builtin_nexttowardf(__x, __y); } +# 1684 +constexpr long double nexttoward(long double __x, long double __y) +# 1685 +{ return __builtin_nexttowardl(__x, __y); } +# 1689 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1692 +nexttoward(_Tp __x, long double __y) +# 1693 +{ return __builtin_nexttoward(__x, __y); } +# 1698 +constexpr float remainder(float __x, float __y) +# 1699 +{ return __builtin_remainderf(__x, __y); } +# 1702 +constexpr long double remainder(long double __x, long double __y) +# 1703 +{ return __builtin_remainderl(__x, __y); } +# 1707 +template< class _Tp, class _Up> constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1709 +remainder(_Tp __x, _Up __y) +# 1710 +{ +# 1711 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1712 +return remainder((__type)__x, (__type)__y); +# 1713 +} +# 1718 +inline float remquo(float __x, float __y, int *__pquo) +# 1719 +{ return __builtin_remquof(__x, __y, __pquo); } +# 1722 +inline long double remquo(long double __x, long double __y, int *__pquo) +# 1723 +{ return __builtin_remquol(__x, __y, __pquo); } +# 1727 +template< class _Tp, class _Up> inline typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type +# 1729 +remquo(_Tp __x, _Up __y, int *__pquo) +# 1730 +{ +# 1731 +typedef typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type __type; +# 1732 +return remquo((__type)__x, (__type)__y, __pquo); +# 1733 +} +# 1738 +constexpr float rint(float __x) +# 1739 +{ return __builtin_rintf(__x); } +# 1742 +constexpr long double rint(long double __x) +# 1743 +{ return __builtin_rintl(__x); } +# 1747 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1750 +rint(_Tp __x) +# 1751 +{ return __builtin_rint(__x); } +# 1756 +constexpr float round(float __x) +# 1757 +{ return __builtin_roundf(__x); } +# 1760 +constexpr long double round(long double __x) +# 1761 +{ return __builtin_roundl(__x); } +# 1765 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1768 +round(_Tp __x) +# 1769 +{ return __builtin_round(__x); } +# 1774 +constexpr float scalbln(float __x, long __ex) +# 1775 +{ return __builtin_scalblnf(__x, __ex); } +# 1778 +constexpr long double scalbln(long double __x, long __ex) +# 1779 +{ return __builtin_scalblnl(__x, __ex); } +# 1783 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1786 +scalbln(_Tp __x, long __ex) +# 1787 +{ return __builtin_scalbln(__x, __ex); } +# 1792 +constexpr float scalbn(float __x, int __ex) +# 1793 +{ return __builtin_scalbnf(__x, __ex); } +# 1796 +constexpr long double scalbn(long double __x, int __ex) +# 1797 +{ return __builtin_scalbnl(__x, __ex); } +# 1801 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1804 +scalbn(_Tp __x, int __ex) +# 1805 +{ return __builtin_scalbn(__x, __ex); } +# 1810 +constexpr float tgamma(float __x) +# 1811 +{ return __builtin_tgammaf(__x); } +# 1814 +constexpr long double tgamma(long double __x) +# 1815 +{ return __builtin_tgammal(__x); } +# 1819 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1822 +tgamma(_Tp __x) +# 1823 +{ return __builtin_tgamma(__x); } +# 1828 +constexpr float trunc(float __x) +# 1829 +{ return __builtin_truncf(__x); } +# 1832 +constexpr long double trunc(long double __x) +# 1833 +{ return __builtin_truncl(__x); } +# 1837 +template< class _Tp> constexpr typename __gnu_cxx::__enable_if< __is_integer< _Tp> ::__value, double> ::__type +# 1840 +trunc(_Tp __x) +# 1841 +{ return __builtin_trunc(__x); } +# 1924 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath" 3 +} +# 1930 +} +# 38 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h" 3 +using std::abs; +# 39 +using std::acos; +# 40 +using std::asin; +# 41 +using std::atan; +# 42 +using std::atan2; +# 43 +using std::cos; +# 44 +using std::sin; +# 45 +using std::tan; +# 46 +using std::cosh; +# 47 +using std::sinh; +# 48 +using std::tanh; +# 49 +using std::exp; +# 50 +using std::frexp; +# 51 +using std::ldexp; +# 52 +using std::log; +# 53 +using std::log10; +# 54 +using std::modf; +# 55 +using std::pow; +# 56 +using std::sqrt; +# 57 +using std::ceil; +# 58 +using std::fabs; +# 59 +using std::floor; +# 60 +using std::fmod; +# 63 +using std::fpclassify; +# 64 +using std::isfinite; +# 65 +using std::isinf; +# 66 +using std::isnan; +# 67 +using std::isnormal; +# 68 +using std::signbit; +# 69 +using std::isgreater; +# 70 +using std::isgreaterequal; +# 71 +using std::isless; +# 72 +using std::islessequal; +# 73 +using std::islessgreater; +# 74 +using std::isunordered; +# 78 +using std::acosh; +# 79 +using std::asinh; +# 80 +using std::atanh; +# 81 +using std::cbrt; +# 82 +using std::copysign; +# 83 +using std::erf; +# 84 +using std::erfc; +# 85 +using std::exp2; +# 86 +using std::expm1; +# 87 +using std::fdim; +# 88 +using std::fma; +# 89 +using std::fmax; +# 90 +using std::fmin; +# 91 +using std::hypot; +# 92 +using std::ilogb; +# 93 +using std::lgamma; +# 94 +using std::llrint; +# 95 +using std::llround; +# 96 +using std::log1p; +# 97 +using std::log2; +# 98 +using std::logb; +# 99 +using std::lrint; +# 100 +using std::lround; +# 101 +using std::nearbyint; +# 102 +using std::nextafter; +# 103 +using std::nexttoward; +# 104 +using std::remainder; +# 105 +using std::remquo; +# 106 +using std::rint; +# 107 +using std::round; +# 108 +using std::scalbln; +# 109 +using std::scalbn; +# 110 +using std::tgamma; +# 111 +using std::trunc; +# 121 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +extern "C++" { +# 123 +namespace std __attribute((__visibility__("default"))) { +# 127 +using ::div_t; +# 128 +using ::ldiv_t; +# 130 +using ::abort; +# 134 +using ::atexit; +# 137 +using ::at_quick_exit; +# 140 +using ::atof; +# 141 +using ::atoi; +# 142 +using ::atol; +# 143 +using ::bsearch; +# 144 +using ::calloc; +# 145 +using ::div; +# 146 +using ::exit; +# 147 +using ::free; +# 148 +using ::getenv; +# 149 +using ::labs; +# 150 +using ::ldiv; +# 151 +using ::malloc; +# 153 +using ::mblen; +# 154 +using ::mbstowcs; +# 155 +using ::mbtowc; +# 157 +using ::qsort; +# 160 +using ::quick_exit; +# 163 +using ::rand; +# 164 +using ::realloc; +# 165 +using ::srand; +# 166 +using ::strtod; +# 167 +using ::strtol; +# 168 +using ::strtoul; +# 169 +using ::system; +# 171 +using ::wcstombs; +# 172 +using ::wctomb; +# 177 +inline ldiv_t div(long __i, long __j) { return ldiv(__i, __j); } +# 182 +} +# 195 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +namespace __gnu_cxx __attribute((__visibility__("default"))) { +# 200 +using ::lldiv_t; +# 206 +using ::_Exit; +# 210 +using ::llabs; +# 213 +inline lldiv_t div(long long __n, long long __d) +# 214 +{ lldiv_t __q; (__q.quot) = (__n / __d); (__q.rem) = (__n % __d); return __q; } +# 216 +using ::lldiv; +# 227 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib" 3 +using ::atoll; +# 228 +using ::strtoll; +# 229 +using ::strtoull; +# 231 +using ::strtof; +# 232 +using ::strtold; +# 235 +} +# 237 +namespace std { +# 240 +using __gnu_cxx::lldiv_t; +# 242 +using __gnu_cxx::_Exit; +# 244 +using __gnu_cxx::llabs; +# 245 +using __gnu_cxx::div; +# 246 +using __gnu_cxx::lldiv; +# 248 +using __gnu_cxx::atoll; +# 249 +using __gnu_cxx::strtof; +# 250 +using __gnu_cxx::strtoll; +# 251 +using __gnu_cxx::strtoull; +# 252 +using __gnu_cxx::strtold; +# 253 +} +# 257 +} +# 38 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h" 3 +using std::abort; +# 39 +using std::atexit; +# 40 +using std::exit; +# 43 +using std::at_quick_exit; +# 46 +using std::quick_exit; +# 54 +using std::abs; +# 55 +using std::atof; +# 56 +using std::atoi; +# 57 +using std::atol; +# 58 +using std::bsearch; +# 59 +using std::calloc; +# 60 +using std::div; +# 61 +using std::free; +# 62 +using std::getenv; +# 63 +using std::labs; +# 64 +using std::ldiv; +# 65 +using std::malloc; +# 67 +using std::mblen; +# 68 +using std::mbstowcs; +# 69 +using std::mbtowc; +# 71 +using std::qsort; +# 72 +using std::rand; +# 73 +using std::realloc; +# 74 +using std::srand; +# 75 +using std::strtod; +# 76 +using std::strtol; +# 77 +using std::strtoul; +# 78 +using std::system; +# 80 +using std::wcstombs; +# 81 +using std::wctomb; +# 10616 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +# 10617 +constexpr bool signbit(float x); +# 10618 +constexpr bool signbit(double x); +# 10619 +constexpr bool signbit(long double x); +# 10620 +constexpr bool isfinite(float x); +# 10621 +constexpr bool isfinite(double x); +# 10622 +constexpr bool isfinite(long double x); +# 10623 +constexpr bool isnan(float x); +# 10628 +constexpr bool isnan(double x); +# 10630 +constexpr bool isnan(long double x); +# 10631 +constexpr bool isinf(float x); +# 10636 +constexpr bool isinf(double x); +# 10638 +constexpr bool isinf(long double x); +# 10639 +} +# 10792 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +# 10794 +template< class T> extern T __pow_helper(T, int); +# 10795 +template< class T> extern T __cmath_power(T, unsigned); +# 10796 +} +# 10798 +using std::abs; +# 10799 +using std::fabs; +# 10800 +using std::ceil; +# 10801 +using std::floor; +# 10802 +using std::sqrt; +# 10804 +using std::pow; +# 10806 +using std::log; +# 10807 +using std::log10; +# 10808 +using std::fmod; +# 10809 +using std::modf; +# 10810 +using std::exp; +# 10811 +using std::frexp; +# 10812 +using std::ldexp; +# 10813 +using std::asin; +# 10814 +using std::sin; +# 10815 +using std::sinh; +# 10816 +using std::acos; +# 10817 +using std::cos; +# 10818 +using std::cosh; +# 10819 +using std::atan; +# 10820 +using std::atan2; +# 10821 +using std::tan; +# 10822 +using std::tanh; +# 11193 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +# 11202 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern inline long long abs(long long); +# 11212 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern inline long abs(long); +# 11213 +extern constexpr float abs(float); +# 11214 +extern constexpr double abs(double); +# 11215 +extern constexpr float fabs(float); +# 11216 +extern constexpr float ceil(float); +# 11217 +extern constexpr float floor(float); +# 11218 +extern constexpr float sqrt(float); +# 11219 +extern constexpr float pow(float, float); +# 11224 +template< class _Tp, class _Up> extern constexpr typename __gnu_cxx::__promote_2< _Tp, _Up> ::__type pow(_Tp, _Up); +# 11234 +extern constexpr float log(float); +# 11235 +extern constexpr float log10(float); +# 11236 +extern constexpr float fmod(float, float); +# 11237 +extern inline float modf(float, float *); +# 11238 +extern constexpr float exp(float); +# 11239 +extern inline float frexp(float, int *); +# 11240 +extern constexpr float ldexp(float, int); +# 11241 +extern constexpr float asin(float); +# 11242 +extern constexpr float sin(float); +# 11243 +extern constexpr float sinh(float); +# 11244 +extern constexpr float acos(float); +# 11245 +extern constexpr float cos(float); +# 11246 +extern constexpr float cosh(float); +# 11247 +extern constexpr float atan(float); +# 11248 +extern constexpr float atan2(float, float); +# 11249 +extern constexpr float tan(float); +# 11250 +extern constexpr float tanh(float); +# 11329 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +} +# 11435 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +namespace std { +# 11436 +constexpr float logb(float a); +# 11437 +constexpr int ilogb(float a); +# 11438 +constexpr float scalbn(float a, int b); +# 11439 +constexpr float scalbln(float a, long b); +# 11440 +constexpr float exp2(float a); +# 11441 +constexpr float expm1(float a); +# 11442 +constexpr float log2(float a); +# 11443 +constexpr float log1p(float a); +# 11444 +constexpr float acosh(float a); +# 11445 +constexpr float asinh(float a); +# 11446 +constexpr float atanh(float a); +# 11447 +constexpr float hypot(float a, float b); +# 11448 +constexpr float cbrt(float a); +# 11449 +constexpr float erf(float a); +# 11450 +constexpr float erfc(float a); +# 11451 +constexpr float lgamma(float a); +# 11452 +constexpr float tgamma(float a); +# 11453 +constexpr float copysign(float a, float b); +# 11454 +constexpr float nextafter(float a, float b); +# 11455 +constexpr float remainder(float a, float b); +# 11456 +inline float remquo(float a, float b, int * quo); +# 11457 +constexpr float round(float a); +# 11458 +constexpr long lround(float a); +# 11459 +constexpr long long llround(float a); +# 11460 +constexpr float trunc(float a); +# 11461 +constexpr float rint(float a); +# 11462 +constexpr long lrint(float a); +# 11463 +constexpr long long llrint(float a); +# 11464 +constexpr float nearbyint(float a); +# 11465 +constexpr float fdim(float a, float b); +# 11466 +constexpr float fma(float a, float b, float c); +# 11467 +constexpr float fmax(float a, float b); +# 11468 +constexpr float fmin(float a, float b); +# 11469 +} +# 11574 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline float exp10(const float a); +# 11576 +static inline float rsqrt(const float a); +# 11578 +static inline float rcbrt(const float a); +# 11580 +static inline float sinpi(const float a); +# 11582 +static inline float cospi(const float a); +# 11584 +static inline void sincospi(const float a, float *const sptr, float *const cptr); +# 11586 +static inline void sincos(const float a, float *const sptr, float *const cptr); +# 11588 +static inline float j0(const float a); +# 11590 +static inline float j1(const float a); +# 11592 +static inline float jn(const int n, const float a); +# 11594 +static inline float y0(const float a); +# 11596 +static inline float y1(const float a); +# 11598 +static inline float yn(const int n, const float a); +# 11600 +__attribute__((unused)) static inline float cyl_bessel_i0(const float a); +# 11602 +__attribute__((unused)) static inline float cyl_bessel_i1(const float a); +# 11604 +static inline float erfinv(const float a); +# 11606 +static inline float erfcinv(const float a); +# 11608 +static inline float normcdfinv(const float a); +# 11610 +static inline float normcdf(const float a); +# 11612 +static inline float erfcx(const float a); +# 11614 +static inline double copysign(const double a, const float b); +# 11616 +static inline double copysign(const float a, const double b); +# 11624 +static inline unsigned min(const unsigned a, const unsigned b); +# 11632 +static inline unsigned min(const int a, const unsigned b); +# 11640 +static inline unsigned min(const unsigned a, const int b); +# 11648 +static inline long min(const long a, const long b); +# 11656 +static inline unsigned long min(const unsigned long a, const unsigned long b); +# 11664 +static inline unsigned long min(const long a, const unsigned long b); +# 11672 +static inline unsigned long min(const unsigned long a, const long b); +# 11680 +static inline long long min(const long long a, const long long b); +# 11688 +static inline unsigned long long min(const unsigned long long a, const unsigned long long b); +# 11696 +static inline unsigned long long min(const long long a, const unsigned long long b); +# 11704 +static inline unsigned long long min(const unsigned long long a, const long long b); +# 11715 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline float min(const float a, const float b); +# 11726 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline double min(const double a, const double b); +# 11736 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline double min(const float a, const double b); +# 11746 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline double min(const double a, const float b); +# 11754 +static inline unsigned max(const unsigned a, const unsigned b); +# 11762 +static inline unsigned max(const int a, const unsigned b); +# 11770 +static inline unsigned max(const unsigned a, const int b); +# 11778 +static inline long max(const long a, const long b); +# 11786 +static inline unsigned long max(const unsigned long a, const unsigned long b); +# 11794 +static inline unsigned long max(const long a, const unsigned long b); +# 11802 +static inline unsigned long max(const unsigned long a, const long b); +# 11810 +static inline long long max(const long long a, const long long b); +# 11818 +static inline unsigned long long max(const unsigned long long a, const unsigned long long b); +# 11826 +static inline unsigned long long max(const long long a, const unsigned long long b); +# 11834 +static inline unsigned long long max(const unsigned long long a, const long long b); +# 11845 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline float max(const float a, const float b); +# 11856 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline double max(const double a, const double b); +# 11866 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline double max(const float a, const double b); +# 11876 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +static inline double max(const double a, const float b); +# 11887 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +extern "C" { +# 11888 +__attribute__((unused)) inline void *__nv_aligned_device_malloc(size_t size, size_t align) +# 11889 +{int volatile ___ = 1;(void)size;(void)align; +# 11892 +::exit(___);} +#if 0 +# 11889 +{ +# 11890 +__attribute__((unused)) void *__nv_aligned_device_malloc_impl(size_t, size_t); +# 11891 +return __nv_aligned_device_malloc_impl(size, align); +# 11892 +} +#endif +# 11893 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.h" +} +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +static inline float exp10(const float a) +# 759 +{ +# 760 +return exp10f(a); +# 761 +} +# 763 +static inline float rsqrt(const float a) +# 764 +{ +# 765 +return rsqrtf(a); +# 766 +} +# 768 +static inline float rcbrt(const float a) +# 769 +{ +# 770 +return rcbrtf(a); +# 771 +} +# 773 +static inline float sinpi(const float a) +# 774 +{ +# 775 +return sinpif(a); +# 776 +} +# 778 +static inline float cospi(const float a) +# 779 +{ +# 780 +return cospif(a); +# 781 +} +# 783 +static inline void sincospi(const float a, float *const sptr, float *const cptr) +# 784 +{ +# 785 +sincospif(a, sptr, cptr); +# 786 +} +# 788 +static inline void sincos(const float a, float *const sptr, float *const cptr) +# 789 +{ +# 790 +sincosf(a, sptr, cptr); +# 791 +} +# 793 +static inline float j0(const float a) +# 794 +{ +# 795 +return j0f(a); +# 796 +} +# 798 +static inline float j1(const float a) +# 799 +{ +# 800 +return j1f(a); +# 801 +} +# 803 +static inline float jn(const int n, const float a) +# 804 +{ +# 805 +return jnf(n, a); +# 806 +} +# 808 +static inline float y0(const float a) +# 809 +{ +# 810 +return y0f(a); +# 811 +} +# 813 +static inline float y1(const float a) +# 814 +{ +# 815 +return y1f(a); +# 816 +} +# 818 +static inline float yn(const int n, const float a) +# 819 +{ +# 820 +return ynf(n, a); +# 821 +} +# 823 +__attribute__((unused)) static inline float cyl_bessel_i0(const float a) +# 824 +{int volatile ___ = 1;(void)a; +# 826 +::exit(___);} +#if 0 +# 824 +{ +# 825 +return cyl_bessel_i0f(a); +# 826 +} +#endif +# 828 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +__attribute__((unused)) static inline float cyl_bessel_i1(const float a) +# 829 +{int volatile ___ = 1;(void)a; +# 831 +::exit(___);} +#if 0 +# 829 +{ +# 830 +return cyl_bessel_i1f(a); +# 831 +} +#endif +# 833 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +static inline float erfinv(const float a) +# 834 +{ +# 835 +return erfinvf(a); +# 836 +} +# 838 +static inline float erfcinv(const float a) +# 839 +{ +# 840 +return erfcinvf(a); +# 841 +} +# 843 +static inline float normcdfinv(const float a) +# 844 +{ +# 845 +return normcdfinvf(a); +# 846 +} +# 848 +static inline float normcdf(const float a) +# 849 +{ +# 850 +return normcdff(a); +# 851 +} +# 853 +static inline float erfcx(const float a) +# 854 +{ +# 855 +return erfcxf(a); +# 856 +} +# 858 +static inline double copysign(const double a, const float b) +# 859 +{ +# 860 +return copysign(a, static_cast< double>(b)); +# 861 +} +# 863 +static inline double copysign(const float a, const double b) +# 864 +{ +# 865 +return copysign(static_cast< double>(a), b); +# 866 +} +# 868 +static inline unsigned min(const unsigned a, const unsigned b) +# 869 +{ +# 870 +return umin(a, b); +# 871 +} +# 873 +static inline unsigned min(const int a, const unsigned b) +# 874 +{ +# 875 +return umin(static_cast< unsigned>(a), b); +# 876 +} +# 878 +static inline unsigned min(const unsigned a, const int b) +# 879 +{ +# 880 +return umin(a, static_cast< unsigned>(b)); +# 881 +} +# 883 +static inline long min(const long a, const long b) +# 884 +{ +# 885 +long retval; +# 891 +if (sizeof(long) == sizeof(int)) { +# 895 +retval = (static_cast< long>(min(static_cast< int>(a), static_cast< int>(b)))); +# 896 +} else { +# 897 +retval = (static_cast< long>(llmin(static_cast< long long>(a), static_cast< long long>(b)))); +# 898 +} +# 899 +return retval; +# 900 +} +# 902 +static inline unsigned long min(const unsigned long a, const unsigned long b) +# 903 +{ +# 904 +unsigned long retval; +# 908 +if (sizeof(unsigned long) == sizeof(unsigned)) { +# 912 +retval = (static_cast< unsigned long>(umin(static_cast< unsigned>(a), static_cast< unsigned>(b)))); +# 913 +} else { +# 914 +retval = (static_cast< unsigned long>(ullmin(static_cast< unsigned long long>(a), static_cast< unsigned long long>(b)))); +# 915 +} +# 916 +return retval; +# 917 +} +# 919 +static inline unsigned long min(const long a, const unsigned long b) +# 920 +{ +# 921 +unsigned long retval; +# 925 +if (sizeof(unsigned long) == sizeof(unsigned)) { +# 929 +retval = (static_cast< unsigned long>(umin(static_cast< unsigned>(a), static_cast< unsigned>(b)))); +# 930 +} else { +# 931 +retval = (static_cast< unsigned long>(ullmin(static_cast< unsigned long long>(a), static_cast< unsigned long long>(b)))); +# 932 +} +# 933 +return retval; +# 934 +} +# 936 +static inline unsigned long min(const unsigned long a, const long b) +# 937 +{ +# 938 +unsigned long retval; +# 942 +if (sizeof(unsigned long) == sizeof(unsigned)) { +# 946 +retval = (static_cast< unsigned long>(umin(static_cast< unsigned>(a), static_cast< unsigned>(b)))); +# 947 +} else { +# 948 +retval = (static_cast< unsigned long>(ullmin(static_cast< unsigned long long>(a), static_cast< unsigned long long>(b)))); +# 949 +} +# 950 +return retval; +# 951 +} +# 953 +static inline long long min(const long long a, const long long b) +# 954 +{ +# 955 +return llmin(a, b); +# 956 +} +# 958 +static inline unsigned long long min(const unsigned long long a, const unsigned long long b) +# 959 +{ +# 960 +return ullmin(a, b); +# 961 +} +# 963 +static inline unsigned long long min(const long long a, const unsigned long long b) +# 964 +{ +# 965 +return ullmin(static_cast< unsigned long long>(a), b); +# 966 +} +# 968 +static inline unsigned long long min(const unsigned long long a, const long long b) +# 969 +{ +# 970 +return ullmin(a, static_cast< unsigned long long>(b)); +# 971 +} +# 973 +static inline float min(const float a, const float b) +# 974 +{ +# 975 +return fminf(a, b); +# 976 +} +# 978 +static inline double min(const double a, const double b) +# 979 +{ +# 980 +return fmin(a, b); +# 981 +} +# 983 +static inline double min(const float a, const double b) +# 984 +{ +# 985 +return fmin(static_cast< double>(a), b); +# 986 +} +# 988 +static inline double min(const double a, const float b) +# 989 +{ +# 990 +return fmin(a, static_cast< double>(b)); +# 991 +} +# 993 +static inline unsigned max(const unsigned a, const unsigned b) +# 994 +{ +# 995 +return umax(a, b); +# 996 +} +# 998 +static inline unsigned max(const int a, const unsigned b) +# 999 +{ +# 1000 +return umax(static_cast< unsigned>(a), b); +# 1001 +} +# 1003 +static inline unsigned max(const unsigned a, const int b) +# 1004 +{ +# 1005 +return umax(a, static_cast< unsigned>(b)); +# 1006 +} +# 1008 +static inline long max(const long a, const long b) +# 1009 +{ +# 1010 +long retval; +# 1015 +if (sizeof(long) == sizeof(int)) { +# 1019 +retval = (static_cast< long>(max(static_cast< int>(a), static_cast< int>(b)))); +# 1020 +} else { +# 1021 +retval = (static_cast< long>(llmax(static_cast< long long>(a), static_cast< long long>(b)))); +# 1022 +} +# 1023 +return retval; +# 1024 +} +# 1026 +static inline unsigned long max(const unsigned long a, const unsigned long b) +# 1027 +{ +# 1028 +unsigned long retval; +# 1032 +if (sizeof(unsigned long) == sizeof(unsigned)) { +# 1036 +retval = (static_cast< unsigned long>(umax(static_cast< unsigned>(a), static_cast< unsigned>(b)))); +# 1037 +} else { +# 1038 +retval = (static_cast< unsigned long>(ullmax(static_cast< unsigned long long>(a), static_cast< unsigned long long>(b)))); +# 1039 +} +# 1040 +return retval; +# 1041 +} +# 1043 +static inline unsigned long max(const long a, const unsigned long b) +# 1044 +{ +# 1045 +unsigned long retval; +# 1049 +if (sizeof(unsigned long) == sizeof(unsigned)) { +# 1053 +retval = (static_cast< unsigned long>(umax(static_cast< unsigned>(a), static_cast< unsigned>(b)))); +# 1054 +} else { +# 1055 +retval = (static_cast< unsigned long>(ullmax(static_cast< unsigned long long>(a), static_cast< unsigned long long>(b)))); +# 1056 +} +# 1057 +return retval; +# 1058 +} +# 1060 +static inline unsigned long max(const unsigned long a, const long b) +# 1061 +{ +# 1062 +unsigned long retval; +# 1066 +if (sizeof(unsigned long) == sizeof(unsigned)) { +# 1070 +retval = (static_cast< unsigned long>(umax(static_cast< unsigned>(a), static_cast< unsigned>(b)))); +# 1071 +} else { +# 1072 +retval = (static_cast< unsigned long>(ullmax(static_cast< unsigned long long>(a), static_cast< unsigned long long>(b)))); +# 1073 +} +# 1074 +return retval; +# 1075 +} +# 1077 +static inline long long max(const long long a, const long long b) +# 1078 +{ +# 1079 +return llmax(a, b); +# 1080 +} +# 1082 +static inline unsigned long long max(const unsigned long long a, const unsigned long long b) +# 1083 +{ +# 1084 +return ullmax(a, b); +# 1085 +} +# 1087 +static inline unsigned long long max(const long long a, const unsigned long long b) +# 1088 +{ +# 1089 +return ullmax(static_cast< unsigned long long>(a), b); +# 1090 +} +# 1092 +static inline unsigned long long max(const unsigned long long a, const long long b) +# 1093 +{ +# 1094 +return ullmax(a, static_cast< unsigned long long>(b)); +# 1095 +} +# 1097 +static inline float max(const float a, const float b) +# 1098 +{ +# 1099 +return fmaxf(a, b); +# 1100 +} +# 1102 +static inline double max(const double a, const double b) +# 1103 +{ +# 1104 +return fmax(a, b); +# 1105 +} +# 1107 +static inline double max(const float a, const double b) +# 1108 +{ +# 1109 +return fmax(static_cast< double>(a), b); +# 1110 +} +# 1112 +static inline double max(const double a, const float b) +# 1113 +{ +# 1114 +return fmax(a, static_cast< double>(b)); +# 1115 +} +# 1126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/math_functions.hpp" +inline int min(const int a, const int b) +# 1127 +{ +# 1128 +return (a < b) ? a : b; +# 1129 +} +# 1131 +inline unsigned umin(const unsigned a, const unsigned b) +# 1132 +{ +# 1133 +return (a < b) ? a : b; +# 1134 +} +# 1136 +inline long long llmin(const long long a, const long long b) +# 1137 +{ +# 1138 +return (a < b) ? a : b; +# 1139 +} +# 1141 +inline unsigned long long ullmin(const unsigned long long a, const unsigned long long +# 1142 +b) +# 1143 +{ +# 1144 +return (a < b) ? a : b; +# 1145 +} +# 1147 +inline int max(const int a, const int b) +# 1148 +{ +# 1149 +return (a > b) ? a : b; +# 1150 +} +# 1152 +inline unsigned umax(const unsigned a, const unsigned b) +# 1153 +{ +# 1154 +return (a > b) ? a : b; +# 1155 +} +# 1157 +inline long long llmax(const long long a, const long long b) +# 1158 +{ +# 1159 +return (a > b) ? a : b; +# 1160 +} +# 1162 +inline unsigned long long ullmax(const unsigned long long a, const unsigned long long +# 1163 +b) +# 1164 +{ +# 1165 +return (a > b) ? a : b; +# 1166 +} +# 74 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_surface_types.h" +template< class T, int dim = 1> +# 75 +struct surface : public surfaceReference { +# 78 +surface() +# 79 +{ +# 80 +(channelDesc) = cudaCreateChannelDesc< T> (); +# 81 +} +# 83 +surface(cudaChannelFormatDesc desc) +# 84 +{ +# 85 +(channelDesc) = desc; +# 86 +} +# 88 +}; +# 90 +template< int dim> +# 91 +struct surface< void, dim> : public surfaceReference { +# 94 +surface() +# 95 +{ +# 96 +(channelDesc) = cudaCreateChannelDesc< void> (); +# 97 +} +# 99 +}; +# 74 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_texture_types.h" +template< class T, int texType = 1, cudaTextureReadMode mode = cudaReadModeElementType> +# 75 +struct texture : public textureReference { +# 78 +texture(int norm = 0, cudaTextureFilterMode +# 79 +fMode = cudaFilterModePoint, cudaTextureAddressMode +# 80 +aMode = cudaAddressModeClamp) +# 81 +{ +# 82 +(normalized) = norm; +# 83 +(filterMode) = fMode; +# 84 +((addressMode)[0]) = aMode; +# 85 +((addressMode)[1]) = aMode; +# 86 +((addressMode)[2]) = aMode; +# 87 +(channelDesc) = cudaCreateChannelDesc< T> (); +# 88 +(sRGB) = 0; +# 89 +} +# 91 +texture(int norm, cudaTextureFilterMode +# 92 +fMode, cudaTextureAddressMode +# 93 +aMode, cudaChannelFormatDesc +# 94 +desc) +# 95 +{ +# 96 +(normalized) = norm; +# 97 +(filterMode) = fMode; +# 98 +((addressMode)[0]) = aMode; +# 99 +((addressMode)[1]) = aMode; +# 100 +((addressMode)[2]) = aMode; +# 101 +(channelDesc) = desc; +# 102 +(sRGB) = 0; +# 103 +} +# 105 +}; +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +extern "C" { +# 3207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +} +# 3229 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +__attribute((deprecated("mulhi() is deprecated in favor of __mulhi() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress" " this warning)."))) __attribute__((unused)) static inline int mulhi(const int a, const int b); +# 3231 +__attribute((deprecated("mulhi() is deprecated in favor of __mulhi() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress" " this warning)."))) __attribute__((unused)) static inline unsigned mulhi(const unsigned a, const unsigned b); +# 3233 +__attribute((deprecated("mulhi() is deprecated in favor of __mulhi() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress" " this warning)."))) __attribute__((unused)) static inline unsigned mulhi(const int a, const unsigned b); +# 3235 +__attribute((deprecated("mulhi() is deprecated in favor of __mulhi() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress" " this warning)."))) __attribute__((unused)) static inline unsigned mulhi(const unsigned a, const int b); +# 3237 +__attribute((deprecated("mul64hi() is deprecated in favor of __mul64hi() and may be removed in a future release (Use -Wno-deprecated-declarations to supp" "ress this warning)."))) __attribute__((unused)) static inline long long mul64hi(const long long a, const long long b); +# 3239 +__attribute((deprecated("mul64hi() is deprecated in favor of __mul64hi() and may be removed in a future release (Use -Wno-deprecated-declarations to supp" "ress this warning)."))) __attribute__((unused)) static inline unsigned long long mul64hi(const unsigned long long a, const unsigned long long b); +# 3241 +__attribute((deprecated("mul64hi() is deprecated in favor of __mul64hi() and may be removed in a future release (Use -Wno-deprecated-declarations to supp" "ress this warning)."))) __attribute__((unused)) static inline unsigned long long mul64hi(const long long a, const unsigned long long b); +# 3243 +__attribute((deprecated("mul64hi() is deprecated in favor of __mul64hi() and may be removed in a future release (Use -Wno-deprecated-declarations to supp" "ress this warning)."))) __attribute__((unused)) static inline unsigned long long mul64hi(const unsigned long long a, const long long b); +# 3245 +__attribute((deprecated("float_as_int() is deprecated in favor of __float_as_int() and may be removed in a future release (Use -Wno-deprecated-declaratio" "ns to suppress this warning)."))) __attribute__((unused)) static inline int float_as_int(const float a); +# 3247 +__attribute((deprecated("int_as_float() is deprecated in favor of __int_as_float() and may be removed in a future release (Use -Wno-deprecated-declaratio" "ns to suppress this warning)."))) __attribute__((unused)) static inline float int_as_float(const int a); +# 3249 +__attribute((deprecated("float_as_uint() is deprecated in favor of __float_as_uint() and may be removed in a future release (Use -Wno-deprecated-declarat" "ions to suppress this warning)."))) __attribute__((unused)) static inline unsigned float_as_uint(const float a); +# 3251 +__attribute((deprecated("uint_as_float() is deprecated in favor of __uint_as_float() and may be removed in a future release (Use -Wno-deprecated-declarat" "ions to suppress this warning)."))) __attribute__((unused)) static inline float uint_as_float(const unsigned a); +# 3253 +__attribute((deprecated("saturate() is deprecated in favor of __saturatef() and may be removed in a future release (Use -Wno-deprecated-declarations to s" "uppress this warning)."))) __attribute__((unused)) static inline float saturate(const float a); +# 3255 +__attribute((deprecated("mul24() is deprecated in favor of __mul24() and may be removed in a future release (Use -Wno-deprecated-declarations to suppress" " this warning)."))) __attribute__((unused)) static inline int mul24(const int a, const int b); +# 3257 +__attribute((deprecated("umul24() is deprecated in favor of __umul24() and may be removed in a future release (Use -Wno-deprecated-declarations to suppre" "ss this warning)."))) __attribute__((unused)) static inline unsigned umul24(const unsigned a, const unsigned b); +# 3259 +__attribute((deprecated("float2int() is deprecated in favor of __float2int_ru|_rd|_rn|_rz() and may be removed in a future release (Use -Wno-deprecated-d" "eclarations to suppress this warning)."))) __attribute__((unused)) static inline int float2int(const float a, const cudaRoundMode mode = cudaRoundZero); +# 3261 +__attribute((deprecated("float2uint() is deprecated in favor of __float2uint_ru|_rd|_rn|_rz() and may be removed in a future release (Use -Wno-deprecated" "-declarations to suppress this warning)."))) __attribute__((unused)) static inline unsigned float2uint(const float a, const cudaRoundMode mode = cudaRoundZero); +# 3263 +__attribute((deprecated("int2float() is deprecated in favor of __int2float_ru|_rd|_rn|_rz() and may be removed in a future release (Use -Wno-deprecated-d" "eclarations to suppress this warning)."))) __attribute__((unused)) static inline float int2float(const int a, const cudaRoundMode mode = cudaRoundNearest); +# 3265 +__attribute((deprecated("uint2float() is deprecated in favor of __uint2float_ru|_rd|_rn|_rz() and may be removed in a future release (Use -Wno-deprecated" "-declarations to suppress this warning)."))) __attribute__((unused)) static inline float uint2float(const unsigned a, const cudaRoundMode mode = cudaRoundNearest); +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline int mulhi(const int a, const int b) +# 91 +{int volatile ___ = 1;(void)a;(void)b; +# 93 +::exit(___);} +#if 0 +# 91 +{ +# 92 +return __mulhi(a, b); +# 93 +} +#endif +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned mulhi(const unsigned a, const unsigned b) +# 96 +{int volatile ___ = 1;(void)a;(void)b; +# 98 +::exit(___);} +#if 0 +# 96 +{ +# 97 +return __umulhi(a, b); +# 98 +} +#endif +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned mulhi(const int a, const unsigned b) +# 101 +{int volatile ___ = 1;(void)a;(void)b; +# 103 +::exit(___);} +#if 0 +# 101 +{ +# 102 +return __umulhi(static_cast< unsigned>(a), b); +# 103 +} +#endif +# 105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned mulhi(const unsigned a, const int b) +# 106 +{int volatile ___ = 1;(void)a;(void)b; +# 108 +::exit(___);} +#if 0 +# 106 +{ +# 107 +return __umulhi(a, static_cast< unsigned>(b)); +# 108 +} +#endif +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline long long mul64hi(const long long a, const long long b) +# 111 +{int volatile ___ = 1;(void)a;(void)b; +# 113 +::exit(___);} +#if 0 +# 111 +{ +# 112 +return __mul64hi(a, b); +# 113 +} +#endif +# 115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned long long mul64hi(const unsigned long long a, const unsigned long long b) +# 116 +{int volatile ___ = 1;(void)a;(void)b; +# 118 +::exit(___);} +#if 0 +# 116 +{ +# 117 +return __umul64hi(a, b); +# 118 +} +#endif +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned long long mul64hi(const long long a, const unsigned long long b) +# 121 +{int volatile ___ = 1;(void)a;(void)b; +# 123 +::exit(___);} +#if 0 +# 121 +{ +# 122 +return __umul64hi(static_cast< unsigned long long>(a), b); +# 123 +} +#endif +# 125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned long long mul64hi(const unsigned long long a, const long long b) +# 126 +{int volatile ___ = 1;(void)a;(void)b; +# 128 +::exit(___);} +#if 0 +# 126 +{ +# 127 +return __umul64hi(a, static_cast< unsigned long long>(b)); +# 128 +} +#endif +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline int float_as_int(const float a) +# 131 +{int volatile ___ = 1;(void)a; +# 133 +::exit(___);} +#if 0 +# 131 +{ +# 132 +return __float_as_int(a); +# 133 +} +#endif +# 135 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline float int_as_float(const int a) +# 136 +{int volatile ___ = 1;(void)a; +# 138 +::exit(___);} +#if 0 +# 136 +{ +# 137 +return __int_as_float(a); +# 138 +} +#endif +# 140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned float_as_uint(const float a) +# 141 +{int volatile ___ = 1;(void)a; +# 143 +::exit(___);} +#if 0 +# 141 +{ +# 142 +return __float_as_uint(a); +# 143 +} +#endif +# 145 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline float uint_as_float(const unsigned a) +# 146 +{int volatile ___ = 1;(void)a; +# 148 +::exit(___);} +#if 0 +# 146 +{ +# 147 +return __uint_as_float(a); +# 148 +} +#endif +# 149 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline float saturate(const float a) +# 150 +{int volatile ___ = 1;(void)a; +# 152 +::exit(___);} +#if 0 +# 150 +{ +# 151 +return __saturatef(a); +# 152 +} +#endif +# 154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline int mul24(const int a, const int b) +# 155 +{int volatile ___ = 1;(void)a;(void)b; +# 157 +::exit(___);} +#if 0 +# 155 +{ +# 156 +return __mul24(a, b); +# 157 +} +#endif +# 159 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned umul24(const unsigned a, const unsigned b) +# 160 +{int volatile ___ = 1;(void)a;(void)b; +# 162 +::exit(___);} +#if 0 +# 160 +{ +# 161 +return __umul24(a, b); +# 162 +} +#endif +# 164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline int float2int(const float a, const cudaRoundMode mode) +# 165 +{int volatile ___ = 1;(void)a;(void)mode; +# 170 +::exit(___);} +#if 0 +# 165 +{ +# 166 +return (mode == (cudaRoundNearest)) ? __float2int_rn(a) : ((mode == (cudaRoundPosInf)) ? __float2int_ru(a) : ((mode == (cudaRoundMinInf)) ? __float2int_rd(a) : __float2int_rz(a))); +# 170 +} +#endif +# 172 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline unsigned float2uint(const float a, const cudaRoundMode mode) +# 173 +{int volatile ___ = 1;(void)a;(void)mode; +# 178 +::exit(___);} +#if 0 +# 173 +{ +# 174 +return (mode == (cudaRoundNearest)) ? __float2uint_rn(a) : ((mode == (cudaRoundPosInf)) ? __float2uint_ru(a) : ((mode == (cudaRoundMinInf)) ? __float2uint_rd(a) : __float2uint_rz(a))); +# 178 +} +#endif +# 180 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline float int2float(const int a, const cudaRoundMode mode) +# 181 +{int volatile ___ = 1;(void)a;(void)mode; +# 186 +::exit(___);} +#if 0 +# 181 +{ +# 182 +return (mode == (cudaRoundZero)) ? __int2float_rz(a) : ((mode == (cudaRoundPosInf)) ? __int2float_ru(a) : ((mode == (cudaRoundMinInf)) ? __int2float_rd(a) : __int2float_rn(a))); +# 186 +} +#endif +# 188 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.hpp" +__attribute__((unused)) static inline float uint2float(const unsigned a, const cudaRoundMode mode) +# 189 +{int volatile ___ = 1;(void)a;(void)mode; +# 194 +::exit(___);} +#if 0 +# 189 +{ +# 190 +return (mode == (cudaRoundZero)) ? __uint2float_rz(a) : ((mode == (cudaRoundPosInf)) ? __uint2float_ru(a) : ((mode == (cudaRoundMinInf)) ? __uint2float_rd(a) : __uint2float_rn(a))); +# 194 +} +#endif +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicAdd(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 106 +{ } +#endif +# 108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicAdd(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 108 +{ } +#endif +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicSub(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 110 +{ } +#endif +# 112 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicSub(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 112 +{ } +#endif +# 114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicExch(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 114 +{ } +#endif +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicExch(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 116 +{ } +#endif +# 118 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline float atomicExch(float *address, float val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 118 +{ } +#endif +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicMin(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 120 +{ } +#endif +# 122 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicMin(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 122 +{ } +#endif +# 124 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicMax(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 124 +{ } +#endif +# 126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicMax(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 126 +{ } +#endif +# 128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicInc(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 128 +{ } +#endif +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicDec(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 130 +{ } +#endif +# 132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicAnd(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 132 +{ } +#endif +# 134 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicAnd(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 134 +{ } +#endif +# 136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicOr(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 136 +{ } +#endif +# 138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicOr(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 138 +{ } +#endif +# 140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicXor(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 140 +{ } +#endif +# 142 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicXor(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 142 +{ } +#endif +# 144 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline int atomicCAS(int *address, int compare, int val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 144 +{ } +#endif +# 146 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicCAS(unsigned *address, unsigned compare, unsigned val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 146 +{ } +#endif +# 171 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +extern "C" { +# 180 +} +# 189 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicAdd(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 189 +{ } +#endif +# 191 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicExch(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 191 +{ } +#endif +# 193 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicCAS(unsigned long long *address, unsigned long long compare, unsigned long long val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 193 +{ } +#endif +# 195 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute((deprecated("__any() is deprecated in favor of __any_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppr" "ess this warning)."))) __attribute__((unused)) static inline bool any(bool cond) {int volatile ___ = 1;(void)cond;::exit(___);} +#if 0 +# 195 +{ } +#endif +# 197 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_atomic_functions.h" +__attribute((deprecated("__all() is deprecated in favor of __all_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to suppr" "ess this warning)."))) __attribute__((unused)) static inline bool all(bool cond) {int volatile ___ = 1;(void)cond;::exit(___);} +#if 0 +# 197 +{ } +#endif +# 87 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +extern "C" { +# 1139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.h" +} +# 1147 +__attribute__((unused)) static inline double fma(double a, double b, double c, cudaRoundMode mode); +# 1149 +__attribute__((unused)) static inline double dmul(double a, double b, cudaRoundMode mode = cudaRoundNearest); +# 1151 +__attribute__((unused)) static inline double dadd(double a, double b, cudaRoundMode mode = cudaRoundNearest); +# 1153 +__attribute__((unused)) static inline double dsub(double a, double b, cudaRoundMode mode = cudaRoundNearest); +# 1155 +__attribute__((unused)) static inline int double2int(double a, cudaRoundMode mode = cudaRoundZero); +# 1157 +__attribute__((unused)) static inline unsigned double2uint(double a, cudaRoundMode mode = cudaRoundZero); +# 1159 +__attribute__((unused)) static inline long long double2ll(double a, cudaRoundMode mode = cudaRoundZero); +# 1161 +__attribute__((unused)) static inline unsigned long long double2ull(double a, cudaRoundMode mode = cudaRoundZero); +# 1163 +__attribute__((unused)) static inline double ll2double(long long a, cudaRoundMode mode = cudaRoundNearest); +# 1165 +__attribute__((unused)) static inline double ull2double(unsigned long long a, cudaRoundMode mode = cudaRoundNearest); +# 1167 +__attribute__((unused)) static inline double int2double(int a, cudaRoundMode mode = cudaRoundNearest); +# 1169 +__attribute__((unused)) static inline double uint2double(unsigned a, cudaRoundMode mode = cudaRoundNearest); +# 1171 +__attribute__((unused)) static inline double float2double(float a, cudaRoundMode mode = cudaRoundNearest); +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double fma(double a, double b, double c, cudaRoundMode mode) +# 94 +{int volatile ___ = 1;(void)a;(void)b;(void)c;(void)mode; +# 99 +::exit(___);} +#if 0 +# 94 +{ +# 95 +return (mode == (cudaRoundZero)) ? __fma_rz(a, b, c) : ((mode == (cudaRoundPosInf)) ? __fma_ru(a, b, c) : ((mode == (cudaRoundMinInf)) ? __fma_rd(a, b, c) : __fma_rn(a, b, c))); +# 99 +} +#endif +# 101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double dmul(double a, double b, cudaRoundMode mode) +# 102 +{int volatile ___ = 1;(void)a;(void)b;(void)mode; +# 107 +::exit(___);} +#if 0 +# 102 +{ +# 103 +return (mode == (cudaRoundZero)) ? __dmul_rz(a, b) : ((mode == (cudaRoundPosInf)) ? __dmul_ru(a, b) : ((mode == (cudaRoundMinInf)) ? __dmul_rd(a, b) : __dmul_rn(a, b))); +# 107 +} +#endif +# 109 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double dadd(double a, double b, cudaRoundMode mode) +# 110 +{int volatile ___ = 1;(void)a;(void)b;(void)mode; +# 115 +::exit(___);} +#if 0 +# 110 +{ +# 111 +return (mode == (cudaRoundZero)) ? __dadd_rz(a, b) : ((mode == (cudaRoundPosInf)) ? __dadd_ru(a, b) : ((mode == (cudaRoundMinInf)) ? __dadd_rd(a, b) : __dadd_rn(a, b))); +# 115 +} +#endif +# 117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double dsub(double a, double b, cudaRoundMode mode) +# 118 +{int volatile ___ = 1;(void)a;(void)b;(void)mode; +# 123 +::exit(___);} +#if 0 +# 118 +{ +# 119 +return (mode == (cudaRoundZero)) ? __dsub_rz(a, b) : ((mode == (cudaRoundPosInf)) ? __dsub_ru(a, b) : ((mode == (cudaRoundMinInf)) ? __dsub_rd(a, b) : __dsub_rn(a, b))); +# 123 +} +#endif +# 125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline int double2int(double a, cudaRoundMode mode) +# 126 +{int volatile ___ = 1;(void)a;(void)mode; +# 131 +::exit(___);} +#if 0 +# 126 +{ +# 127 +return (mode == (cudaRoundNearest)) ? __double2int_rn(a) : ((mode == (cudaRoundPosInf)) ? __double2int_ru(a) : ((mode == (cudaRoundMinInf)) ? __double2int_rd(a) : __double2int_rz(a))); +# 131 +} +#endif +# 133 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline unsigned double2uint(double a, cudaRoundMode mode) +# 134 +{int volatile ___ = 1;(void)a;(void)mode; +# 139 +::exit(___);} +#if 0 +# 134 +{ +# 135 +return (mode == (cudaRoundNearest)) ? __double2uint_rn(a) : ((mode == (cudaRoundPosInf)) ? __double2uint_ru(a) : ((mode == (cudaRoundMinInf)) ? __double2uint_rd(a) : __double2uint_rz(a))); +# 139 +} +#endif +# 141 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline long long double2ll(double a, cudaRoundMode mode) +# 142 +{int volatile ___ = 1;(void)a;(void)mode; +# 147 +::exit(___);} +#if 0 +# 142 +{ +# 143 +return (mode == (cudaRoundNearest)) ? __double2ll_rn(a) : ((mode == (cudaRoundPosInf)) ? __double2ll_ru(a) : ((mode == (cudaRoundMinInf)) ? __double2ll_rd(a) : __double2ll_rz(a))); +# 147 +} +#endif +# 149 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline unsigned long long double2ull(double a, cudaRoundMode mode) +# 150 +{int volatile ___ = 1;(void)a;(void)mode; +# 155 +::exit(___);} +#if 0 +# 150 +{ +# 151 +return (mode == (cudaRoundNearest)) ? __double2ull_rn(a) : ((mode == (cudaRoundPosInf)) ? __double2ull_ru(a) : ((mode == (cudaRoundMinInf)) ? __double2ull_rd(a) : __double2ull_rz(a))); +# 155 +} +#endif +# 157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double ll2double(long long a, cudaRoundMode mode) +# 158 +{int volatile ___ = 1;(void)a;(void)mode; +# 163 +::exit(___);} +#if 0 +# 158 +{ +# 159 +return (mode == (cudaRoundZero)) ? __ll2double_rz(a) : ((mode == (cudaRoundPosInf)) ? __ll2double_ru(a) : ((mode == (cudaRoundMinInf)) ? __ll2double_rd(a) : __ll2double_rn(a))); +# 163 +} +#endif +# 165 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double ull2double(unsigned long long a, cudaRoundMode mode) +# 166 +{int volatile ___ = 1;(void)a;(void)mode; +# 171 +::exit(___);} +#if 0 +# 166 +{ +# 167 +return (mode == (cudaRoundZero)) ? __ull2double_rz(a) : ((mode == (cudaRoundPosInf)) ? __ull2double_ru(a) : ((mode == (cudaRoundMinInf)) ? __ull2double_rd(a) : __ull2double_rn(a))); +# 171 +} +#endif +# 173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double int2double(int a, cudaRoundMode mode) +# 174 +{int volatile ___ = 1;(void)a;(void)mode; +# 176 +::exit(___);} +#if 0 +# 174 +{ +# 175 +return (double)a; +# 176 +} +#endif +# 178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double uint2double(unsigned a, cudaRoundMode mode) +# 179 +{int volatile ___ = 1;(void)a;(void)mode; +# 181 +::exit(___);} +#if 0 +# 179 +{ +# 180 +return (double)a; +# 181 +} +#endif +# 183 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_double_functions.hpp" +__attribute__((unused)) static inline double float2double(float a, cudaRoundMode mode) +# 184 +{int volatile ___ = 1;(void)a;(void)mode; +# 186 +::exit(___);} +#if 0 +# 184 +{ +# 185 +return (double)a; +# 186 +} +#endif +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_atomic_functions.h" +__attribute__((unused)) static inline float atomicAdd(float *address, float val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 89 +{ } +#endif +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline long long atomicMin(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 100 +{ } +#endif +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline long long atomicMax(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 102 +{ } +#endif +# 104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline long long atomicAnd(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 104 +{ } +#endif +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline long long atomicOr(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 106 +{ } +#endif +# 108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline long long atomicXor(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 108 +{ } +#endif +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicMin(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 110 +{ } +#endif +# 112 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicMax(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 112 +{ } +#endif +# 114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicAnd(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 114 +{ } +#endif +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicOr(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 116 +{ } +#endif +# 118 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicXor(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 118 +{ } +#endif +# 303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline double atomicAdd(double *address, double val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 303 +{ } +#endif +# 306 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicAdd_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 306 +{ } +#endif +# 309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicAdd_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 309 +{ } +#endif +# 312 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicAdd_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 312 +{ } +#endif +# 315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicAdd_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 315 +{ } +#endif +# 318 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicAdd_block(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 318 +{ } +#endif +# 321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicAdd_system(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 321 +{ } +#endif +# 324 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline float atomicAdd_block(float *address, float val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 324 +{ } +#endif +# 327 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline float atomicAdd_system(float *address, float val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 327 +{ } +#endif +# 330 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline double atomicAdd_block(double *address, double val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 330 +{ } +#endif +# 333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline double atomicAdd_system(double *address, double val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 333 +{ } +#endif +# 336 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicSub_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 336 +{ } +#endif +# 339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicSub_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 339 +{ } +#endif +# 342 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicSub_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 342 +{ } +#endif +# 345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicSub_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 345 +{ } +#endif +# 348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicExch_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 348 +{ } +#endif +# 351 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicExch_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 351 +{ } +#endif +# 354 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicExch_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 354 +{ } +#endif +# 357 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicExch_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 357 +{ } +#endif +# 360 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicExch_block(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 360 +{ } +#endif +# 363 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicExch_system(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 363 +{ } +#endif +# 366 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline float atomicExch_block(float *address, float val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 366 +{ } +#endif +# 369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline float atomicExch_system(float *address, float val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 369 +{ } +#endif +# 372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicMin_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 372 +{ } +#endif +# 375 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicMin_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 375 +{ } +#endif +# 378 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicMin_block(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 378 +{ } +#endif +# 381 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicMin_system(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 381 +{ } +#endif +# 384 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicMin_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 384 +{ } +#endif +# 387 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicMin_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 387 +{ } +#endif +# 390 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicMin_block(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 390 +{ } +#endif +# 393 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicMin_system(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 393 +{ } +#endif +# 396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicMax_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 396 +{ } +#endif +# 399 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicMax_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 399 +{ } +#endif +# 402 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicMax_block(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 402 +{ } +#endif +# 405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicMax_system(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 405 +{ } +#endif +# 408 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicMax_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 408 +{ } +#endif +# 411 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicMax_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 411 +{ } +#endif +# 414 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicMax_block(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 414 +{ } +#endif +# 417 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicMax_system(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 417 +{ } +#endif +# 420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicInc_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 420 +{ } +#endif +# 423 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicInc_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 423 +{ } +#endif +# 426 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicDec_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 426 +{ } +#endif +# 429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicDec_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 429 +{ } +#endif +# 432 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicCAS_block(int *address, int compare, int val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 432 +{ } +#endif +# 435 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicCAS_system(int *address, int compare, int val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 435 +{ } +#endif +# 438 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicCAS_block(unsigned *address, unsigned compare, unsigned +# 439 +val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 439 +{ } +#endif +# 442 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicCAS_system(unsigned *address, unsigned compare, unsigned +# 443 +val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 443 +{ } +#endif +# 446 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicCAS_block(unsigned long long *address, unsigned long long +# 447 +compare, unsigned long long +# 448 +val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 448 +{ } +#endif +# 451 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicCAS_system(unsigned long long *address, unsigned long long +# 452 +compare, unsigned long long +# 453 +val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 453 +{ } +#endif +# 456 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicAnd_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 456 +{ } +#endif +# 459 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicAnd_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 459 +{ } +#endif +# 462 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicAnd_block(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 462 +{ } +#endif +# 465 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicAnd_system(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 465 +{ } +#endif +# 468 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicAnd_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 468 +{ } +#endif +# 471 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicAnd_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 471 +{ } +#endif +# 474 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicAnd_block(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 474 +{ } +#endif +# 477 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicAnd_system(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 477 +{ } +#endif +# 480 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicOr_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 480 +{ } +#endif +# 483 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicOr_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 483 +{ } +#endif +# 486 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicOr_block(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 486 +{ } +#endif +# 489 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicOr_system(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 489 +{ } +#endif +# 492 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicOr_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 492 +{ } +#endif +# 495 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicOr_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 495 +{ } +#endif +# 498 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicOr_block(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 498 +{ } +#endif +# 501 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicOr_system(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 501 +{ } +#endif +# 504 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicXor_block(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 504 +{ } +#endif +# 507 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline int atomicXor_system(int *address, int val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 507 +{ } +#endif +# 510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicXor_block(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 510 +{ } +#endif +# 513 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline long long atomicXor_system(long long *address, long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 513 +{ } +#endif +# 516 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicXor_block(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 516 +{ } +#endif +# 519 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned atomicXor_system(unsigned *address, unsigned val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 519 +{ } +#endif +# 522 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicXor_block(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 522 +{ } +#endif +# 525 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_60_atomic_functions.h" +__attribute__((unused)) static inline unsigned long long atomicXor_system(unsigned long long *address, unsigned long long val) {int volatile ___ = 1;(void)address;(void)val;::exit(___);} +#if 0 +# 525 +{ } +#endif +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +extern "C" { +# 1503 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +} +# 1510 +__attribute((deprecated("__ballot() is deprecated in favor of __ballot_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to" " suppress this warning)."))) __attribute__((unused)) static inline unsigned ballot(bool pred) {int volatile ___ = 1;(void)pred;::exit(___);} +#if 0 +# 1510 +{ } +#endif +# 1512 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline int syncthreads_count(bool pred) {int volatile ___ = 1;(void)pred;::exit(___);} +#if 0 +# 1512 +{ } +#endif +# 1514 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline bool syncthreads_and(bool pred) {int volatile ___ = 1;(void)pred;::exit(___);} +#if 0 +# 1514 +{ } +#endif +# 1516 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline bool syncthreads_or(bool pred) {int volatile ___ = 1;(void)pred;::exit(___);} +#if 0 +# 1516 +{ } +#endif +# 1521 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline unsigned __isGlobal(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1521 +{ } +#endif +# 1522 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline unsigned __isShared(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1522 +{ } +#endif +# 1523 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline unsigned __isConstant(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1523 +{ } +#endif +# 1524 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline unsigned __isLocal(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1524 +{ } +#endif +# 1526 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline unsigned __isGridConstant(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1526 +{ } +#endif +# 1528 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline size_t __cvta_generic_to_global(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1528 +{ } +#endif +# 1529 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline size_t __cvta_generic_to_shared(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1529 +{ } +#endif +# 1530 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline size_t __cvta_generic_to_constant(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1530 +{ } +#endif +# 1531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline size_t __cvta_generic_to_local(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1531 +{ } +#endif +# 1533 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline size_t __cvta_generic_to_grid_constant(const void *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 1533 +{ } +#endif +# 1536 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline void *__cvta_global_to_generic(size_t rawbits) {int volatile ___ = 1;(void)rawbits;::exit(___);} +#if 0 +# 1536 +{ } +#endif +# 1537 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline void *__cvta_shared_to_generic(size_t rawbits) {int volatile ___ = 1;(void)rawbits;::exit(___);} +#if 0 +# 1537 +{ } +#endif +# 1538 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline void *__cvta_constant_to_generic(size_t rawbits) {int volatile ___ = 1;(void)rawbits;::exit(___);} +#if 0 +# 1538 +{ } +#endif +# 1539 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline void *__cvta_local_to_generic(size_t rawbits) {int volatile ___ = 1;(void)rawbits;::exit(___);} +#if 0 +# 1539 +{ } +#endif +# 1541 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_20_intrinsics.h" +__attribute__((unused)) static inline void *__cvta_grid_constant_to_generic(size_t rawbits) {int volatile ___ = 1;(void)rawbits;::exit(___);} +#if 0 +# 1541 +{ } +#endif +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned __fns(unsigned mask, unsigned base, int offset) {int volatile ___ = 1;(void)mask;(void)base;(void)offset;::exit(___);} +#if 0 +# 102 +{ } +#endif +# 103 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline void __barrier_sync(unsigned id) {int volatile ___ = 1;(void)id;::exit(___);} +#if 0 +# 103 +{ } +#endif +# 104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline void __barrier_sync_count(unsigned id, unsigned cnt) {int volatile ___ = 1;(void)id;(void)cnt;::exit(___);} +#if 0 +# 104 +{ } +#endif +# 105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline void __syncwarp(unsigned mask = 4294967295U) {int volatile ___ = 1;(void)mask;::exit(___);} +#if 0 +# 105 +{ } +#endif +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline int __all_sync(unsigned mask, int pred) {int volatile ___ = 1;(void)mask;(void)pred;::exit(___);} +#if 0 +# 106 +{ } +#endif +# 107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline int __any_sync(unsigned mask, int pred) {int volatile ___ = 1;(void)mask;(void)pred;::exit(___);} +#if 0 +# 107 +{ } +#endif +# 108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline int __uni_sync(unsigned mask, int pred) {int volatile ___ = 1;(void)mask;(void)pred;::exit(___);} +#if 0 +# 108 +{ } +#endif +# 109 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned __ballot_sync(unsigned mask, int pred) {int volatile ___ = 1;(void)mask;(void)pred;::exit(___);} +#if 0 +# 109 +{ } +#endif +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned __activemask() {int volatile ___ = 1;::exit(___);} +#if 0 +# 110 +{ } +#endif +# 119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline int __shfl(int var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 119 +{ } +#endif +# 120 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline unsigned __shfl(unsigned var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 120 +{ } +#endif +# 121 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline int __shfl_up(int var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 121 +{ } +#endif +# 122 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline unsigned __shfl_up(unsigned var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 122 +{ } +#endif +# 123 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline int __shfl_down(int var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 123 +{ } +#endif +# 124 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline unsigned __shfl_down(unsigned var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 124 +{ } +#endif +# 125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline int __shfl_xor(int var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 125 +{ } +#endif +# 126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline unsigned __shfl_xor(unsigned var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 126 +{ } +#endif +# 127 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline float __shfl(float var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 127 +{ } +#endif +# 128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline float __shfl_up(float var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 128 +{ } +#endif +# 129 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline float __shfl_down(float var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 129 +{ } +#endif +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline float __shfl_xor(float var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 130 +{ } +#endif +# 133 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline int __shfl_sync(unsigned mask, int var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 133 +{ } +#endif +# 134 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned __shfl_sync(unsigned mask, unsigned var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 134 +{ } +#endif +# 135 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline int __shfl_up_sync(unsigned mask, int var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 135 +{ } +#endif +# 136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned __shfl_up_sync(unsigned mask, unsigned var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 136 +{ } +#endif +# 137 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline int __shfl_down_sync(unsigned mask, int var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 137 +{ } +#endif +# 138 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned __shfl_down_sync(unsigned mask, unsigned var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 138 +{ } +#endif +# 139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline int __shfl_xor_sync(unsigned mask, int var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 139 +{ } +#endif +# 140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned __shfl_xor_sync(unsigned mask, unsigned var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 140 +{ } +#endif +# 141 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline float __shfl_sync(unsigned mask, float var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 141 +{ } +#endif +# 142 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline float __shfl_up_sync(unsigned mask, float var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 142 +{ } +#endif +# 143 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline float __shfl_down_sync(unsigned mask, float var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 143 +{ } +#endif +# 144 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline float __shfl_xor_sync(unsigned mask, float var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 144 +{ } +#endif +# 148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline unsigned long long __shfl(unsigned long long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 148 +{ } +#endif +# 149 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline long long __shfl(long long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 149 +{ } +#endif +# 150 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline long long __shfl_up(long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 150 +{ } +#endif +# 151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline unsigned long long __shfl_up(unsigned long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 151 +{ } +#endif +# 152 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline long long __shfl_down(long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 152 +{ } +#endif +# 153 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline unsigned long long __shfl_down(unsigned long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 153 +{ } +#endif +# 154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline long long __shfl_xor(long long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 154 +{ } +#endif +# 155 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline unsigned long long __shfl_xor(unsigned long long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 155 +{ } +#endif +# 156 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline double __shfl(double var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 156 +{ } +#endif +# 157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline double __shfl_up(double var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 157 +{ } +#endif +# 158 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline double __shfl_down(double var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 158 +{ } +#endif +# 159 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline double __shfl_xor(double var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 159 +{ } +#endif +# 162 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long long __shfl_sync(unsigned mask, long long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 162 +{ } +#endif +# 163 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __shfl_sync(unsigned mask, unsigned long long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 163 +{ } +#endif +# 164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long long __shfl_up_sync(unsigned mask, long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 164 +{ } +#endif +# 165 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __shfl_up_sync(unsigned mask, unsigned long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 165 +{ } +#endif +# 166 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long long __shfl_down_sync(unsigned mask, long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 166 +{ } +#endif +# 167 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __shfl_down_sync(unsigned mask, unsigned long long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 167 +{ } +#endif +# 168 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long long __shfl_xor_sync(unsigned mask, long long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 168 +{ } +#endif +# 169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __shfl_xor_sync(unsigned mask, unsigned long long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 169 +{ } +#endif +# 170 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline double __shfl_sync(unsigned mask, double var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 170 +{ } +#endif +# 171 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline double __shfl_up_sync(unsigned mask, double var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 171 +{ } +#endif +# 172 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline double __shfl_down_sync(unsigned mask, double var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 172 +{ } +#endif +# 173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline double __shfl_xor_sync(unsigned mask, double var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 173 +{ } +#endif +# 177 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline long __shfl(long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 177 +{ } +#endif +# 178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl() is deprecated in favor of __shfl_sync() and may be removed in a future release (Use -Wno-deprecated-declarations to sup" "press this warning)."))) __attribute__((unused)) static inline unsigned long __shfl(unsigned long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 178 +{ } +#endif +# 179 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline long __shfl_up(long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 179 +{ } +#endif +# 180 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_up() is deprecated in favor of __shfl_up_sync() and may be removed in a future release (Use -Wno-deprecated-declarations " "to suppress this warning)."))) __attribute__((unused)) static inline unsigned long __shfl_up(unsigned long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 180 +{ } +#endif +# 181 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline long __shfl_down(long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 181 +{ } +#endif +# 182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_down() is deprecated in favor of __shfl_down_sync() and may be removed in a future release (Use -Wno-deprecated-declarati" "ons to suppress this warning)."))) __attribute__((unused)) static inline unsigned long __shfl_down(unsigned long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 182 +{ } +#endif +# 183 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline long __shfl_xor(long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 183 +{ } +#endif +# 184 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute((deprecated("__shfl_xor() is deprecated in favor of __shfl_xor_sync() and may be removed in a future release (Use -Wno-deprecated-declaration" "s to suppress this warning)."))) __attribute__((unused)) static inline unsigned long __shfl_xor(unsigned long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 184 +{ } +#endif +# 187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long __shfl_sync(unsigned mask, long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 187 +{ } +#endif +# 188 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long __shfl_sync(unsigned mask, unsigned long var, int srcLane, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)srcLane;(void)width;::exit(___);} +#if 0 +# 188 +{ } +#endif +# 189 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long __shfl_up_sync(unsigned mask, long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 189 +{ } +#endif +# 190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long __shfl_up_sync(unsigned mask, unsigned long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 190 +{ } +#endif +# 191 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long __shfl_down_sync(unsigned mask, long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 191 +{ } +#endif +# 192 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long __shfl_down_sync(unsigned mask, unsigned long var, unsigned delta, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)delta;(void)width;::exit(___);} +#if 0 +# 192 +{ } +#endif +# 193 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline long __shfl_xor_sync(unsigned mask, long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 193 +{ } +#endif +# 194 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_30_intrinsics.h" +__attribute__((unused)) static inline unsigned long __shfl_xor_sync(unsigned mask, unsigned long var, int laneMask, int width = 32) {int volatile ___ = 1;(void)mask;(void)var;(void)laneMask;(void)width;::exit(___);} +#if 0 +# 194 +{ } +#endif +# 87 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long __ldg(const long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 87 +{ } +#endif +# 88 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long __ldg(const unsigned long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 88 +{ } +#endif +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char __ldg(const char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 90 +{ } +#endif +# 91 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline signed char __ldg(const signed char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 91 +{ } +#endif +# 92 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short __ldg(const short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 92 +{ } +#endif +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int __ldg(const int *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 93 +{ } +#endif +# 94 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long long __ldg(const long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 94 +{ } +#endif +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char2 __ldg(const char2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 95 +{ } +#endif +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char4 __ldg(const char4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 96 +{ } +#endif +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short2 __ldg(const short2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 97 +{ } +#endif +# 98 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short4 __ldg(const short4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 98 +{ } +#endif +# 99 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int2 __ldg(const int2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 99 +{ } +#endif +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int4 __ldg(const int4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 100 +{ } +#endif +# 101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline longlong2 __ldg(const longlong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 101 +{ } +#endif +# 103 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned char __ldg(const unsigned char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 103 +{ } +#endif +# 104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned short __ldg(const unsigned short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 104 +{ } +#endif +# 105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __ldg(const unsigned *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 105 +{ } +#endif +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __ldg(const unsigned long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 106 +{ } +#endif +# 107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar2 __ldg(const uchar2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 107 +{ } +#endif +# 108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar4 __ldg(const uchar4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 108 +{ } +#endif +# 109 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort2 __ldg(const ushort2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 109 +{ } +#endif +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort4 __ldg(const ushort4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 110 +{ } +#endif +# 111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint2 __ldg(const uint2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 111 +{ } +#endif +# 112 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint4 __ldg(const uint4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 112 +{ } +#endif +# 113 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ulonglong2 __ldg(const ulonglong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 113 +{ } +#endif +# 115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float __ldg(const float *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 115 +{ } +#endif +# 116 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double __ldg(const double *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 116 +{ } +#endif +# 117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float2 __ldg(const float2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 117 +{ } +#endif +# 118 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float4 __ldg(const float4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 118 +{ } +#endif +# 119 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double2 __ldg(const double2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 119 +{ } +#endif +# 123 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long __ldcg(const long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 123 +{ } +#endif +# 124 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long __ldcg(const unsigned long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 124 +{ } +#endif +# 126 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char __ldcg(const char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 126 +{ } +#endif +# 127 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline signed char __ldcg(const signed char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 127 +{ } +#endif +# 128 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short __ldcg(const short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 128 +{ } +#endif +# 129 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int __ldcg(const int *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 129 +{ } +#endif +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long long __ldcg(const long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 130 +{ } +#endif +# 131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char2 __ldcg(const char2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 131 +{ } +#endif +# 132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char4 __ldcg(const char4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 132 +{ } +#endif +# 133 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short2 __ldcg(const short2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 133 +{ } +#endif +# 134 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short4 __ldcg(const short4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 134 +{ } +#endif +# 135 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int2 __ldcg(const int2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 135 +{ } +#endif +# 136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int4 __ldcg(const int4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 136 +{ } +#endif +# 137 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline longlong2 __ldcg(const longlong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 137 +{ } +#endif +# 139 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned char __ldcg(const unsigned char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 139 +{ } +#endif +# 140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned short __ldcg(const unsigned short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 140 +{ } +#endif +# 141 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __ldcg(const unsigned *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 141 +{ } +#endif +# 142 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __ldcg(const unsigned long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 142 +{ } +#endif +# 143 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar2 __ldcg(const uchar2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 143 +{ } +#endif +# 144 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar4 __ldcg(const uchar4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 144 +{ } +#endif +# 145 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort2 __ldcg(const ushort2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 145 +{ } +#endif +# 146 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort4 __ldcg(const ushort4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 146 +{ } +#endif +# 147 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint2 __ldcg(const uint2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 147 +{ } +#endif +# 148 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint4 __ldcg(const uint4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 148 +{ } +#endif +# 149 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ulonglong2 __ldcg(const ulonglong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 149 +{ } +#endif +# 151 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float __ldcg(const float *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 151 +{ } +#endif +# 152 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double __ldcg(const double *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 152 +{ } +#endif +# 153 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float2 __ldcg(const float2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 153 +{ } +#endif +# 154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float4 __ldcg(const float4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 154 +{ } +#endif +# 155 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double2 __ldcg(const double2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 155 +{ } +#endif +# 159 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long __ldca(const long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 159 +{ } +#endif +# 160 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long __ldca(const unsigned long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 160 +{ } +#endif +# 162 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char __ldca(const char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 162 +{ } +#endif +# 163 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline signed char __ldca(const signed char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 163 +{ } +#endif +# 164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short __ldca(const short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 164 +{ } +#endif +# 165 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int __ldca(const int *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 165 +{ } +#endif +# 166 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long long __ldca(const long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 166 +{ } +#endif +# 167 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char2 __ldca(const char2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 167 +{ } +#endif +# 168 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char4 __ldca(const char4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 168 +{ } +#endif +# 169 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short2 __ldca(const short2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 169 +{ } +#endif +# 170 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short4 __ldca(const short4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 170 +{ } +#endif +# 171 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int2 __ldca(const int2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 171 +{ } +#endif +# 172 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int4 __ldca(const int4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 172 +{ } +#endif +# 173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline longlong2 __ldca(const longlong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 173 +{ } +#endif +# 175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned char __ldca(const unsigned char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 175 +{ } +#endif +# 176 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned short __ldca(const unsigned short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 176 +{ } +#endif +# 177 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __ldca(const unsigned *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 177 +{ } +#endif +# 178 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __ldca(const unsigned long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 178 +{ } +#endif +# 179 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar2 __ldca(const uchar2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 179 +{ } +#endif +# 180 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar4 __ldca(const uchar4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 180 +{ } +#endif +# 181 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort2 __ldca(const ushort2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 181 +{ } +#endif +# 182 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort4 __ldca(const ushort4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 182 +{ } +#endif +# 183 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint2 __ldca(const uint2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 183 +{ } +#endif +# 184 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint4 __ldca(const uint4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 184 +{ } +#endif +# 185 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ulonglong2 __ldca(const ulonglong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 185 +{ } +#endif +# 187 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float __ldca(const float *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 187 +{ } +#endif +# 188 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double __ldca(const double *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 188 +{ } +#endif +# 189 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float2 __ldca(const float2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 189 +{ } +#endif +# 190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float4 __ldca(const float4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 190 +{ } +#endif +# 191 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double2 __ldca(const double2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 191 +{ } +#endif +# 195 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long __ldcs(const long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 195 +{ } +#endif +# 196 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long __ldcs(const unsigned long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 196 +{ } +#endif +# 198 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char __ldcs(const char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 198 +{ } +#endif +# 199 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline signed char __ldcs(const signed char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 199 +{ } +#endif +# 200 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short __ldcs(const short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 200 +{ } +#endif +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int __ldcs(const int *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 201 +{ } +#endif +# 202 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long long __ldcs(const long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 202 +{ } +#endif +# 203 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char2 __ldcs(const char2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 203 +{ } +#endif +# 204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char4 __ldcs(const char4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 204 +{ } +#endif +# 205 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short2 __ldcs(const short2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 205 +{ } +#endif +# 206 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short4 __ldcs(const short4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 206 +{ } +#endif +# 207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int2 __ldcs(const int2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 207 +{ } +#endif +# 208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int4 __ldcs(const int4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 208 +{ } +#endif +# 209 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline longlong2 __ldcs(const longlong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 209 +{ } +#endif +# 211 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned char __ldcs(const unsigned char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 211 +{ } +#endif +# 212 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned short __ldcs(const unsigned short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 212 +{ } +#endif +# 213 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __ldcs(const unsigned *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 213 +{ } +#endif +# 214 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __ldcs(const unsigned long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 214 +{ } +#endif +# 215 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar2 __ldcs(const uchar2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 215 +{ } +#endif +# 216 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar4 __ldcs(const uchar4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 216 +{ } +#endif +# 217 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort2 __ldcs(const ushort2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 217 +{ } +#endif +# 218 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort4 __ldcs(const ushort4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 218 +{ } +#endif +# 219 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint2 __ldcs(const uint2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 219 +{ } +#endif +# 220 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint4 __ldcs(const uint4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 220 +{ } +#endif +# 221 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ulonglong2 __ldcs(const ulonglong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 221 +{ } +#endif +# 223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float __ldcs(const float *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 223 +{ } +#endif +# 224 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double __ldcs(const double *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 224 +{ } +#endif +# 225 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float2 __ldcs(const float2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 225 +{ } +#endif +# 226 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float4 __ldcs(const float4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 226 +{ } +#endif +# 227 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double2 __ldcs(const double2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 227 +{ } +#endif +# 231 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long __ldlu(const long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 231 +{ } +#endif +# 232 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long __ldlu(const unsigned long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 232 +{ } +#endif +# 234 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char __ldlu(const char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 234 +{ } +#endif +# 235 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline signed char __ldlu(const signed char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 235 +{ } +#endif +# 236 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short __ldlu(const short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 236 +{ } +#endif +# 237 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int __ldlu(const int *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 237 +{ } +#endif +# 238 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long long __ldlu(const long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 238 +{ } +#endif +# 239 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char2 __ldlu(const char2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 239 +{ } +#endif +# 240 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char4 __ldlu(const char4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 240 +{ } +#endif +# 241 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short2 __ldlu(const short2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 241 +{ } +#endif +# 242 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short4 __ldlu(const short4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 242 +{ } +#endif +# 243 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int2 __ldlu(const int2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 243 +{ } +#endif +# 244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int4 __ldlu(const int4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 244 +{ } +#endif +# 245 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline longlong2 __ldlu(const longlong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 245 +{ } +#endif +# 247 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned char __ldlu(const unsigned char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 247 +{ } +#endif +# 248 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned short __ldlu(const unsigned short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 248 +{ } +#endif +# 249 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __ldlu(const unsigned *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 249 +{ } +#endif +# 250 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __ldlu(const unsigned long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 250 +{ } +#endif +# 251 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar2 __ldlu(const uchar2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 251 +{ } +#endif +# 252 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar4 __ldlu(const uchar4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 252 +{ } +#endif +# 253 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort2 __ldlu(const ushort2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 253 +{ } +#endif +# 254 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort4 __ldlu(const ushort4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 254 +{ } +#endif +# 255 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint2 __ldlu(const uint2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 255 +{ } +#endif +# 256 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint4 __ldlu(const uint4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 256 +{ } +#endif +# 257 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ulonglong2 __ldlu(const ulonglong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 257 +{ } +#endif +# 259 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float __ldlu(const float *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 259 +{ } +#endif +# 260 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double __ldlu(const double *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 260 +{ } +#endif +# 261 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float2 __ldlu(const float2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 261 +{ } +#endif +# 262 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float4 __ldlu(const float4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 262 +{ } +#endif +# 263 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double2 __ldlu(const double2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 263 +{ } +#endif +# 267 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long __ldcv(const long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 267 +{ } +#endif +# 268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long __ldcv(const unsigned long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 268 +{ } +#endif +# 270 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char __ldcv(const char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 270 +{ } +#endif +# 271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline signed char __ldcv(const signed char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 271 +{ } +#endif +# 272 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short __ldcv(const short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 272 +{ } +#endif +# 273 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int __ldcv(const int *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 273 +{ } +#endif +# 274 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline long long __ldcv(const long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 274 +{ } +#endif +# 275 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char2 __ldcv(const char2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 275 +{ } +#endif +# 276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline char4 __ldcv(const char4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 276 +{ } +#endif +# 277 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short2 __ldcv(const short2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 277 +{ } +#endif +# 278 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline short4 __ldcv(const short4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 278 +{ } +#endif +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int2 __ldcv(const int2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 279 +{ } +#endif +# 280 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline int4 __ldcv(const int4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 280 +{ } +#endif +# 281 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline longlong2 __ldcv(const longlong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 281 +{ } +#endif +# 283 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned char __ldcv(const unsigned char *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 283 +{ } +#endif +# 284 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned short __ldcv(const unsigned short *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 284 +{ } +#endif +# 285 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __ldcv(const unsigned *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 285 +{ } +#endif +# 286 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned long long __ldcv(const unsigned long long *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 286 +{ } +#endif +# 287 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar2 __ldcv(const uchar2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 287 +{ } +#endif +# 288 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uchar4 __ldcv(const uchar4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 288 +{ } +#endif +# 289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort2 __ldcv(const ushort2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 289 +{ } +#endif +# 290 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ushort4 __ldcv(const ushort4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 290 +{ } +#endif +# 291 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint2 __ldcv(const uint2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 291 +{ } +#endif +# 292 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline uint4 __ldcv(const uint4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 292 +{ } +#endif +# 293 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline ulonglong2 __ldcv(const ulonglong2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 293 +{ } +#endif +# 295 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float __ldcv(const float *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 295 +{ } +#endif +# 296 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double __ldcv(const double *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 296 +{ } +#endif +# 297 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float2 __ldcv(const float2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 297 +{ } +#endif +# 298 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline float4 __ldcv(const float4 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 298 +{ } +#endif +# 299 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline double2 __ldcv(const double2 *ptr) {int volatile ___ = 1;(void)ptr;::exit(___);} +#if 0 +# 299 +{ } +#endif +# 303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(long *ptr, long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 303 +{ } +#endif +# 304 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(unsigned long *ptr, unsigned long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 304 +{ } +#endif +# 306 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(char *ptr, char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 306 +{ } +#endif +# 307 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(signed char *ptr, signed char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 307 +{ } +#endif +# 308 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(short *ptr, short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 308 +{ } +#endif +# 309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(int *ptr, int value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 309 +{ } +#endif +# 310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(long long *ptr, long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 310 +{ } +#endif +# 311 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(char2 *ptr, char2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 311 +{ } +#endif +# 312 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(char4 *ptr, char4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 312 +{ } +#endif +# 313 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(short2 *ptr, short2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 313 +{ } +#endif +# 314 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(short4 *ptr, short4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 314 +{ } +#endif +# 315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(int2 *ptr, int2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 315 +{ } +#endif +# 316 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(int4 *ptr, int4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 316 +{ } +#endif +# 317 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(longlong2 *ptr, longlong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 317 +{ } +#endif +# 319 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(unsigned char *ptr, unsigned char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 319 +{ } +#endif +# 320 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(unsigned short *ptr, unsigned short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 320 +{ } +#endif +# 321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(unsigned *ptr, unsigned value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 321 +{ } +#endif +# 322 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(unsigned long long *ptr, unsigned long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 322 +{ } +#endif +# 323 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(uchar2 *ptr, uchar2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 323 +{ } +#endif +# 324 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(uchar4 *ptr, uchar4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 324 +{ } +#endif +# 325 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(ushort2 *ptr, ushort2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 325 +{ } +#endif +# 326 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(ushort4 *ptr, ushort4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 326 +{ } +#endif +# 327 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(uint2 *ptr, uint2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 327 +{ } +#endif +# 328 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(uint4 *ptr, uint4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 328 +{ } +#endif +# 329 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(ulonglong2 *ptr, ulonglong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 329 +{ } +#endif +# 331 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(float *ptr, float value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 331 +{ } +#endif +# 332 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(double *ptr, double value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 332 +{ } +#endif +# 333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(float2 *ptr, float2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 333 +{ } +#endif +# 334 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(float4 *ptr, float4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 334 +{ } +#endif +# 335 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwb(double2 *ptr, double2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 335 +{ } +#endif +# 339 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(long *ptr, long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 339 +{ } +#endif +# 340 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(unsigned long *ptr, unsigned long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 340 +{ } +#endif +# 342 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(char *ptr, char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 342 +{ } +#endif +# 343 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(signed char *ptr, signed char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 343 +{ } +#endif +# 344 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(short *ptr, short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 344 +{ } +#endif +# 345 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(int *ptr, int value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 345 +{ } +#endif +# 346 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(long long *ptr, long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 346 +{ } +#endif +# 347 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(char2 *ptr, char2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 347 +{ } +#endif +# 348 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(char4 *ptr, char4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 348 +{ } +#endif +# 349 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(short2 *ptr, short2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 349 +{ } +#endif +# 350 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(short4 *ptr, short4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 350 +{ } +#endif +# 351 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(int2 *ptr, int2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 351 +{ } +#endif +# 352 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(int4 *ptr, int4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 352 +{ } +#endif +# 353 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(longlong2 *ptr, longlong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 353 +{ } +#endif +# 355 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(unsigned char *ptr, unsigned char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 355 +{ } +#endif +# 356 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(unsigned short *ptr, unsigned short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 356 +{ } +#endif +# 357 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(unsigned *ptr, unsigned value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 357 +{ } +#endif +# 358 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(unsigned long long *ptr, unsigned long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 358 +{ } +#endif +# 359 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(uchar2 *ptr, uchar2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 359 +{ } +#endif +# 360 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(uchar4 *ptr, uchar4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 360 +{ } +#endif +# 361 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(ushort2 *ptr, ushort2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 361 +{ } +#endif +# 362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(ushort4 *ptr, ushort4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 362 +{ } +#endif +# 363 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(uint2 *ptr, uint2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 363 +{ } +#endif +# 364 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(uint4 *ptr, uint4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 364 +{ } +#endif +# 365 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(ulonglong2 *ptr, ulonglong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 365 +{ } +#endif +# 367 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(float *ptr, float value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 367 +{ } +#endif +# 368 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(double *ptr, double value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 368 +{ } +#endif +# 369 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(float2 *ptr, float2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 369 +{ } +#endif +# 370 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(float4 *ptr, float4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 370 +{ } +#endif +# 371 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcg(double2 *ptr, double2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 371 +{ } +#endif +# 375 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(long *ptr, long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 375 +{ } +#endif +# 376 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(unsigned long *ptr, unsigned long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 376 +{ } +#endif +# 378 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(char *ptr, char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 378 +{ } +#endif +# 379 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(signed char *ptr, signed char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 379 +{ } +#endif +# 380 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(short *ptr, short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 380 +{ } +#endif +# 381 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(int *ptr, int value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 381 +{ } +#endif +# 382 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(long long *ptr, long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 382 +{ } +#endif +# 383 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(char2 *ptr, char2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 383 +{ } +#endif +# 384 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(char4 *ptr, char4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 384 +{ } +#endif +# 385 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(short2 *ptr, short2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 385 +{ } +#endif +# 386 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(short4 *ptr, short4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 386 +{ } +#endif +# 387 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(int2 *ptr, int2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 387 +{ } +#endif +# 388 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(int4 *ptr, int4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 388 +{ } +#endif +# 389 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(longlong2 *ptr, longlong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 389 +{ } +#endif +# 391 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(unsigned char *ptr, unsigned char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 391 +{ } +#endif +# 392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(unsigned short *ptr, unsigned short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 392 +{ } +#endif +# 393 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(unsigned *ptr, unsigned value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 393 +{ } +#endif +# 394 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(unsigned long long *ptr, unsigned long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 394 +{ } +#endif +# 395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(uchar2 *ptr, uchar2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 395 +{ } +#endif +# 396 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(uchar4 *ptr, uchar4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 396 +{ } +#endif +# 397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(ushort2 *ptr, ushort2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 397 +{ } +#endif +# 398 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(ushort4 *ptr, ushort4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 398 +{ } +#endif +# 399 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(uint2 *ptr, uint2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 399 +{ } +#endif +# 400 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(uint4 *ptr, uint4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 400 +{ } +#endif +# 401 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(ulonglong2 *ptr, ulonglong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 401 +{ } +#endif +# 403 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(float *ptr, float value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 403 +{ } +#endif +# 404 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(double *ptr, double value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 404 +{ } +#endif +# 405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(float2 *ptr, float2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 405 +{ } +#endif +# 406 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(float4 *ptr, float4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 406 +{ } +#endif +# 407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stcs(double2 *ptr, double2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 407 +{ } +#endif +# 411 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(long *ptr, long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 411 +{ } +#endif +# 412 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(unsigned long *ptr, unsigned long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 412 +{ } +#endif +# 414 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(char *ptr, char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 414 +{ } +#endif +# 415 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(signed char *ptr, signed char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 415 +{ } +#endif +# 416 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(short *ptr, short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 416 +{ } +#endif +# 417 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(int *ptr, int value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 417 +{ } +#endif +# 418 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(long long *ptr, long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 418 +{ } +#endif +# 419 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(char2 *ptr, char2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 419 +{ } +#endif +# 420 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(char4 *ptr, char4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 420 +{ } +#endif +# 421 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(short2 *ptr, short2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 421 +{ } +#endif +# 422 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(short4 *ptr, short4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 422 +{ } +#endif +# 423 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(int2 *ptr, int2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 423 +{ } +#endif +# 424 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(int4 *ptr, int4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 424 +{ } +#endif +# 425 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(longlong2 *ptr, longlong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 425 +{ } +#endif +# 427 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(unsigned char *ptr, unsigned char value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 427 +{ } +#endif +# 428 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(unsigned short *ptr, unsigned short value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 428 +{ } +#endif +# 429 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(unsigned *ptr, unsigned value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 429 +{ } +#endif +# 430 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(unsigned long long *ptr, unsigned long long value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 430 +{ } +#endif +# 431 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(uchar2 *ptr, uchar2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 431 +{ } +#endif +# 432 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(uchar4 *ptr, uchar4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 432 +{ } +#endif +# 433 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(ushort2 *ptr, ushort2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 433 +{ } +#endif +# 434 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(ushort4 *ptr, ushort4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 434 +{ } +#endif +# 435 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(uint2 *ptr, uint2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 435 +{ } +#endif +# 436 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(uint4 *ptr, uint4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 436 +{ } +#endif +# 437 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(ulonglong2 *ptr, ulonglong2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 437 +{ } +#endif +# 439 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(float *ptr, float value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 439 +{ } +#endif +# 440 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(double *ptr, double value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 440 +{ } +#endif +# 441 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(float2 *ptr, float2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 441 +{ } +#endif +# 442 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(float4 *ptr, float4 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 442 +{ } +#endif +# 443 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline void __stwt(double2 *ptr, double2 value) {int volatile ___ = 1;(void)ptr;(void)value;::exit(___);} +#if 0 +# 443 +{ } +#endif +# 460 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __funnelshift_l(unsigned lo, unsigned hi, unsigned shift) {int volatile ___ = 1;(void)lo;(void)hi;(void)shift;::exit(___);} +#if 0 +# 460 +{ } +#endif +# 472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __funnelshift_lc(unsigned lo, unsigned hi, unsigned shift) {int volatile ___ = 1;(void)lo;(void)hi;(void)shift;::exit(___);} +#if 0 +# 472 +{ } +#endif +# 485 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __funnelshift_r(unsigned lo, unsigned hi, unsigned shift) {int volatile ___ = 1;(void)lo;(void)hi;(void)shift;::exit(___);} +#if 0 +# 485 +{ } +#endif +# 497 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_32_intrinsics.h" +__attribute__((unused)) static inline unsigned __funnelshift_rc(unsigned lo, unsigned hi, unsigned shift) {int volatile ___ = 1;(void)lo;(void)hi;(void)shift;::exit(___);} +#if 0 +# 497 +{ } +#endif +# 89 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline int __dp2a_lo(int srcA, int srcB, int c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 89 +{ } +#endif +# 90 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline unsigned __dp2a_lo(unsigned srcA, unsigned srcB, unsigned c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 90 +{ } +#endif +# 92 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline int __dp2a_lo(short2 srcA, char4 srcB, int c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 92 +{ } +#endif +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline unsigned __dp2a_lo(ushort2 srcA, uchar4 srcB, unsigned c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 93 +{ } +#endif +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline int __dp2a_hi(int srcA, int srcB, int c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 95 +{ } +#endif +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline unsigned __dp2a_hi(unsigned srcA, unsigned srcB, unsigned c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 96 +{ } +#endif +# 98 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline int __dp2a_hi(short2 srcA, char4 srcB, int c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 98 +{ } +#endif +# 99 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline unsigned __dp2a_hi(ushort2 srcA, uchar4 srcB, unsigned c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 99 +{ } +#endif +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline int __dp4a(int srcA, int srcB, int c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 106 +{ } +#endif +# 107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline unsigned __dp4a(unsigned srcA, unsigned srcB, unsigned c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 107 +{ } +#endif +# 109 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline int __dp4a(char4 srcA, char4 srcB, int c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 109 +{ } +#endif +# 110 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/sm_61_intrinsics.h" +__attribute__((unused)) static inline unsigned __dp4a(uchar4 srcA, uchar4 srcB, unsigned c) {int volatile ___ = 1;(void)srcA;(void)srcB;(void)c;::exit(___);} +#if 0 +# 110 +{ } +#endif +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, unsigned value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 93 +{ } +#endif +# 94 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, int value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 94 +{ } +#endif +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, unsigned long value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 95 +{ } +#endif +# 96 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, long value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 96 +{ } +#endif +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, unsigned long long value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 97 +{ } +#endif +# 98 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, long long value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 98 +{ } +#endif +# 99 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, float value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 99 +{ } +#endif +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_any_sync(unsigned mask, double value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 100 +{ } +#endif +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, unsigned value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 102 +{ } +#endif +# 103 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, int value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 103 +{ } +#endif +# 104 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, unsigned long value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 104 +{ } +#endif +# 105 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, long value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 105 +{ } +#endif +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, unsigned long long value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 106 +{ } +#endif +# 107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, long long value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 107 +{ } +#endif +# 108 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, float value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 108 +{ } +#endif +# 109 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned __match_all_sync(unsigned mask, double value, int *pred) {int volatile ___ = 1;(void)mask;(void)value;(void)pred;::exit(___);} +#if 0 +# 109 +{ } +#endif +# 111 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline void __nanosleep(unsigned ns) {int volatile ___ = 1;(void)ns;::exit(___);} +#if 0 +# 111 +{ } +#endif +# 113 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_70_rt.h" +__attribute__((unused)) static inline unsigned short atomicCAS(unsigned short *address, unsigned short compare, unsigned short val) {int volatile ___ = 1;(void)address;(void)compare;(void)val;::exit(___);} +#if 0 +# 113 +{ } +#endif +# 93 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline unsigned __reduce_add_sync(unsigned mask, unsigned value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 93 +{ } +#endif +# 94 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline unsigned __reduce_min_sync(unsigned mask, unsigned value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 94 +{ } +#endif +# 95 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline unsigned __reduce_max_sync(unsigned mask, unsigned value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 95 +{ } +#endif +# 97 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline int __reduce_add_sync(unsigned mask, int value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 97 +{ } +#endif +# 98 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline int __reduce_min_sync(unsigned mask, int value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 98 +{ } +#endif +# 99 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline int __reduce_max_sync(unsigned mask, int value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 99 +{ } +#endif +# 101 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline unsigned __reduce_and_sync(unsigned mask, unsigned value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 101 +{ } +#endif +# 102 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline unsigned __reduce_or_sync(unsigned mask, unsigned value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 102 +{ } +#endif +# 103 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) static inline unsigned __reduce_xor_sync(unsigned mask, unsigned value) {int volatile ___ = 1;(void)mask;(void)value;::exit(___);} +#if 0 +# 103 +{ } +#endif +# 106 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +extern "C" { +# 107 +__attribute__((unused)) inline void *__nv_associate_access_property(const void *ptr, unsigned long long +# 108 +property) {int volatile ___ = 1;(void)ptr;(void)property; +# 112 +::exit(___);} +#if 0 +# 108 +{ +# 109 +__attribute__((unused)) extern void *__nv_associate_access_property_impl(const void *, unsigned long long); +# 111 +return __nv_associate_access_property_impl(ptr, property); +# 112 +} +#endif +# 114 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) inline void __nv_memcpy_async_shared_global_4(void *dst, const void * +# 115 +src, unsigned +# 116 +src_size) {int volatile ___ = 1;(void)dst;(void)src;(void)src_size; +# 121 +::exit(___);} +#if 0 +# 116 +{ +# 117 +__attribute__((unused)) extern void __nv_memcpy_async_shared_global_4_impl(void *, const void *, unsigned); +# 120 +__nv_memcpy_async_shared_global_4_impl(dst, src, src_size); +# 121 +} +#endif +# 123 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) inline void __nv_memcpy_async_shared_global_8(void *dst, const void * +# 124 +src, unsigned +# 125 +src_size) {int volatile ___ = 1;(void)dst;(void)src;(void)src_size; +# 130 +::exit(___);} +#if 0 +# 125 +{ +# 126 +__attribute__((unused)) extern void __nv_memcpy_async_shared_global_8_impl(void *, const void *, unsigned); +# 129 +__nv_memcpy_async_shared_global_8_impl(dst, src, src_size); +# 130 +} +#endif +# 132 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +__attribute__((unused)) inline void __nv_memcpy_async_shared_global_16(void *dst, const void * +# 133 +src, unsigned +# 134 +src_size) {int volatile ___ = 1;(void)dst;(void)src;(void)src_size; +# 139 +::exit(___);} +#if 0 +# 134 +{ +# 135 +__attribute__((unused)) extern void __nv_memcpy_async_shared_global_16_impl(void *, const void *, unsigned); +# 138 +__nv_memcpy_async_shared_global_16_impl(dst, src, src_size); +# 139 +} +#endif +# 141 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/sm_80_rt.h" +} +# 122 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 123 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1Dread(T *res, surface< void, 1> surf, int x, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 124 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)s;(void)mode; +# 128 +::exit(___);} +#if 0 +# 124 +{ +# 128 +} +#endif +# 130 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 131 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline T surf1Dread(surface< void, 1> surf, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 132 +{int volatile ___ = 1;(void)surf;(void)x;(void)mode; +# 138 +::exit(___);} +#if 0 +# 132 +{ +# 138 +} +#endif +# 140 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 141 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1Dread(T *res, surface< void, 1> surf, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 142 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)mode; +# 146 +::exit(___);} +#if 0 +# 142 +{ +# 146 +} +#endif +# 149 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 150 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2Dread(T *res, surface< void, 2> surf, int x, int y, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 151 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)s;(void)mode; +# 155 +::exit(___);} +#if 0 +# 151 +{ +# 155 +} +#endif +# 157 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 158 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline T surf2Dread(surface< void, 2> surf, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 159 +{int volatile ___ = 1;(void)surf;(void)x;(void)y;(void)mode; +# 165 +::exit(___);} +#if 0 +# 159 +{ +# 165 +} +#endif +# 167 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 168 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2Dread(T *res, surface< void, 2> surf, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 169 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)mode; +# 173 +::exit(___);} +#if 0 +# 169 +{ +# 173 +} +#endif +# 176 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 177 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf3Dread(T *res, surface< void, 3> surf, int x, int y, int z, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 178 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)z;(void)s;(void)mode; +# 182 +::exit(___);} +#if 0 +# 178 +{ +# 182 +} +#endif +# 184 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 185 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline T surf3Dread(surface< void, 3> surf, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 186 +{int volatile ___ = 1;(void)surf;(void)x;(void)y;(void)z;(void)mode; +# 192 +::exit(___);} +#if 0 +# 186 +{ +# 192 +} +#endif +# 194 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 195 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf3Dread(T *res, surface< void, 3> surf, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 196 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)z;(void)mode; +# 200 +::exit(___);} +#if 0 +# 196 +{ +# 200 +} +#endif +# 204 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 205 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1DLayeredread(T *res, surface< void, 241> surf, int x, int layer, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 206 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)layer;(void)s;(void)mode; +# 210 +::exit(___);} +#if 0 +# 206 +{ +# 210 +} +#endif +# 212 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 213 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline T surf1DLayeredread(surface< void, 241> surf, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 214 +{int volatile ___ = 1;(void)surf;(void)x;(void)layer;(void)mode; +# 220 +::exit(___);} +#if 0 +# 214 +{ +# 220 +} +#endif +# 223 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 224 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1DLayeredread(T *res, surface< void, 241> surf, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 225 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)layer;(void)mode; +# 229 +::exit(___);} +#if 0 +# 225 +{ +# 229 +} +#endif +# 232 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 233 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2DLayeredread(T *res, surface< void, 242> surf, int x, int y, int layer, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 234 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)layer;(void)s;(void)mode; +# 238 +::exit(___);} +#if 0 +# 234 +{ +# 238 +} +#endif +# 240 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 241 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline T surf2DLayeredread(surface< void, 242> surf, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 242 +{int volatile ___ = 1;(void)surf;(void)x;(void)y;(void)layer;(void)mode; +# 248 +::exit(___);} +#if 0 +# 242 +{ +# 248 +} +#endif +# 251 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 252 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2DLayeredread(T *res, surface< void, 242> surf, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 253 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)layer;(void)mode; +# 257 +::exit(___);} +#if 0 +# 253 +{ +# 257 +} +#endif +# 260 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 261 +__attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapread(T *res, surface< void, 12> surf, int x, int y, int face, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 262 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)face;(void)s;(void)mode; +# 266 +::exit(___);} +#if 0 +# 262 +{ +# 266 +} +#endif +# 268 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 269 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline T surfCubemapread(surface< void, 12> surf, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 270 +{int volatile ___ = 1;(void)surf;(void)x;(void)y;(void)face;(void)mode; +# 277 +::exit(___);} +#if 0 +# 270 +{ +# 277 +} +#endif +# 279 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 280 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapread(T *res, surface< void, 12> surf, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 281 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)face;(void)mode; +# 285 +::exit(___);} +#if 0 +# 281 +{ +# 285 +} +#endif +# 288 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 289 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapLayeredread(T *res, surface< void, 252> surf, int x, int y, int layerFace, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 290 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)layerFace;(void)s;(void)mode; +# 294 +::exit(___);} +#if 0 +# 290 +{ +# 294 +} +#endif +# 296 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 297 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline T surfCubemapLayeredread(surface< void, 252> surf, int x, int y, int layerFace, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 298 +{int volatile ___ = 1;(void)surf;(void)x;(void)y;(void)layerFace;(void)mode; +# 304 +::exit(___);} +#if 0 +# 298 +{ +# 304 +} +#endif +# 306 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 307 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapLayeredread(T *res, surface< void, 252> surf, int x, int y, int layerFace, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 308 +{int volatile ___ = 1;(void)res;(void)surf;(void)x;(void)y;(void)layerFace;(void)mode; +# 312 +::exit(___);} +#if 0 +# 308 +{ +# 312 +} +#endif +# 315 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 316 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1Dwrite(T val, surface< void, 1> surf, int x, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 317 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)s;(void)mode; +# 321 +::exit(___);} +#if 0 +# 317 +{ +# 321 +} +#endif +# 323 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 324 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1Dwrite(T val, surface< void, 1> surf, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 325 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)mode; +# 329 +::exit(___);} +#if 0 +# 325 +{ +# 329 +} +#endif +# 333 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 334 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2Dwrite(T val, surface< void, 2> surf, int x, int y, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 335 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)s;(void)mode; +# 339 +::exit(___);} +#if 0 +# 335 +{ +# 339 +} +#endif +# 341 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 342 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2Dwrite(T val, surface< void, 2> surf, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 343 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)mode; +# 347 +::exit(___);} +#if 0 +# 343 +{ +# 347 +} +#endif +# 350 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 351 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf3Dwrite(T val, surface< void, 3> surf, int x, int y, int z, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 352 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)z;(void)s;(void)mode; +# 356 +::exit(___);} +#if 0 +# 352 +{ +# 356 +} +#endif +# 358 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 359 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf3Dwrite(T val, surface< void, 3> surf, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 360 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)z;(void)mode; +# 364 +::exit(___);} +#if 0 +# 360 +{ +# 364 +} +#endif +# 367 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 368 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1DLayeredwrite(T val, surface< void, 241> surf, int x, int layer, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 369 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)layer;(void)s;(void)mode; +# 373 +::exit(___);} +#if 0 +# 369 +{ +# 373 +} +#endif +# 375 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 376 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf1DLayeredwrite(T val, surface< void, 241> surf, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 377 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)layer;(void)mode; +# 381 +::exit(___);} +#if 0 +# 377 +{ +# 381 +} +#endif +# 384 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 385 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2DLayeredwrite(T val, surface< void, 242> surf, int x, int y, int layer, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 386 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)layer;(void)s;(void)mode; +# 390 +::exit(___);} +#if 0 +# 386 +{ +# 390 +} +#endif +# 392 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 393 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surf2DLayeredwrite(T val, surface< void, 242> surf, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 394 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)layer;(void)mode; +# 398 +::exit(___);} +#if 0 +# 394 +{ +# 398 +} +#endif +# 401 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 402 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapwrite(T val, surface< void, 12> surf, int x, int y, int face, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 403 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)face;(void)s;(void)mode; +# 407 +::exit(___);} +#if 0 +# 403 +{ +# 407 +} +#endif +# 409 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 410 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapwrite(T val, surface< void, 12> surf, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 411 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)face;(void)mode; +# 415 +::exit(___);} +#if 0 +# 411 +{ +# 415 +} +#endif +# 419 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 420 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapLayeredwrite(T val, surface< void, 252> surf, int x, int y, int layerFace, int s, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 421 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)layerFace;(void)s;(void)mode; +# 425 +::exit(___);} +#if 0 +# 421 +{ +# 425 +} +#endif +# 427 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_functions.h" +template< class T> +# 428 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline void surfCubemapLayeredwrite(T val, surface< void, 252> surf, int x, int y, int layerFace, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 429 +{int volatile ___ = 1;(void)val;(void)surf;(void)x;(void)y;(void)layerFace;(void)mode; +# 433 +::exit(___);} +#if 0 +# 429 +{ +# 433 +} +#endif +# 72 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 73 +struct __nv_tex_rmet_ret { }; +# 75 +template<> struct __nv_tex_rmet_ret< char> { typedef char type; }; +# 76 +template<> struct __nv_tex_rmet_ret< signed char> { typedef signed char type; }; +# 77 +template<> struct __nv_tex_rmet_ret< unsigned char> { typedef unsigned char type; }; +# 78 +template<> struct __nv_tex_rmet_ret< char1> { typedef char1 type; }; +# 79 +template<> struct __nv_tex_rmet_ret< uchar1> { typedef uchar1 type; }; +# 80 +template<> struct __nv_tex_rmet_ret< char2> { typedef char2 type; }; +# 81 +template<> struct __nv_tex_rmet_ret< uchar2> { typedef uchar2 type; }; +# 82 +template<> struct __nv_tex_rmet_ret< char4> { typedef char4 type; }; +# 83 +template<> struct __nv_tex_rmet_ret< uchar4> { typedef uchar4 type; }; +# 85 +template<> struct __nv_tex_rmet_ret< short> { typedef short type; }; +# 86 +template<> struct __nv_tex_rmet_ret< unsigned short> { typedef unsigned short type; }; +# 87 +template<> struct __nv_tex_rmet_ret< short1> { typedef short1 type; }; +# 88 +template<> struct __nv_tex_rmet_ret< ushort1> { typedef ushort1 type; }; +# 89 +template<> struct __nv_tex_rmet_ret< short2> { typedef short2 type; }; +# 90 +template<> struct __nv_tex_rmet_ret< ushort2> { typedef ushort2 type; }; +# 91 +template<> struct __nv_tex_rmet_ret< short4> { typedef short4 type; }; +# 92 +template<> struct __nv_tex_rmet_ret< ushort4> { typedef ushort4 type; }; +# 94 +template<> struct __nv_tex_rmet_ret< int> { typedef int type; }; +# 95 +template<> struct __nv_tex_rmet_ret< unsigned> { typedef unsigned type; }; +# 96 +template<> struct __nv_tex_rmet_ret< int1> { typedef int1 type; }; +# 97 +template<> struct __nv_tex_rmet_ret< uint1> { typedef uint1 type; }; +# 98 +template<> struct __nv_tex_rmet_ret< int2> { typedef int2 type; }; +# 99 +template<> struct __nv_tex_rmet_ret< uint2> { typedef uint2 type; }; +# 100 +template<> struct __nv_tex_rmet_ret< int4> { typedef int4 type; }; +# 101 +template<> struct __nv_tex_rmet_ret< uint4> { typedef uint4 type; }; +# 113 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template<> struct __nv_tex_rmet_ret< float> { typedef float type; }; +# 114 +template<> struct __nv_tex_rmet_ret< float1> { typedef float1 type; }; +# 115 +template<> struct __nv_tex_rmet_ret< float2> { typedef float2 type; }; +# 116 +template<> struct __nv_tex_rmet_ret< float4> { typedef float4 type; }; +# 119 +template< class T> struct __nv_tex_rmet_cast { typedef T *type; }; +# 131 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 132 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex1Dfetch(texture< T, 1, cudaReadModeElementType> t, int x) +# 133 +{int volatile ___ = 1;(void)t;(void)x; +# 139 +::exit(___);} +#if 0 +# 133 +{ +# 139 +} +#endif +# 141 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 142 +struct __nv_tex_rmnf_ret { }; +# 144 +template<> struct __nv_tex_rmnf_ret< char> { typedef float type; }; +# 145 +template<> struct __nv_tex_rmnf_ret< signed char> { typedef float type; }; +# 146 +template<> struct __nv_tex_rmnf_ret< unsigned char> { typedef float type; }; +# 147 +template<> struct __nv_tex_rmnf_ret< short> { typedef float type; }; +# 148 +template<> struct __nv_tex_rmnf_ret< unsigned short> { typedef float type; }; +# 149 +template<> struct __nv_tex_rmnf_ret< char1> { typedef float1 type; }; +# 150 +template<> struct __nv_tex_rmnf_ret< uchar1> { typedef float1 type; }; +# 151 +template<> struct __nv_tex_rmnf_ret< short1> { typedef float1 type; }; +# 152 +template<> struct __nv_tex_rmnf_ret< ushort1> { typedef float1 type; }; +# 153 +template<> struct __nv_tex_rmnf_ret< char2> { typedef float2 type; }; +# 154 +template<> struct __nv_tex_rmnf_ret< uchar2> { typedef float2 type; }; +# 155 +template<> struct __nv_tex_rmnf_ret< short2> { typedef float2 type; }; +# 156 +template<> struct __nv_tex_rmnf_ret< ushort2> { typedef float2 type; }; +# 157 +template<> struct __nv_tex_rmnf_ret< char4> { typedef float4 type; }; +# 158 +template<> struct __nv_tex_rmnf_ret< uchar4> { typedef float4 type; }; +# 159 +template<> struct __nv_tex_rmnf_ret< short4> { typedef float4 type; }; +# 160 +template<> struct __nv_tex_rmnf_ret< ushort4> { typedef float4 type; }; +# 162 +template< class T> +# 163 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex1Dfetch(texture< T, 1, cudaReadModeNormalizedFloat> t, int x) +# 164 +{int volatile ___ = 1;(void)t;(void)x; +# 171 +::exit(___);} +#if 0 +# 164 +{ +# 171 +} +#endif +# 174 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 175 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex1D(texture< T, 1, cudaReadModeElementType> t, float x) +# 176 +{int volatile ___ = 1;(void)t;(void)x; +# 182 +::exit(___);} +#if 0 +# 176 +{ +# 182 +} +#endif +# 184 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 185 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex1D(texture< T, 1, cudaReadModeNormalizedFloat> t, float x) +# 186 +{int volatile ___ = 1;(void)t;(void)x; +# 193 +::exit(___);} +#if 0 +# 186 +{ +# 193 +} +#endif +# 197 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 198 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex2D(texture< T, 2, cudaReadModeElementType> t, float x, float y) +# 199 +{int volatile ___ = 1;(void)t;(void)x;(void)y; +# 206 +::exit(___);} +#if 0 +# 199 +{ +# 206 +} +#endif +# 208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 209 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex2D(texture< T, 2, cudaReadModeNormalizedFloat> t, float x, float y) +# 210 +{int volatile ___ = 1;(void)t;(void)x;(void)y; +# 217 +::exit(___);} +#if 0 +# 210 +{ +# 217 +} +#endif +# 221 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 222 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex1DLayered(texture< T, 241, cudaReadModeElementType> t, float x, int layer) +# 223 +{int volatile ___ = 1;(void)t;(void)x;(void)layer; +# 229 +::exit(___);} +#if 0 +# 223 +{ +# 229 +} +#endif +# 231 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 232 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex1DLayered(texture< T, 241, cudaReadModeNormalizedFloat> t, float x, int layer) +# 233 +{int volatile ___ = 1;(void)t;(void)x;(void)layer; +# 240 +::exit(___);} +#if 0 +# 233 +{ +# 240 +} +#endif +# 244 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 245 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex2DLayered(texture< T, 242, cudaReadModeElementType> t, float x, float y, int layer) +# 246 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)layer; +# 252 +::exit(___);} +#if 0 +# 246 +{ +# 252 +} +#endif +# 254 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 255 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex2DLayered(texture< T, 242, cudaReadModeNormalizedFloat> t, float x, float y, int layer) +# 256 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)layer; +# 263 +::exit(___);} +#if 0 +# 256 +{ +# 263 +} +#endif +# 266 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 267 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex3D(texture< T, 3, cudaReadModeElementType> t, float x, float y, float z) +# 268 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z; +# 274 +::exit(___);} +#if 0 +# 268 +{ +# 274 +} +#endif +# 276 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 277 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex3D(texture< T, 3, cudaReadModeNormalizedFloat> t, float x, float y, float z) +# 278 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z; +# 285 +::exit(___);} +#if 0 +# 278 +{ +# 285 +} +#endif +# 288 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 289 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type texCubemap(texture< T, 12, cudaReadModeElementType> t, float x, float y, float z) +# 290 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z; +# 296 +::exit(___);} +#if 0 +# 290 +{ +# 296 +} +#endif +# 298 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 299 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type texCubemap(texture< T, 12, cudaReadModeNormalizedFloat> t, float x, float y, float z) +# 300 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z; +# 307 +::exit(___);} +#if 0 +# 300 +{ +# 307 +} +#endif +# 310 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 311 +struct __nv_tex2dgather_ret { }; +# 312 +template<> struct __nv_tex2dgather_ret< char> { typedef char4 type; }; +# 313 +template<> struct __nv_tex2dgather_ret< signed char> { typedef char4 type; }; +# 314 +template<> struct __nv_tex2dgather_ret< char1> { typedef char4 type; }; +# 315 +template<> struct __nv_tex2dgather_ret< char2> { typedef char4 type; }; +# 316 +template<> struct __nv_tex2dgather_ret< char3> { typedef char4 type; }; +# 317 +template<> struct __nv_tex2dgather_ret< char4> { typedef char4 type; }; +# 318 +template<> struct __nv_tex2dgather_ret< unsigned char> { typedef uchar4 type; }; +# 319 +template<> struct __nv_tex2dgather_ret< uchar1> { typedef uchar4 type; }; +# 320 +template<> struct __nv_tex2dgather_ret< uchar2> { typedef uchar4 type; }; +# 321 +template<> struct __nv_tex2dgather_ret< uchar3> { typedef uchar4 type; }; +# 322 +template<> struct __nv_tex2dgather_ret< uchar4> { typedef uchar4 type; }; +# 324 +template<> struct __nv_tex2dgather_ret< short> { typedef short4 type; }; +# 325 +template<> struct __nv_tex2dgather_ret< short1> { typedef short4 type; }; +# 326 +template<> struct __nv_tex2dgather_ret< short2> { typedef short4 type; }; +# 327 +template<> struct __nv_tex2dgather_ret< short3> { typedef short4 type; }; +# 328 +template<> struct __nv_tex2dgather_ret< short4> { typedef short4 type; }; +# 329 +template<> struct __nv_tex2dgather_ret< unsigned short> { typedef ushort4 type; }; +# 330 +template<> struct __nv_tex2dgather_ret< ushort1> { typedef ushort4 type; }; +# 331 +template<> struct __nv_tex2dgather_ret< ushort2> { typedef ushort4 type; }; +# 332 +template<> struct __nv_tex2dgather_ret< ushort3> { typedef ushort4 type; }; +# 333 +template<> struct __nv_tex2dgather_ret< ushort4> { typedef ushort4 type; }; +# 335 +template<> struct __nv_tex2dgather_ret< int> { typedef int4 type; }; +# 336 +template<> struct __nv_tex2dgather_ret< int1> { typedef int4 type; }; +# 337 +template<> struct __nv_tex2dgather_ret< int2> { typedef int4 type; }; +# 338 +template<> struct __nv_tex2dgather_ret< int3> { typedef int4 type; }; +# 339 +template<> struct __nv_tex2dgather_ret< int4> { typedef int4 type; }; +# 340 +template<> struct __nv_tex2dgather_ret< unsigned> { typedef uint4 type; }; +# 341 +template<> struct __nv_tex2dgather_ret< uint1> { typedef uint4 type; }; +# 342 +template<> struct __nv_tex2dgather_ret< uint2> { typedef uint4 type; }; +# 343 +template<> struct __nv_tex2dgather_ret< uint3> { typedef uint4 type; }; +# 344 +template<> struct __nv_tex2dgather_ret< uint4> { typedef uint4 type; }; +# 346 +template<> struct __nv_tex2dgather_ret< float> { typedef float4 type; }; +# 347 +template<> struct __nv_tex2dgather_ret< float1> { typedef float4 type; }; +# 348 +template<> struct __nv_tex2dgather_ret< float2> { typedef float4 type; }; +# 349 +template<> struct __nv_tex2dgather_ret< float3> { typedef float4 type; }; +# 350 +template<> struct __nv_tex2dgather_ret< float4> { typedef float4 type; }; +# 352 +template< class T> +# 353 +__attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex2dgather_ret< T> ::type tex2Dgather(texture< T, 2, cudaReadModeElementType> t, float x, float y, int comp = 0) +# 354 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)comp; +# 361 +::exit(___);} +#if 0 +# 354 +{ +# 361 +} +#endif +# 364 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> struct __nv_tex2dgather_rmnf_ret { }; +# 365 +template<> struct __nv_tex2dgather_rmnf_ret< char> { typedef float4 type; }; +# 366 +template<> struct __nv_tex2dgather_rmnf_ret< signed char> { typedef float4 type; }; +# 367 +template<> struct __nv_tex2dgather_rmnf_ret< unsigned char> { typedef float4 type; }; +# 368 +template<> struct __nv_tex2dgather_rmnf_ret< char1> { typedef float4 type; }; +# 369 +template<> struct __nv_tex2dgather_rmnf_ret< uchar1> { typedef float4 type; }; +# 370 +template<> struct __nv_tex2dgather_rmnf_ret< char2> { typedef float4 type; }; +# 371 +template<> struct __nv_tex2dgather_rmnf_ret< uchar2> { typedef float4 type; }; +# 372 +template<> struct __nv_tex2dgather_rmnf_ret< char3> { typedef float4 type; }; +# 373 +template<> struct __nv_tex2dgather_rmnf_ret< uchar3> { typedef float4 type; }; +# 374 +template<> struct __nv_tex2dgather_rmnf_ret< char4> { typedef float4 type; }; +# 375 +template<> struct __nv_tex2dgather_rmnf_ret< uchar4> { typedef float4 type; }; +# 376 +template<> struct __nv_tex2dgather_rmnf_ret< signed short> { typedef float4 type; }; +# 377 +template<> struct __nv_tex2dgather_rmnf_ret< unsigned short> { typedef float4 type; }; +# 378 +template<> struct __nv_tex2dgather_rmnf_ret< short1> { typedef float4 type; }; +# 379 +template<> struct __nv_tex2dgather_rmnf_ret< ushort1> { typedef float4 type; }; +# 380 +template<> struct __nv_tex2dgather_rmnf_ret< short2> { typedef float4 type; }; +# 381 +template<> struct __nv_tex2dgather_rmnf_ret< ushort2> { typedef float4 type; }; +# 382 +template<> struct __nv_tex2dgather_rmnf_ret< short3> { typedef float4 type; }; +# 383 +template<> struct __nv_tex2dgather_rmnf_ret< ushort3> { typedef float4 type; }; +# 384 +template<> struct __nv_tex2dgather_rmnf_ret< short4> { typedef float4 type; }; +# 385 +template<> struct __nv_tex2dgather_rmnf_ret< ushort4> { typedef float4 type; }; +# 387 +template< class T> +# 388 +__attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex2dgather_rmnf_ret< T> ::type tex2Dgather(texture< T, 2, cudaReadModeNormalizedFloat> t, float x, float y, int comp = 0) +# 389 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)comp; +# 396 +::exit(___);} +#if 0 +# 389 +{ +# 396 +} +#endif +# 400 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 401 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex1DLod(texture< T, 1, cudaReadModeElementType> t, float x, float level) +# 402 +{int volatile ___ = 1;(void)t;(void)x;(void)level; +# 408 +::exit(___);} +#if 0 +# 402 +{ +# 408 +} +#endif +# 410 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 411 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex1DLod(texture< T, 1, cudaReadModeNormalizedFloat> t, float x, float level) +# 412 +{int volatile ___ = 1;(void)t;(void)x;(void)level; +# 419 +::exit(___);} +#if 0 +# 412 +{ +# 419 +} +#endif +# 422 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 423 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex2DLod(texture< T, 2, cudaReadModeElementType> t, float x, float y, float level) +# 424 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)level; +# 430 +::exit(___);} +#if 0 +# 424 +{ +# 430 +} +#endif +# 432 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 433 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex2DLod(texture< T, 2, cudaReadModeNormalizedFloat> t, float x, float y, float level) +# 434 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)level; +# 441 +::exit(___);} +#if 0 +# 434 +{ +# 441 +} +#endif +# 444 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 445 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex1DLayeredLod(texture< T, 241, cudaReadModeElementType> t, float x, int layer, float level) +# 446 +{int volatile ___ = 1;(void)t;(void)x;(void)layer;(void)level; +# 452 +::exit(___);} +#if 0 +# 446 +{ +# 452 +} +#endif +# 454 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 455 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex1DLayeredLod(texture< T, 241, cudaReadModeNormalizedFloat> t, float x, int layer, float level) +# 456 +{int volatile ___ = 1;(void)t;(void)x;(void)layer;(void)level; +# 463 +::exit(___);} +#if 0 +# 456 +{ +# 463 +} +#endif +# 466 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 467 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex2DLayeredLod(texture< T, 242, cudaReadModeElementType> t, float x, float y, int layer, float level) +# 468 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)layer;(void)level; +# 474 +::exit(___);} +#if 0 +# 468 +{ +# 474 +} +#endif +# 476 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 477 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex2DLayeredLod(texture< T, 242, cudaReadModeNormalizedFloat> t, float x, float y, int layer, float level) +# 478 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)layer;(void)level; +# 485 +::exit(___);} +#if 0 +# 478 +{ +# 485 +} +#endif +# 488 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 489 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex3DLod(texture< T, 3, cudaReadModeElementType> t, float x, float y, float z, float level) +# 490 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)level; +# 496 +::exit(___);} +#if 0 +# 490 +{ +# 496 +} +#endif +# 498 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 499 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex3DLod(texture< T, 3, cudaReadModeNormalizedFloat> t, float x, float y, float z, float level) +# 500 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)level; +# 507 +::exit(___);} +#if 0 +# 500 +{ +# 507 +} +#endif +# 510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 511 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type texCubemapLod(texture< T, 12, cudaReadModeElementType> t, float x, float y, float z, float level) +# 512 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)level; +# 518 +::exit(___);} +#if 0 +# 512 +{ +# 518 +} +#endif +# 520 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 521 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type texCubemapLod(texture< T, 12, cudaReadModeNormalizedFloat> t, float x, float y, float z, float level) +# 522 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)level; +# 529 +::exit(___);} +#if 0 +# 522 +{ +# 529 +} +#endif +# 533 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 534 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type texCubemapLayered(texture< T, 252, cudaReadModeElementType> t, float x, float y, float z, int layer) +# 535 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)layer; +# 541 +::exit(___);} +#if 0 +# 535 +{ +# 541 +} +#endif +# 543 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 544 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type texCubemapLayered(texture< T, 252, cudaReadModeNormalizedFloat> t, float x, float y, float z, int layer) +# 545 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)layer; +# 552 +::exit(___);} +#if 0 +# 545 +{ +# 552 +} +#endif +# 556 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 557 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type texCubemapLayeredLod(texture< T, 252, cudaReadModeElementType> t, float x, float y, float z, int layer, float level) +# 558 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)layer;(void)level; +# 564 +::exit(___);} +#if 0 +# 558 +{ +# 564 +} +#endif +# 566 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 567 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type texCubemapLayeredLod(texture< T, 252, cudaReadModeNormalizedFloat> t, float x, float y, float z, int layer, float level) +# 568 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)layer;(void)level; +# 575 +::exit(___);} +#if 0 +# 568 +{ +# 575 +} +#endif +# 579 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 580 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type texCubemapGrad(texture< T, 12, cudaReadModeElementType> t, float x, float y, float z, float4 dPdx, float4 dPdy) +# 581 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 587 +::exit(___);} +#if 0 +# 581 +{ +# 587 +} +#endif +# 589 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 590 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type texCubemapGrad(texture< T, 12, cudaReadModeNormalizedFloat> t, float x, float y, float z, float4 dPdx, float4 dPdy) +# 591 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 598 +::exit(___);} +#if 0 +# 591 +{ +# 598 +} +#endif +# 602 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 603 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type texCubemapLayeredGrad(texture< T, 252, cudaReadModeElementType> t, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +# 604 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)layer;(void)dPdx;(void)dPdy; +# 610 +::exit(___);} +#if 0 +# 604 +{ +# 610 +} +#endif +# 612 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 613 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type texCubemapLayeredGrad(texture< T, 252, cudaReadModeNormalizedFloat> t, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +# 614 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)layer;(void)dPdx;(void)dPdy; +# 621 +::exit(___);} +#if 0 +# 614 +{ +# 621 +} +#endif +# 625 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 626 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex1DGrad(texture< T, 1, cudaReadModeElementType> t, float x, float dPdx, float dPdy) +# 627 +{int volatile ___ = 1;(void)t;(void)x;(void)dPdx;(void)dPdy; +# 633 +::exit(___);} +#if 0 +# 627 +{ +# 633 +} +#endif +# 635 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 636 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex1DGrad(texture< T, 1, cudaReadModeNormalizedFloat> t, float x, float dPdx, float dPdy) +# 637 +{int volatile ___ = 1;(void)t;(void)x;(void)dPdx;(void)dPdy; +# 644 +::exit(___);} +#if 0 +# 637 +{ +# 644 +} +#endif +# 648 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 649 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex2DGrad(texture< T, 2, cudaReadModeElementType> t, float x, float y, float2 dPdx, float2 dPdy) +# 650 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)dPdx;(void)dPdy; +# 656 +::exit(___);} +#if 0 +# 650 +{ +# 656 +} +#endif +# 658 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 659 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex2DGrad(texture< T, 2, cudaReadModeNormalizedFloat> t, float x, float y, float2 dPdx, float2 dPdy) +# 660 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)dPdx;(void)dPdy; +# 667 +::exit(___);} +#if 0 +# 660 +{ +# 667 +} +#endif +# 670 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 671 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex1DLayeredGrad(texture< T, 241, cudaReadModeElementType> t, float x, int layer, float dPdx, float dPdy) +# 672 +{int volatile ___ = 1;(void)t;(void)x;(void)layer;(void)dPdx;(void)dPdy; +# 678 +::exit(___);} +#if 0 +# 672 +{ +# 678 +} +#endif +# 680 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 681 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex1DLayeredGrad(texture< T, 241, cudaReadModeNormalizedFloat> t, float x, int layer, float dPdx, float dPdy) +# 682 +{int volatile ___ = 1;(void)t;(void)x;(void)layer;(void)dPdx;(void)dPdy; +# 689 +::exit(___);} +#if 0 +# 682 +{ +# 689 +} +#endif +# 692 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 693 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex2DLayeredGrad(texture< T, 242, cudaReadModeElementType> t, float x, float y, int layer, float2 dPdx, float2 dPdy) +# 694 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)layer;(void)dPdx;(void)dPdy; +# 700 +::exit(___);} +#if 0 +# 694 +{ +# 700 +} +#endif +# 702 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 703 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex2DLayeredGrad(texture< T, 242, cudaReadModeNormalizedFloat> t, float x, float y, int layer, float2 dPdx, float2 dPdy) +# 704 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)layer;(void)dPdx;(void)dPdy; +# 711 +::exit(___);} +#if 0 +# 704 +{ +# 711 +} +#endif +# 714 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 715 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmet_ret< T> ::type tex3DGrad(texture< T, 3, cudaReadModeElementType> t, float x, float y, float z, float4 dPdx, float4 dPdy) +# 716 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 722 +::exit(___);} +#if 0 +# 716 +{ +# 722 +} +#endif +# 724 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_fetch_functions.h" +template< class T> +# 725 +__attribute((deprecated)) __attribute((always_inline)) __attribute__((unused)) static inline typename __nv_tex_rmnf_ret< T> ::type tex3DGrad(texture< T, 3, cudaReadModeNormalizedFloat> t, float x, float y, float z, float4 dPdx, float4 dPdy) +# 726 +{int volatile ___ = 1;(void)t;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 733 +::exit(___);} +#if 0 +# 726 +{ +# 733 +} +#endif +# 64 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> struct __nv_itex_trait { }; +# 65 +template<> struct __nv_itex_trait< char> { typedef void type; }; +# 66 +template<> struct __nv_itex_trait< signed char> { typedef void type; }; +# 67 +template<> struct __nv_itex_trait< char1> { typedef void type; }; +# 68 +template<> struct __nv_itex_trait< char2> { typedef void type; }; +# 69 +template<> struct __nv_itex_trait< char4> { typedef void type; }; +# 70 +template<> struct __nv_itex_trait< unsigned char> { typedef void type; }; +# 71 +template<> struct __nv_itex_trait< uchar1> { typedef void type; }; +# 72 +template<> struct __nv_itex_trait< uchar2> { typedef void type; }; +# 73 +template<> struct __nv_itex_trait< uchar4> { typedef void type; }; +# 74 +template<> struct __nv_itex_trait< short> { typedef void type; }; +# 75 +template<> struct __nv_itex_trait< short1> { typedef void type; }; +# 76 +template<> struct __nv_itex_trait< short2> { typedef void type; }; +# 77 +template<> struct __nv_itex_trait< short4> { typedef void type; }; +# 78 +template<> struct __nv_itex_trait< unsigned short> { typedef void type; }; +# 79 +template<> struct __nv_itex_trait< ushort1> { typedef void type; }; +# 80 +template<> struct __nv_itex_trait< ushort2> { typedef void type; }; +# 81 +template<> struct __nv_itex_trait< ushort4> { typedef void type; }; +# 82 +template<> struct __nv_itex_trait< int> { typedef void type; }; +# 83 +template<> struct __nv_itex_trait< int1> { typedef void type; }; +# 84 +template<> struct __nv_itex_trait< int2> { typedef void type; }; +# 85 +template<> struct __nv_itex_trait< int4> { typedef void type; }; +# 86 +template<> struct __nv_itex_trait< unsigned> { typedef void type; }; +# 87 +template<> struct __nv_itex_trait< uint1> { typedef void type; }; +# 88 +template<> struct __nv_itex_trait< uint2> { typedef void type; }; +# 89 +template<> struct __nv_itex_trait< uint4> { typedef void type; }; +# 100 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template<> struct __nv_itex_trait< float> { typedef void type; }; +# 101 +template<> struct __nv_itex_trait< float1> { typedef void type; }; +# 102 +template<> struct __nv_itex_trait< float2> { typedef void type; }; +# 103 +template<> struct __nv_itex_trait< float4> { typedef void type; }; +# 107 +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 108 +tex1Dfetch(T *ptr, cudaTextureObject_t obj, int x) +# 109 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x; +# 113 +::exit(___);} +#if 0 +# 109 +{ +# 113 +} +#endif +# 115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 116 +tex1Dfetch(cudaTextureObject_t texObject, int x) +# 117 +{int volatile ___ = 1;(void)texObject;(void)x; +# 123 +::exit(___);} +#if 0 +# 117 +{ +# 123 +} +#endif +# 125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 126 +tex1D(T *ptr, cudaTextureObject_t obj, float x) +# 127 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x; +# 131 +::exit(___);} +#if 0 +# 127 +{ +# 131 +} +#endif +# 134 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 135 +tex1D(cudaTextureObject_t texObject, float x) +# 136 +{int volatile ___ = 1;(void)texObject;(void)x; +# 142 +::exit(___);} +#if 0 +# 136 +{ +# 142 +} +#endif +# 145 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 146 +tex2D(T *ptr, cudaTextureObject_t obj, float x, float y) +# 147 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y; +# 151 +::exit(___);} +#if 0 +# 147 +{ +# 151 +} +#endif +# 153 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 154 +tex2D(cudaTextureObject_t texObject, float x, float y) +# 155 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y; +# 161 +::exit(___);} +#if 0 +# 155 +{ +# 161 +} +#endif +# 164 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 165 +tex2D(T *ptr, cudaTextureObject_t obj, float x, float y, bool * +# 166 +isResident) +# 167 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)isResident; +# 173 +::exit(___);} +#if 0 +# 167 +{ +# 173 +} +#endif +# 175 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 176 +tex2D(cudaTextureObject_t texObject, float x, float y, bool *isResident) +# 177 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)isResident; +# 183 +::exit(___);} +#if 0 +# 177 +{ +# 183 +} +#endif +# 188 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 189 +tex3D(T *ptr, cudaTextureObject_t obj, float x, float y, float z) +# 190 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z; +# 194 +::exit(___);} +#if 0 +# 190 +{ +# 194 +} +#endif +# 196 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 197 +tex3D(cudaTextureObject_t texObject, float x, float y, float z) +# 198 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z; +# 204 +::exit(___);} +#if 0 +# 198 +{ +# 204 +} +#endif +# 207 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 208 +tex3D(T *ptr, cudaTextureObject_t obj, float x, float y, float z, bool * +# 209 +isResident) +# 210 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)isResident; +# 216 +::exit(___);} +#if 0 +# 210 +{ +# 216 +} +#endif +# 218 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 219 +tex3D(cudaTextureObject_t texObject, float x, float y, float z, bool *isResident) +# 220 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)isResident; +# 226 +::exit(___);} +#if 0 +# 220 +{ +# 226 +} +#endif +# 230 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 231 +tex1DLayered(T *ptr, cudaTextureObject_t obj, float x, int layer) +# 232 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)layer; +# 236 +::exit(___);} +#if 0 +# 232 +{ +# 236 +} +#endif +# 238 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 239 +tex1DLayered(cudaTextureObject_t texObject, float x, int layer) +# 240 +{int volatile ___ = 1;(void)texObject;(void)x;(void)layer; +# 246 +::exit(___);} +#if 0 +# 240 +{ +# 246 +} +#endif +# 248 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 249 +tex2DLayered(T *ptr, cudaTextureObject_t obj, float x, float y, int layer) +# 250 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layer; +# 254 +::exit(___);} +#if 0 +# 250 +{ +# 254 +} +#endif +# 256 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 257 +tex2DLayered(cudaTextureObject_t texObject, float x, float y, int layer) +# 258 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)layer; +# 264 +::exit(___);} +#if 0 +# 258 +{ +# 264 +} +#endif +# 267 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 268 +tex2DLayered(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, bool *isResident) +# 269 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layer;(void)isResident; +# 275 +::exit(___);} +#if 0 +# 269 +{ +# 275 +} +#endif +# 277 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 278 +tex2DLayered(cudaTextureObject_t texObject, float x, float y, int layer, bool *isResident) +# 279 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)layer;(void)isResident; +# 285 +::exit(___);} +#if 0 +# 279 +{ +# 285 +} +#endif +# 289 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 290 +texCubemap(T *ptr, cudaTextureObject_t obj, float x, float y, float z) +# 291 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z; +# 295 +::exit(___);} +#if 0 +# 291 +{ +# 295 +} +#endif +# 298 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 299 +texCubemap(cudaTextureObject_t texObject, float x, float y, float z) +# 300 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z; +# 306 +::exit(___);} +#if 0 +# 300 +{ +# 306 +} +#endif +# 309 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 310 +texCubemapLayered(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer) +# 311 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)layer; +# 315 +::exit(___);} +#if 0 +# 311 +{ +# 315 +} +#endif +# 317 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 318 +texCubemapLayered(cudaTextureObject_t texObject, float x, float y, float z, int layer) +# 319 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)layer; +# 325 +::exit(___);} +#if 0 +# 319 +{ +# 325 +} +#endif +# 327 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 328 +tex2Dgather(T *ptr, cudaTextureObject_t obj, float x, float y, int comp = 0) +# 329 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)comp; +# 333 +::exit(___);} +#if 0 +# 329 +{ +# 333 +} +#endif +# 335 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 336 +tex2Dgather(cudaTextureObject_t to, float x, float y, int comp = 0) +# 337 +{int volatile ___ = 1;(void)to;(void)x;(void)y;(void)comp; +# 343 +::exit(___);} +#if 0 +# 337 +{ +# 343 +} +#endif +# 346 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 347 +tex2Dgather(T *ptr, cudaTextureObject_t obj, float x, float y, bool *isResident, int comp = 0) +# 348 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)isResident;(void)comp; +# 354 +::exit(___);} +#if 0 +# 348 +{ +# 354 +} +#endif +# 356 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 357 +tex2Dgather(cudaTextureObject_t to, float x, float y, bool *isResident, int comp = 0) +# 358 +{int volatile ___ = 1;(void)to;(void)x;(void)y;(void)isResident;(void)comp; +# 364 +::exit(___);} +#if 0 +# 358 +{ +# 364 +} +#endif +# 368 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 369 +tex1DLod(T *ptr, cudaTextureObject_t obj, float x, float level) +# 370 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)level; +# 374 +::exit(___);} +#if 0 +# 370 +{ +# 374 +} +#endif +# 376 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 377 +tex1DLod(cudaTextureObject_t texObject, float x, float level) +# 378 +{int volatile ___ = 1;(void)texObject;(void)x;(void)level; +# 384 +::exit(___);} +#if 0 +# 378 +{ +# 384 +} +#endif +# 387 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 388 +tex2DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float level) +# 389 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)level; +# 393 +::exit(___);} +#if 0 +# 389 +{ +# 393 +} +#endif +# 395 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 396 +tex2DLod(cudaTextureObject_t texObject, float x, float y, float level) +# 397 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)level; +# 403 +::exit(___);} +#if 0 +# 397 +{ +# 403 +} +#endif +# 407 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 408 +tex2DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float level, bool *isResident) +# 409 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)level;(void)isResident; +# 415 +::exit(___);} +#if 0 +# 409 +{ +# 415 +} +#endif +# 417 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 418 +tex2DLod(cudaTextureObject_t texObject, float x, float y, float level, bool *isResident) +# 419 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)level;(void)isResident; +# 425 +::exit(___);} +#if 0 +# 419 +{ +# 425 +} +#endif +# 430 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 431 +tex3DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level) +# 432 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)level; +# 436 +::exit(___);} +#if 0 +# 432 +{ +# 436 +} +#endif +# 438 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 439 +tex3DLod(cudaTextureObject_t texObject, float x, float y, float z, float level) +# 440 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)level; +# 446 +::exit(___);} +#if 0 +# 440 +{ +# 446 +} +#endif +# 449 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 450 +tex3DLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level, bool *isResident) +# 451 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)level;(void)isResident; +# 457 +::exit(___);} +#if 0 +# 451 +{ +# 457 +} +#endif +# 459 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 460 +tex3DLod(cudaTextureObject_t texObject, float x, float y, float z, float level, bool *isResident) +# 461 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)level;(void)isResident; +# 467 +::exit(___);} +#if 0 +# 461 +{ +# 467 +} +#endif +# 472 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 473 +tex1DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, int layer, float level) +# 474 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)layer;(void)level; +# 478 +::exit(___);} +#if 0 +# 474 +{ +# 478 +} +#endif +# 480 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 481 +tex1DLayeredLod(cudaTextureObject_t texObject, float x, int layer, float level) +# 482 +{int volatile ___ = 1;(void)texObject;(void)x;(void)layer;(void)level; +# 488 +::exit(___);} +#if 0 +# 482 +{ +# 488 +} +#endif +# 491 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 492 +tex2DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, float level) +# 493 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layer;(void)level; +# 497 +::exit(___);} +#if 0 +# 493 +{ +# 497 +} +#endif +# 499 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 500 +tex2DLayeredLod(cudaTextureObject_t texObject, float x, float y, int layer, float level) +# 501 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)layer;(void)level; +# 507 +::exit(___);} +#if 0 +# 501 +{ +# 507 +} +#endif +# 510 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 511 +tex2DLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, float level, bool *isResident) +# 512 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layer;(void)level;(void)isResident; +# 518 +::exit(___);} +#if 0 +# 512 +{ +# 518 +} +#endif +# 520 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 521 +tex2DLayeredLod(cudaTextureObject_t texObject, float x, float y, int layer, float level, bool *isResident) +# 522 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)layer;(void)level;(void)isResident; +# 528 +::exit(___);} +#if 0 +# 522 +{ +# 528 +} +#endif +# 531 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 532 +texCubemapLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float level) +# 533 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)level; +# 537 +::exit(___);} +#if 0 +# 533 +{ +# 537 +} +#endif +# 539 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 540 +texCubemapLod(cudaTextureObject_t texObject, float x, float y, float z, float level) +# 541 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)level; +# 547 +::exit(___);} +#if 0 +# 541 +{ +# 547 +} +#endif +# 550 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 551 +texCubemapGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy) +# 552 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 556 +::exit(___);} +#if 0 +# 552 +{ +# 556 +} +#endif +# 558 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 559 +texCubemapGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy) +# 560 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 566 +::exit(___);} +#if 0 +# 560 +{ +# 566 +} +#endif +# 568 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 569 +texCubemapLayeredLod(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer, float level) +# 570 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)layer;(void)level; +# 574 +::exit(___);} +#if 0 +# 570 +{ +# 574 +} +#endif +# 576 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 577 +texCubemapLayeredLod(cudaTextureObject_t texObject, float x, float y, float z, int layer, float level) +# 578 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)layer;(void)level; +# 584 +::exit(___);} +#if 0 +# 578 +{ +# 584 +} +#endif +# 586 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 587 +tex1DGrad(T *ptr, cudaTextureObject_t obj, float x, float dPdx, float dPdy) +# 588 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)dPdx;(void)dPdy; +# 592 +::exit(___);} +#if 0 +# 588 +{ +# 592 +} +#endif +# 594 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 595 +tex1DGrad(cudaTextureObject_t texObject, float x, float dPdx, float dPdy) +# 596 +{int volatile ___ = 1;(void)texObject;(void)x;(void)dPdx;(void)dPdy; +# 602 +::exit(___);} +#if 0 +# 596 +{ +# 602 +} +#endif +# 605 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 606 +tex2DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float2 dPdx, float2 dPdy) +# 607 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)dPdx;(void)dPdy; +# 612 +::exit(___);} +#if 0 +# 607 +{ +# 612 +} +#endif +# 614 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 615 +tex2DGrad(cudaTextureObject_t texObject, float x, float y, float2 dPdx, float2 dPdy) +# 616 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)dPdx;(void)dPdy; +# 622 +::exit(___);} +#if 0 +# 616 +{ +# 622 +} +#endif +# 625 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 626 +tex2DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float2 dPdx, float2 dPdy, bool *isResident) +# 627 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)dPdx;(void)dPdy;(void)isResident; +# 634 +::exit(___);} +#if 0 +# 627 +{ +# 634 +} +#endif +# 636 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 637 +tex2DGrad(cudaTextureObject_t texObject, float x, float y, float2 dPdx, float2 dPdy, bool *isResident) +# 638 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)dPdx;(void)dPdy;(void)isResident; +# 644 +::exit(___);} +#if 0 +# 638 +{ +# 644 +} +#endif +# 648 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 649 +tex3DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy) +# 650 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 654 +::exit(___);} +#if 0 +# 650 +{ +# 654 +} +#endif +# 656 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 657 +tex3DGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy) +# 658 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy; +# 664 +::exit(___);} +#if 0 +# 658 +{ +# 664 +} +#endif +# 667 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 668 +tex3DGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, float4 dPdx, float4 dPdy, bool *isResident) +# 669 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy;(void)isResident; +# 675 +::exit(___);} +#if 0 +# 669 +{ +# 675 +} +#endif +# 677 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 678 +tex3DGrad(cudaTextureObject_t texObject, float x, float y, float z, float4 dPdx, float4 dPdy, bool *isResident) +# 679 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)dPdx;(void)dPdy;(void)isResident; +# 685 +::exit(___);} +#if 0 +# 679 +{ +# 685 +} +#endif +# 690 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 691 +tex1DLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, int layer, float dPdx, float dPdy) +# 692 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)layer;(void)dPdx;(void)dPdy; +# 696 +::exit(___);} +#if 0 +# 692 +{ +# 696 +} +#endif +# 698 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 699 +tex1DLayeredGrad(cudaTextureObject_t texObject, float x, int layer, float dPdx, float dPdy) +# 700 +{int volatile ___ = 1;(void)texObject;(void)x;(void)layer;(void)dPdx;(void)dPdy; +# 706 +::exit(___);} +#if 0 +# 700 +{ +# 706 +} +#endif +# 709 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 710 +tex2DLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, float2 dPdx, float2 dPdy) +# 711 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layer;(void)dPdx;(void)dPdy; +# 715 +::exit(___);} +#if 0 +# 711 +{ +# 715 +} +#endif +# 717 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 718 +tex2DLayeredGrad(cudaTextureObject_t texObject, float x, float y, int layer, float2 dPdx, float2 dPdy) +# 719 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)layer;(void)dPdx;(void)dPdy; +# 725 +::exit(___);} +#if 0 +# 719 +{ +# 725 +} +#endif +# 728 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 729 +tex2DLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, float y, int layer, float2 dPdx, float2 dPdy, bool *isResident) +# 730 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layer;(void)dPdx;(void)dPdy;(void)isResident; +# 736 +::exit(___);} +#if 0 +# 730 +{ +# 736 +} +#endif +# 738 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 739 +tex2DLayeredGrad(cudaTextureObject_t texObject, float x, float y, int layer, float2 dPdx, float2 dPdy, bool *isResident) +# 740 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)layer;(void)dPdx;(void)dPdy;(void)isResident; +# 746 +::exit(___);} +#if 0 +# 740 +{ +# 746 +} +#endif +# 750 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_itex_trait< T> ::type +# 751 +texCubemapLayeredGrad(T *ptr, cudaTextureObject_t obj, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +# 752 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)layer;(void)dPdx;(void)dPdy; +# 756 +::exit(___);} +#if 0 +# 752 +{ +# 756 +} +#endif +# 758 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/texture_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 759 +texCubemapLayeredGrad(cudaTextureObject_t texObject, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) +# 760 +{int volatile ___ = 1;(void)texObject;(void)x;(void)y;(void)z;(void)layer;(void)dPdx;(void)dPdy; +# 766 +::exit(___);} +#if 0 +# 760 +{ +# 766 +} +#endif +# 59 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> struct __nv_isurf_trait { }; +# 60 +template<> struct __nv_isurf_trait< char> { typedef void type; }; +# 61 +template<> struct __nv_isurf_trait< signed char> { typedef void type; }; +# 62 +template<> struct __nv_isurf_trait< char1> { typedef void type; }; +# 63 +template<> struct __nv_isurf_trait< unsigned char> { typedef void type; }; +# 64 +template<> struct __nv_isurf_trait< uchar1> { typedef void type; }; +# 65 +template<> struct __nv_isurf_trait< short> { typedef void type; }; +# 66 +template<> struct __nv_isurf_trait< short1> { typedef void type; }; +# 67 +template<> struct __nv_isurf_trait< unsigned short> { typedef void type; }; +# 68 +template<> struct __nv_isurf_trait< ushort1> { typedef void type; }; +# 69 +template<> struct __nv_isurf_trait< int> { typedef void type; }; +# 70 +template<> struct __nv_isurf_trait< int1> { typedef void type; }; +# 71 +template<> struct __nv_isurf_trait< unsigned> { typedef void type; }; +# 72 +template<> struct __nv_isurf_trait< uint1> { typedef void type; }; +# 73 +template<> struct __nv_isurf_trait< long long> { typedef void type; }; +# 74 +template<> struct __nv_isurf_trait< longlong1> { typedef void type; }; +# 75 +template<> struct __nv_isurf_trait< unsigned long long> { typedef void type; }; +# 76 +template<> struct __nv_isurf_trait< ulonglong1> { typedef void type; }; +# 77 +template<> struct __nv_isurf_trait< float> { typedef void type; }; +# 78 +template<> struct __nv_isurf_trait< float1> { typedef void type; }; +# 80 +template<> struct __nv_isurf_trait< char2> { typedef void type; }; +# 81 +template<> struct __nv_isurf_trait< uchar2> { typedef void type; }; +# 82 +template<> struct __nv_isurf_trait< short2> { typedef void type; }; +# 83 +template<> struct __nv_isurf_trait< ushort2> { typedef void type; }; +# 84 +template<> struct __nv_isurf_trait< int2> { typedef void type; }; +# 85 +template<> struct __nv_isurf_trait< uint2> { typedef void type; }; +# 86 +template<> struct __nv_isurf_trait< longlong2> { typedef void type; }; +# 87 +template<> struct __nv_isurf_trait< ulonglong2> { typedef void type; }; +# 88 +template<> struct __nv_isurf_trait< float2> { typedef void type; }; +# 90 +template<> struct __nv_isurf_trait< char4> { typedef void type; }; +# 91 +template<> struct __nv_isurf_trait< uchar4> { typedef void type; }; +# 92 +template<> struct __nv_isurf_trait< short4> { typedef void type; }; +# 93 +template<> struct __nv_isurf_trait< ushort4> { typedef void type; }; +# 94 +template<> struct __nv_isurf_trait< int4> { typedef void type; }; +# 95 +template<> struct __nv_isurf_trait< uint4> { typedef void type; }; +# 96 +template<> struct __nv_isurf_trait< float4> { typedef void type; }; +# 99 +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 100 +surf1Dread(T *ptr, cudaSurfaceObject_t obj, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 101 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)mode; +# 105 +::exit(___);} +#if 0 +# 101 +{ +# 105 +} +#endif +# 107 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 108 +surf1Dread(cudaSurfaceObject_t surfObject, int x, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +# 109 +{int volatile ___ = 1;(void)surfObject;(void)x;(void)boundaryMode; +# 115 +::exit(___);} +#if 0 +# 109 +{ +# 115 +} +#endif +# 117 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 118 +surf2Dread(T *ptr, cudaSurfaceObject_t obj, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 119 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)mode; +# 123 +::exit(___);} +#if 0 +# 119 +{ +# 123 +} +#endif +# 125 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 126 +surf2Dread(cudaSurfaceObject_t surfObject, int x, int y, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +# 127 +{int volatile ___ = 1;(void)surfObject;(void)x;(void)y;(void)boundaryMode; +# 133 +::exit(___);} +#if 0 +# 127 +{ +# 133 +} +#endif +# 136 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 137 +surf3Dread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 138 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)z;(void)mode; +# 142 +::exit(___);} +#if 0 +# 138 +{ +# 142 +} +#endif +# 144 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 145 +surf3Dread(cudaSurfaceObject_t surfObject, int x, int y, int z, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +# 146 +{int volatile ___ = 1;(void)surfObject;(void)x;(void)y;(void)z;(void)boundaryMode; +# 152 +::exit(___);} +#if 0 +# 146 +{ +# 152 +} +#endif +# 154 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 155 +surf1DLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 156 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)layer;(void)mode; +# 160 +::exit(___);} +#if 0 +# 156 +{ +# 160 +} +#endif +# 162 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 163 +surf1DLayeredread(cudaSurfaceObject_t surfObject, int x, int layer, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +# 164 +{int volatile ___ = 1;(void)surfObject;(void)x;(void)layer;(void)boundaryMode; +# 170 +::exit(___);} +#if 0 +# 164 +{ +# 170 +} +#endif +# 172 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 173 +surf2DLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 174 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layer;(void)mode; +# 178 +::exit(___);} +#if 0 +# 174 +{ +# 178 +} +#endif +# 180 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 181 +surf2DLayeredread(cudaSurfaceObject_t surfObject, int x, int y, int layer, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +# 182 +{int volatile ___ = 1;(void)surfObject;(void)x;(void)y;(void)layer;(void)boundaryMode; +# 188 +::exit(___);} +#if 0 +# 182 +{ +# 188 +} +#endif +# 190 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 191 +surfCubemapread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 192 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)face;(void)mode; +# 196 +::exit(___);} +#if 0 +# 192 +{ +# 196 +} +#endif +# 198 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 199 +surfCubemapread(cudaSurfaceObject_t surfObject, int x, int y, int face, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +# 200 +{int volatile ___ = 1;(void)surfObject;(void)x;(void)y;(void)face;(void)boundaryMode; +# 206 +::exit(___);} +#if 0 +# 200 +{ +# 206 +} +#endif +# 208 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 209 +surfCubemapLayeredread(T *ptr, cudaSurfaceObject_t obj, int x, int y, int layerface, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 210 +{int volatile ___ = 1;(void)ptr;(void)obj;(void)x;(void)y;(void)layerface;(void)mode; +# 214 +::exit(___);} +#if 0 +# 210 +{ +# 214 +} +#endif +# 216 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static T +# 217 +surfCubemapLayeredread(cudaSurfaceObject_t surfObject, int x, int y, int layerface, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap) +# 218 +{int volatile ___ = 1;(void)surfObject;(void)x;(void)y;(void)layerface;(void)boundaryMode; +# 224 +::exit(___);} +#if 0 +# 218 +{ +# 224 +} +#endif +# 226 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 227 +surf1Dwrite(T val, cudaSurfaceObject_t obj, int x, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 228 +{int volatile ___ = 1;(void)val;(void)obj;(void)x;(void)mode; +# 232 +::exit(___);} +#if 0 +# 228 +{ +# 232 +} +#endif +# 234 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 235 +surf2Dwrite(T val, cudaSurfaceObject_t obj, int x, int y, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 236 +{int volatile ___ = 1;(void)val;(void)obj;(void)x;(void)y;(void)mode; +# 240 +::exit(___);} +#if 0 +# 236 +{ +# 240 +} +#endif +# 242 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 243 +surf3Dwrite(T val, cudaSurfaceObject_t obj, int x, int y, int z, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 244 +{int volatile ___ = 1;(void)val;(void)obj;(void)x;(void)y;(void)z;(void)mode; +# 248 +::exit(___);} +#if 0 +# 244 +{ +# 248 +} +#endif +# 250 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 251 +surf1DLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 252 +{int volatile ___ = 1;(void)val;(void)obj;(void)x;(void)layer;(void)mode; +# 256 +::exit(___);} +#if 0 +# 252 +{ +# 256 +} +#endif +# 258 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 259 +surf2DLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int y, int layer, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 260 +{int volatile ___ = 1;(void)val;(void)obj;(void)x;(void)y;(void)layer;(void)mode; +# 264 +::exit(___);} +#if 0 +# 260 +{ +# 264 +} +#endif +# 266 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 267 +surfCubemapwrite(T val, cudaSurfaceObject_t obj, int x, int y, int face, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 268 +{int volatile ___ = 1;(void)val;(void)obj;(void)x;(void)y;(void)face;(void)mode; +# 272 +::exit(___);} +#if 0 +# 268 +{ +# 272 +} +#endif +# 274 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/surface_indirect_functions.h" +template< class T> __attribute__((unused)) static typename __nv_isurf_trait< T> ::type +# 275 +surfCubemapLayeredwrite(T val, cudaSurfaceObject_t obj, int x, int y, int layerface, cudaSurfaceBoundaryMode mode = cudaBoundaryModeTrap) +# 276 +{int volatile ___ = 1;(void)val;(void)obj;(void)x;(void)y;(void)layerface;(void)mode; +# 280 +::exit(___);} +#if 0 +# 276 +{ +# 280 +} +#endif +# 3308 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/crt/device_functions.h" +extern "C" unsigned __cudaPushCallConfiguration(dim3 gridDim, dim3 blockDim, size_t sharedMem = 0, CUstream_st * stream = 0); +# 68 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/device_launch_parameters.h" +extern "C" { +# 71 +extern const uint3 __device_builtin_variable_threadIdx; +# 72 +extern const uint3 __device_builtin_variable_blockIdx; +# 73 +extern const dim3 __device_builtin_variable_blockDim; +# 74 +extern const dim3 __device_builtin_variable_gridDim; +# 75 +extern const int __device_builtin_variable_warpSize; +# 80 +} +# 201 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 202 +cudaLaunchKernel(const T * +# 203 +func, dim3 +# 204 +gridDim, dim3 +# 205 +blockDim, void ** +# 206 +args, size_t +# 207 +sharedMem = 0, cudaStream_t +# 208 +stream = 0) +# 210 +{ +# 211 +return ::cudaLaunchKernel((const void *)func, gridDim, blockDim, args, sharedMem, stream); +# 212 +} +# 263 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 264 +cudaLaunchCooperativeKernel(const T * +# 265 +func, dim3 +# 266 +gridDim, dim3 +# 267 +blockDim, void ** +# 268 +args, size_t +# 269 +sharedMem = 0, cudaStream_t +# 270 +stream = 0) +# 272 +{ +# 273 +return ::cudaLaunchCooperativeKernel((const void *)func, gridDim, blockDim, args, sharedMem, stream); +# 274 +} +# 307 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static inline cudaError_t cudaEventCreate(cudaEvent_t * +# 308 +event, unsigned +# 309 +flags) +# 311 +{ +# 312 +return ::cudaEventCreateWithFlags(event, flags); +# 313 +} +# 372 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static inline cudaError_t cudaMallocHost(void ** +# 373 +ptr, size_t +# 374 +size, unsigned +# 375 +flags) +# 377 +{ +# 378 +return ::cudaHostAlloc(ptr, size, flags); +# 379 +} +# 381 +template< class T> static inline cudaError_t +# 382 +cudaHostAlloc(T ** +# 383 +ptr, size_t +# 384 +size, unsigned +# 385 +flags) +# 387 +{ +# 388 +return ::cudaHostAlloc((void **)((void *)ptr), size, flags); +# 389 +} +# 391 +template< class T> static inline cudaError_t +# 392 +cudaHostGetDevicePointer(T ** +# 393 +pDevice, void * +# 394 +pHost, unsigned +# 395 +flags) +# 397 +{ +# 398 +return ::cudaHostGetDevicePointer((void **)((void *)pDevice), pHost, flags); +# 399 +} +# 501 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 502 +cudaMallocManaged(T ** +# 503 +devPtr, size_t +# 504 +size, unsigned +# 505 +flags = 1) +# 507 +{ +# 508 +return ::cudaMallocManaged((void **)((void *)devPtr), size, flags); +# 509 +} +# 591 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 592 +cudaStreamAttachMemAsync(cudaStream_t +# 593 +stream, T * +# 594 +devPtr, size_t +# 595 +length = 0, unsigned +# 596 +flags = 4) +# 598 +{ +# 599 +return ::cudaStreamAttachMemAsync(stream, (void *)devPtr, length, flags); +# 600 +} +# 602 +template< class T> inline cudaError_t +# 603 +cudaMalloc(T ** +# 604 +devPtr, size_t +# 605 +size) +# 607 +{ +# 608 +return ::cudaMalloc((void **)((void *)devPtr), size); +# 609 +} +# 611 +template< class T> static inline cudaError_t +# 612 +cudaMallocHost(T ** +# 613 +ptr, size_t +# 614 +size, unsigned +# 615 +flags = 0) +# 617 +{ +# 618 +return cudaMallocHost((void **)((void *)ptr), size, flags); +# 619 +} +# 621 +template< class T> static inline cudaError_t +# 622 +cudaMallocPitch(T ** +# 623 +devPtr, size_t * +# 624 +pitch, size_t +# 625 +width, size_t +# 626 +height) +# 628 +{ +# 629 +return ::cudaMallocPitch((void **)((void *)devPtr), pitch, width, height); +# 630 +} +# 641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +static inline cudaError_t cudaMallocAsync(void ** +# 642 +ptr, size_t +# 643 +size, cudaMemPool_t +# 644 +memPool, cudaStream_t +# 645 +stream) +# 647 +{ +# 648 +return ::cudaMallocFromPoolAsync(ptr, size, memPool, stream); +# 649 +} +# 651 +template< class T> static inline cudaError_t +# 652 +cudaMallocAsync(T ** +# 653 +ptr, size_t +# 654 +size, cudaMemPool_t +# 655 +memPool, cudaStream_t +# 656 +stream) +# 658 +{ +# 659 +return ::cudaMallocFromPoolAsync((void **)((void *)ptr), size, memPool, stream); +# 660 +} +# 662 +template< class T> static inline cudaError_t +# 663 +cudaMallocAsync(T ** +# 664 +ptr, size_t +# 665 +size, cudaStream_t +# 666 +stream) +# 668 +{ +# 669 +return ::cudaMallocAsync((void **)((void *)ptr), size, stream); +# 670 +} +# 672 +template< class T> static inline cudaError_t +# 673 +cudaMallocFromPoolAsync(T ** +# 674 +ptr, size_t +# 675 +size, cudaMemPool_t +# 676 +memPool, cudaStream_t +# 677 +stream) +# 679 +{ +# 680 +return ::cudaMallocFromPoolAsync((void **)((void *)ptr), size, memPool, stream); +# 681 +} +# 720 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 721 +cudaMemcpyToSymbol(const T & +# 722 +symbol, const void * +# 723 +src, size_t +# 724 +count, size_t +# 725 +offset = 0, cudaMemcpyKind +# 726 +kind = cudaMemcpyHostToDevice) +# 728 +{ +# 729 +return ::cudaMemcpyToSymbol((const void *)(&symbol), src, count, offset, kind); +# 730 +} +# 774 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 775 +cudaMemcpyToSymbolAsync(const T & +# 776 +symbol, const void * +# 777 +src, size_t +# 778 +count, size_t +# 779 +offset = 0, cudaMemcpyKind +# 780 +kind = cudaMemcpyHostToDevice, cudaStream_t +# 781 +stream = 0) +# 783 +{ +# 784 +return ::cudaMemcpyToSymbolAsync((const void *)(&symbol), src, count, offset, kind, stream); +# 785 +} +# 822 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 823 +cudaMemcpyFromSymbol(void * +# 824 +dst, const T & +# 825 +symbol, size_t +# 826 +count, size_t +# 827 +offset = 0, cudaMemcpyKind +# 828 +kind = cudaMemcpyDeviceToHost) +# 830 +{ +# 831 +return ::cudaMemcpyFromSymbol(dst, (const void *)(&symbol), count, offset, kind); +# 832 +} +# 876 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 877 +cudaMemcpyFromSymbolAsync(void * +# 878 +dst, const T & +# 879 +symbol, size_t +# 880 +count, size_t +# 881 +offset = 0, cudaMemcpyKind +# 882 +kind = cudaMemcpyDeviceToHost, cudaStream_t +# 883 +stream = 0) +# 885 +{ +# 886 +return ::cudaMemcpyFromSymbolAsync(dst, (const void *)(&symbol), count, offset, kind, stream); +# 887 +} +# 945 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 946 +cudaGraphAddMemcpyNodeToSymbol(cudaGraphNode_t * +# 947 +pGraphNode, cudaGraph_t +# 948 +graph, const cudaGraphNode_t * +# 949 +pDependencies, size_t +# 950 +numDependencies, const T & +# 951 +symbol, const void * +# 952 +src, size_t +# 953 +count, size_t +# 954 +offset, cudaMemcpyKind +# 955 +kind) +# 956 +{ +# 957 +return ::cudaGraphAddMemcpyNodeToSymbol(pGraphNode, graph, pDependencies, numDependencies, (const void *)(&symbol), src, count, offset, kind); +# 958 +} +# 1016 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1017 +cudaGraphAddMemcpyNodeFromSymbol(cudaGraphNode_t * +# 1018 +pGraphNode, cudaGraph_t +# 1019 +graph, const cudaGraphNode_t * +# 1020 +pDependencies, size_t +# 1021 +numDependencies, void * +# 1022 +dst, const T & +# 1023 +symbol, size_t +# 1024 +count, size_t +# 1025 +offset, cudaMemcpyKind +# 1026 +kind) +# 1027 +{ +# 1028 +return ::cudaGraphAddMemcpyNodeFromSymbol(pGraphNode, graph, pDependencies, numDependencies, dst, (const void *)(&symbol), count, offset, kind); +# 1029 +} +# 1067 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1068 +cudaGraphMemcpyNodeSetParamsToSymbol(cudaGraphNode_t +# 1069 +node, const T & +# 1070 +symbol, const void * +# 1071 +src, size_t +# 1072 +count, size_t +# 1073 +offset, cudaMemcpyKind +# 1074 +kind) +# 1075 +{ +# 1076 +return ::cudaGraphMemcpyNodeSetParamsToSymbol(node, (const void *)(&symbol), src, count, offset, kind); +# 1077 +} +# 1115 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1116 +cudaGraphMemcpyNodeSetParamsFromSymbol(cudaGraphNode_t +# 1117 +node, void * +# 1118 +dst, const T & +# 1119 +symbol, size_t +# 1120 +count, size_t +# 1121 +offset, cudaMemcpyKind +# 1122 +kind) +# 1123 +{ +# 1124 +return ::cudaGraphMemcpyNodeSetParamsFromSymbol(node, dst, (const void *)(&symbol), count, offset, kind); +# 1125 +} +# 1173 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1174 +cudaGraphExecMemcpyNodeSetParamsToSymbol(cudaGraphExec_t +# 1175 +hGraphExec, cudaGraphNode_t +# 1176 +node, const T & +# 1177 +symbol, const void * +# 1178 +src, size_t +# 1179 +count, size_t +# 1180 +offset, cudaMemcpyKind +# 1181 +kind) +# 1182 +{ +# 1183 +return ::cudaGraphExecMemcpyNodeSetParamsToSymbol(hGraphExec, node, (const void *)(&symbol), src, count, offset, kind); +# 1184 +} +# 1232 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1233 +cudaGraphExecMemcpyNodeSetParamsFromSymbol(cudaGraphExec_t +# 1234 +hGraphExec, cudaGraphNode_t +# 1235 +node, void * +# 1236 +dst, const T & +# 1237 +symbol, size_t +# 1238 +count, size_t +# 1239 +offset, cudaMemcpyKind +# 1240 +kind) +# 1241 +{ +# 1242 +return ::cudaGraphExecMemcpyNodeSetParamsFromSymbol(hGraphExec, node, dst, (const void *)(&symbol), count, offset, kind); +# 1243 +} +# 1271 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1272 +cudaUserObjectCreate(cudaUserObject_t * +# 1273 +object_out, T * +# 1274 +objectToWrap, unsigned +# 1275 +initialRefcount, unsigned +# 1276 +flags) +# 1277 +{ +# 1278 +return ::cudaUserObjectCreate(object_out, objectToWrap, [](void * +# 1281 +vpObj) { delete (reinterpret_cast< T *>(vpObj)); } , initialRefcount, flags); +# 1284 +} +# 1286 +template< class T> static inline cudaError_t +# 1287 +cudaUserObjectCreate(cudaUserObject_t * +# 1288 +object_out, T * +# 1289 +objectToWrap, unsigned +# 1290 +initialRefcount, cudaUserObjectFlags +# 1291 +flags) +# 1292 +{ +# 1293 +return cudaUserObjectCreate(object_out, objectToWrap, initialRefcount, (unsigned)flags); +# 1294 +} +# 1321 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1322 +cudaGetSymbolAddress(void ** +# 1323 +devPtr, const T & +# 1324 +symbol) +# 1326 +{ +# 1327 +return ::cudaGetSymbolAddress(devPtr, (const void *)(&symbol)); +# 1328 +} +# 1353 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1354 +cudaGetSymbolSize(size_t * +# 1355 +size, const T & +# 1356 +symbol) +# 1358 +{ +# 1359 +return ::cudaGetSymbolSize(size, (const void *)(&symbol)); +# 1360 +} +# 1397 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1398 +__attribute((deprecated)) static inline cudaError_t cudaBindTexture(size_t * +# 1399 +offset, const texture< T, dim, readMode> & +# 1400 +tex, const void * +# 1401 +devPtr, const cudaChannelFormatDesc & +# 1402 +desc, size_t +# 1403 +size = ((2147483647) * 2U) + 1U) +# 1405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +{ +# 1406 +return ::cudaBindTexture(offset, &tex, devPtr, &desc, size); +# 1407 +} +# 1443 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1444 +__attribute((deprecated)) static inline cudaError_t cudaBindTexture(size_t * +# 1445 +offset, const texture< T, dim, readMode> & +# 1446 +tex, const void * +# 1447 +devPtr, size_t +# 1448 +size = ((2147483647) * 2U) + 1U) +# 1450 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +{ +# 1451 +return cudaBindTexture(offset, tex, devPtr, (tex.channelDesc), size); +# 1452 +} +# 1500 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1501 +__attribute((deprecated)) static inline cudaError_t cudaBindTexture2D(size_t * +# 1502 +offset, const texture< T, dim, readMode> & +# 1503 +tex, const void * +# 1504 +devPtr, const cudaChannelFormatDesc & +# 1505 +desc, size_t +# 1506 +width, size_t +# 1507 +height, size_t +# 1508 +pitch) +# 1510 +{ +# 1511 +return ::cudaBindTexture2D(offset, &tex, devPtr, &desc, width, height, pitch); +# 1512 +} +# 1559 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1560 +__attribute((deprecated)) static inline cudaError_t cudaBindTexture2D(size_t * +# 1561 +offset, const texture< T, dim, readMode> & +# 1562 +tex, const void * +# 1563 +devPtr, size_t +# 1564 +width, size_t +# 1565 +height, size_t +# 1566 +pitch) +# 1568 +{ +# 1569 +return ::cudaBindTexture2D(offset, &tex, devPtr, &(tex.channelDesc), width, height, pitch); +# 1570 +} +# 1602 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1603 +__attribute((deprecated)) static inline cudaError_t cudaBindTextureToArray(const texture< T, dim, readMode> & +# 1604 +tex, cudaArray_const_t +# 1605 +array, const cudaChannelFormatDesc & +# 1606 +desc) +# 1608 +{ +# 1609 +return ::cudaBindTextureToArray(&tex, array, &desc); +# 1610 +} +# 1641 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1642 +__attribute((deprecated)) static inline cudaError_t cudaBindTextureToArray(const texture< T, dim, readMode> & +# 1643 +tex, cudaArray_const_t +# 1644 +array) +# 1646 +{ +# 1647 +cudaChannelFormatDesc desc; +# 1648 +cudaError_t err = ::cudaGetChannelDesc(&desc, array); +# 1650 +return (err == (cudaSuccess)) ? cudaBindTextureToArray(tex, array, desc) : err; +# 1651 +} +# 1683 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1684 +__attribute((deprecated)) static inline cudaError_t cudaBindTextureToMipmappedArray(const texture< T, dim, readMode> & +# 1685 +tex, cudaMipmappedArray_const_t +# 1686 +mipmappedArray, const cudaChannelFormatDesc & +# 1687 +desc) +# 1689 +{ +# 1690 +return ::cudaBindTextureToMipmappedArray(&tex, mipmappedArray, &desc); +# 1691 +} +# 1722 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1723 +__attribute((deprecated)) static inline cudaError_t cudaBindTextureToMipmappedArray(const texture< T, dim, readMode> & +# 1724 +tex, cudaMipmappedArray_const_t +# 1725 +mipmappedArray) +# 1727 +{ +# 1728 +cudaChannelFormatDesc desc; +# 1729 +cudaArray_t levelArray; +# 1730 +cudaError_t err = ::cudaGetMipmappedArrayLevel(&levelArray, mipmappedArray, 0); +# 1732 +if (err != (cudaSuccess)) { +# 1733 +return err; +# 1734 +} +# 1735 +err = ::cudaGetChannelDesc(&desc, levelArray); +# 1737 +return (err == (cudaSuccess)) ? cudaBindTextureToMipmappedArray(tex, mipmappedArray, desc) : err; +# 1738 +} +# 1765 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1766 +__attribute((deprecated)) static inline cudaError_t cudaUnbindTexture(const texture< T, dim, readMode> & +# 1767 +tex) +# 1769 +{ +# 1770 +return ::cudaUnbindTexture(&tex); +# 1771 +} +# 1801 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim, cudaTextureReadMode readMode> +# 1802 +__attribute((deprecated)) static inline cudaError_t cudaGetTextureAlignmentOffset(size_t * +# 1803 +offset, const texture< T, dim, readMode> & +# 1804 +tex) +# 1806 +{ +# 1807 +return ::cudaGetTextureAlignmentOffset(offset, &tex); +# 1808 +} +# 1853 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 1854 +cudaFuncSetCacheConfig(T * +# 1855 +func, cudaFuncCache +# 1856 +cacheConfig) +# 1858 +{ +# 1859 +return ::cudaFuncSetCacheConfig((const void *)func, cacheConfig); +# 1860 +} +# 1862 +template< class T> static inline cudaError_t +# 1863 +cudaFuncSetSharedMemConfig(T * +# 1864 +func, cudaSharedMemConfig +# 1865 +config) +# 1867 +{ +# 1868 +return ::cudaFuncSetSharedMemConfig((const void *)func, config); +# 1869 +} +# 1901 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> inline cudaError_t +# 1902 +cudaOccupancyMaxActiveBlocksPerMultiprocessor(int * +# 1903 +numBlocks, T +# 1904 +func, int +# 1905 +blockSize, size_t +# 1906 +dynamicSMemSize) +# 1907 +{ +# 1908 +return ::cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(numBlocks, (const void *)func, blockSize, dynamicSMemSize, 0); +# 1909 +} +# 1953 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> inline cudaError_t +# 1954 +cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int * +# 1955 +numBlocks, T +# 1956 +func, int +# 1957 +blockSize, size_t +# 1958 +dynamicSMemSize, unsigned +# 1959 +flags) +# 1960 +{ +# 1961 +return ::cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(numBlocks, (const void *)func, blockSize, dynamicSMemSize, flags); +# 1962 +} +# 1967 +class __cudaOccupancyB2DHelper { +# 1968 +size_t n; +# 1970 +public: __cudaOccupancyB2DHelper(size_t n_) : n(n_) { } +# 1971 +size_t operator()(int) +# 1972 +{ +# 1973 +return n; +# 1974 +} +# 1975 +}; +# 2023 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class UnaryFunction, class T> static inline cudaError_t +# 2024 +cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(int * +# 2025 +minGridSize, int * +# 2026 +blockSize, T +# 2027 +func, UnaryFunction +# 2028 +blockSizeToDynamicSMemSize, int +# 2029 +blockSizeLimit = 0, unsigned +# 2030 +flags = 0) +# 2031 +{ +# 2032 +cudaError_t status; +# 2035 +int device; +# 2036 +cudaFuncAttributes attr; +# 2039 +int maxThreadsPerMultiProcessor; +# 2040 +int warpSize; +# 2041 +int devMaxThreadsPerBlock; +# 2042 +int multiProcessorCount; +# 2043 +int funcMaxThreadsPerBlock; +# 2044 +int occupancyLimit; +# 2045 +int granularity; +# 2048 +int maxBlockSize = 0; +# 2049 +int numBlocks = 0; +# 2050 +int maxOccupancy = 0; +# 2053 +int blockSizeToTryAligned; +# 2054 +int blockSizeToTry; +# 2055 +int blockSizeLimitAligned; +# 2056 +int occupancyInBlocks; +# 2057 +int occupancyInThreads; +# 2058 +size_t dynamicSMemSize; +# 2064 +if (((!minGridSize) || (!blockSize)) || (!func)) { +# 2065 +return cudaErrorInvalidValue; +# 2066 +} +# 2072 +status = ::cudaGetDevice(&device); +# 2073 +if (status != (cudaSuccess)) { +# 2074 +return status; +# 2075 +} +# 2077 +status = cudaDeviceGetAttribute(&maxThreadsPerMultiProcessor, cudaDevAttrMaxThreadsPerMultiProcessor, device); +# 2081 +if (status != (cudaSuccess)) { +# 2082 +return status; +# 2083 +} +# 2085 +status = cudaDeviceGetAttribute(&warpSize, cudaDevAttrWarpSize, device); +# 2089 +if (status != (cudaSuccess)) { +# 2090 +return status; +# 2091 +} +# 2093 +status = cudaDeviceGetAttribute(&devMaxThreadsPerBlock, cudaDevAttrMaxThreadsPerBlock, device); +# 2097 +if (status != (cudaSuccess)) { +# 2098 +return status; +# 2099 +} +# 2101 +status = cudaDeviceGetAttribute(&multiProcessorCount, cudaDevAttrMultiProcessorCount, device); +# 2105 +if (status != (cudaSuccess)) { +# 2106 +return status; +# 2107 +} +# 2109 +status = cudaFuncGetAttributes(&attr, func); +# 2110 +if (status != (cudaSuccess)) { +# 2111 +return status; +# 2112 +} +# 2114 +funcMaxThreadsPerBlock = (attr.maxThreadsPerBlock); +# 2120 +occupancyLimit = maxThreadsPerMultiProcessor; +# 2121 +granularity = warpSize; +# 2123 +if (blockSizeLimit == 0) { +# 2124 +blockSizeLimit = devMaxThreadsPerBlock; +# 2125 +} +# 2127 +if (devMaxThreadsPerBlock < blockSizeLimit) { +# 2128 +blockSizeLimit = devMaxThreadsPerBlock; +# 2129 +} +# 2131 +if (funcMaxThreadsPerBlock < blockSizeLimit) { +# 2132 +blockSizeLimit = funcMaxThreadsPerBlock; +# 2133 +} +# 2135 +blockSizeLimitAligned = (((blockSizeLimit + (granularity - 1)) / granularity) * granularity); +# 2137 +for (blockSizeToTryAligned = blockSizeLimitAligned; blockSizeToTryAligned > 0; blockSizeToTryAligned -= granularity) { +# 2141 +if (blockSizeLimit < blockSizeToTryAligned) { +# 2142 +blockSizeToTry = blockSizeLimit; +# 2143 +} else { +# 2144 +blockSizeToTry = blockSizeToTryAligned; +# 2145 +} +# 2147 +dynamicSMemSize = blockSizeToDynamicSMemSize(blockSizeToTry); +# 2149 +status = cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(&occupancyInBlocks, func, blockSizeToTry, dynamicSMemSize, flags); +# 2156 +if (status != (cudaSuccess)) { +# 2157 +return status; +# 2158 +} +# 2160 +occupancyInThreads = (blockSizeToTry * occupancyInBlocks); +# 2162 +if (occupancyInThreads > maxOccupancy) { +# 2163 +maxBlockSize = blockSizeToTry; +# 2164 +numBlocks = occupancyInBlocks; +# 2165 +maxOccupancy = occupancyInThreads; +# 2166 +} +# 2170 +if (occupancyLimit == maxOccupancy) { +# 2171 +break; +# 2172 +} +# 2173 +} +# 2181 +(*minGridSize) = (numBlocks * multiProcessorCount); +# 2182 +(*blockSize) = maxBlockSize; +# 2184 +return status; +# 2185 +} +# 2219 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class UnaryFunction, class T> static inline cudaError_t +# 2220 +cudaOccupancyMaxPotentialBlockSizeVariableSMem(int * +# 2221 +minGridSize, int * +# 2222 +blockSize, T +# 2223 +func, UnaryFunction +# 2224 +blockSizeToDynamicSMemSize, int +# 2225 +blockSizeLimit = 0) +# 2226 +{ +# 2227 +return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, blockSizeToDynamicSMemSize, blockSizeLimit, 0); +# 2228 +} +# 2265 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 2266 +cudaOccupancyMaxPotentialBlockSize(int * +# 2267 +minGridSize, int * +# 2268 +blockSize, T +# 2269 +func, size_t +# 2270 +dynamicSMemSize = 0, int +# 2271 +blockSizeLimit = 0) +# 2272 +{ +# 2273 +return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, ((__cudaOccupancyB2DHelper)(dynamicSMemSize)), blockSizeLimit, 0); +# 2274 +} +# 2303 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 2304 +cudaOccupancyAvailableDynamicSMemPerBlock(size_t * +# 2305 +dynamicSmemSize, T +# 2306 +func, int +# 2307 +numBlocks, int +# 2308 +blockSize) +# 2309 +{ +# 2310 +return ::cudaOccupancyAvailableDynamicSMemPerBlock(dynamicSmemSize, (const void *)func, numBlocks, blockSize); +# 2311 +} +# 2362 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 2363 +cudaOccupancyMaxPotentialBlockSizeWithFlags(int * +# 2364 +minGridSize, int * +# 2365 +blockSize, T +# 2366 +func, size_t +# 2367 +dynamicSMemSize = 0, int +# 2368 +blockSizeLimit = 0, unsigned +# 2369 +flags = 0) +# 2370 +{ +# 2371 +return cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags(minGridSize, blockSize, func, ((__cudaOccupancyB2DHelper)(dynamicSMemSize)), blockSizeLimit, flags); +# 2372 +} +# 2405 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> inline cudaError_t +# 2406 +cudaFuncGetAttributes(cudaFuncAttributes * +# 2407 +attr, T * +# 2408 +entry) +# 2410 +{ +# 2411 +return ::cudaFuncGetAttributes(attr, (const void *)entry); +# 2412 +} +# 2469 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T> static inline cudaError_t +# 2470 +cudaFuncSetAttribute(T * +# 2471 +entry, cudaFuncAttribute +# 2472 +attr, int +# 2473 +value) +# 2475 +{ +# 2476 +return ::cudaFuncSetAttribute((const void *)entry, attr, value); +# 2477 +} +# 2501 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim> +# 2502 +__attribute((deprecated)) static inline cudaError_t cudaBindSurfaceToArray(const surface< T, dim> & +# 2503 +surf, cudaArray_const_t +# 2504 +array, const cudaChannelFormatDesc & +# 2505 +desc) +# 2507 +{ +# 2508 +return ::cudaBindSurfaceToArray(&surf, array, &desc); +# 2509 +} +# 2532 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +template< class T, int dim> +# 2533 +__attribute((deprecated)) static inline cudaError_t cudaBindSurfaceToArray(const surface< T, dim> & +# 2534 +surf, cudaArray_const_t +# 2535 +array) +# 2537 +{ +# 2538 +cudaChannelFormatDesc desc; +# 2539 +cudaError_t err = ::cudaGetChannelDesc(&desc, array); +# 2541 +return (err == (cudaSuccess)) ? cudaBindSurfaceToArray(surf, array, desc) : err; +# 2542 +} +# 2553 "/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include/cuda_runtime.h" +#pragma GCC diagnostic pop +# 64 "CMakeCUDACompilerId.cu" +const char *info_compiler = ("INFO:compiler[NVIDIA]"); +# 66 +const char *info_simulate = ("INFO:simulate[GNU]"); +# 369 "CMakeCUDACompilerId.cu" +const char info_version[] = {'I', 'N', 'F', 'O', ':', 'c', 'o', 'm', 'p', 'i', 'l', 'e', 'r', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '[', (('0') + ((11 / 10000000) % 10)), (('0') + ((11 / 1000000) % 10)), (('0') + ((11 / 100000) % 10)), (('0') + ((11 / 10000) % 10)), (('0') + ((11 / 1000) % 10)), (('0') + ((11 / 100) % 10)), (('0') + ((11 / 10) % 10)), (('0') + (11 % 10)), '.', (('0') + ((7 / 10000000) % 10)), (('0') + ((7 / 1000000) % 10)), (('0') + ((7 / 100000) % 10)), (('0') + ((7 / 10000) % 10)), (('0') + ((7 / 1000) % 10)), (('0') + ((7 / 100) % 10)), (('0') + ((7 / 10) % 10)), (('0') + (7 % 10)), '.', (('0') + ((99 / 10000000) % 10)), (('0') + ((99 / 1000000) % 10)), (('0') + ((99 / 100000) % 10)), (('0') + ((99 / 10000) % 10)), (('0') + ((99 / 1000) % 10)), (('0') + ((99 / 100) % 10)), (('0') + ((99 / 10) % 10)), (('0') + (99 % 10)), ']', '\000'}; +# 398 "CMakeCUDACompilerId.cu" +const char info_simulate_version[] = {'I', 'N', 'F', 'O', ':', 's', 'i', 'm', 'u', 'l', 'a', 't', 'e', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '[', (('0') + ((9 / 10000000) % 10)), (('0') + ((9 / 1000000) % 10)), (('0') + ((9 / 100000) % 10)), (('0') + ((9 / 10000) % 10)), (('0') + ((9 / 1000) % 10)), (('0') + ((9 / 100) % 10)), (('0') + ((9 / 10) % 10)), (('0') + (9 % 10)), '.', (('0') + ((3 / 10000000) % 10)), (('0') + ((3 / 1000000) % 10)), (('0') + ((3 / 100000) % 10)), (('0') + ((3 / 10000) % 10)), (('0') + ((3 / 1000) % 10)), (('0') + ((3 / 100) % 10)), (('0') + ((3 / 10) % 10)), (('0') + (3 % 10)), ']', '\000'}; +# 418 +const char *info_platform = ("INFO:platform[Linux]"); +# 419 +const char *info_arch = ("INFO:arch[]"); +# 423 +const char *info_language_standard_default = ("INFO:standard_default[14]"); +# 439 +const char *info_language_extensions_default = ("INFO:extensions_default[ON]"); +# 450 +int main(int argc, char *argv[]) +# 451 +{ +# 452 +int require = 0; +# 453 +require += (info_compiler[argc]); +# 454 +require += (info_platform[argc]); +# 456 +require += (info_version[argc]); +# 459 +require += (info_simulate[argc]); +# 462 +require += (info_simulate_version[argc]); +# 464 +require += (info_language_standard_default[argc]); +# 465 +require += (info_language_extensions_default[argc]); +# 466 +(void)argv; +# 467 +return require; +# 468 +} + +# 1 "CMakeCUDACompilerId.cudafe1.stub.c" +#define _NV_ANON_NAMESPACE _GLOBAL__N__64424f29_22_CMakeCUDACompilerId_cu_bd57c623 +#ifdef _NV_ANON_NAMESPACE +#endif +# 1 "CMakeCUDACompilerId.cudafe1.stub.c" +#include "CMakeCUDACompilerId.cudafe1.stub.c" +# 1 "CMakeCUDACompilerId.cudafe1.stub.c" +#undef _NV_ANON_NAMESPACE diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.gpu b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.gpu new file mode 100644 index 0000000..bb78d7f --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.gpu @@ -0,0 +1,7 @@ +typedef char __nv_bool; +# 209 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h" 3 +typedef unsigned long size_t; +#include "crt/device_runtime.h" +# 254 "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h" 3 +typedef unsigned long _ZSt6size_t; +#include "common_functions.h" diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.stub.c b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.stub.c new file mode 100644 index 0000000..2ebe7e6 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.cudafe1.stub.c @@ -0,0 +1,15 @@ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wcast-qual" +#define __NV_CUBIN_HANDLE_STORAGE__ static +#if !defined(__CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__) +#define __CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__ +#endif +#include "crt/host_runtime.h" +#include "CMakeCUDACompilerId.fatbin.c" +static void __nv_cudaEntityRegisterCallback(void **); +static void __sti____cudaRegisterAll(void) __attribute__((__constructor__)); +static void __nv_cudaEntityRegisterCallback(void **__T0){__nv_dummy_param_ref(__T0);__nv_save_fatbinhandle_for_managed_rt(__T0);} +static void __sti____cudaRegisterAll(void){__cudaRegisterBinary(__nv_cudaEntityRegisterCallback);} + +#pragma GCC diagnostic pop diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.fatbin b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.fatbin new file mode 100644 index 0000000000000000000000000000000000000000..4c4e2dd1dec266ccd714151f39834326574c328d GIT binary patch literal 1000 zcmb`Gu};H442FF!RZCzfDnrM>#DI>fgtlWCKu9pKFjs*FT8XA87b;*uycPp9kI<19 zKw@OXIs2+WD=~nh>b;W+t+0c3`Y(IUA7OLI4moq|}cc{`g_R#~bFYr=-m7j6lg!mcH)gpmETM^dw2 z0s9rOUjh3Suph;bz}Bzrf}l?j*9-PBf8a< zzBVzWvqHzW|H>z^5U$@zbx*;^hMvT!p|9QV=#HneD7}g^-;8>DEl)@Nei|FoGsB12 KZwDR)nZE#!rBHPM literal 0 HcmV?d00001 diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.fatbin.c b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.fatbin.c new file mode 100644 index 0000000..8a68183 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.fatbin.c @@ -0,0 +1,57 @@ +#ifndef __SKIP_INTERNAL_FATBINARY_HEADERS +#include "fatbinary_section.h" +#endif +#define __CUDAFATBINSECTION ".nvFatBinSegment" +#define __CUDAFATBINDATASECTION ".nv_fatbin" +asm( +".section .nv_fatbin, \"a\"\n" +".align 8\n" +"fatbinData:\n" +".quad 0x00100001ba55ed50,0x00000000000003d8,0x0000004001010002,0x0000000000000318\n" +".quad 0x0000000000000000,0x0000003400010007,0x0000000000000000,0x0000000000000011\n" +".quad 0x0000000000000000,0x0000000000000000,0x33010102464c457f,0x0000000000000007\n" +".quad 0x0000007500be0002,0x0000000000000000,0x0000000000000000,0x00000000000001d8\n" +".quad 0x0000004000340534,0x0001000500400000,0x7472747368732e00,0x747274732e006261\n" +".quad 0x746d79732e006261,0x746d79732e006261,0x78646e68735f6261,0x666e692e766e2e00\n" +".quad 0x65722e766e2e006f,0x6e6f697463612e6c,0x72747368732e0000,0x7274732e00626174\n" +".quad 0x6d79732e00626174,0x6d79732e00626174,0x646e68735f626174,0x6e692e766e2e0078\n" +".quad 0x722e766e2e006f66,0x6f697463612e6c65,0x000000000000006e,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000000,0x0004000300000032,0x0000000000000000\n" +".quad 0x0000000000000000,0x000000000000004b,0x222f0a1008020200,0x0000000008000000\n" +".quad 0x0000000008080000,0x0000000008100000,0x0000000008180000,0x0000000008200000\n" +".quad 0x0000000008280000,0x0000000008300000,0x0000000008380000,0x0000000008000001\n" +".quad 0x0000000008080001,0x0000000008100001,0x0000000008180001,0x0000000008200001\n" +".quad 0x0000000008280001,0x0000000008300001,0x0000000008380001,0x0000000008000002\n" +".quad 0x0000000008080002,0x0000000008100002,0x0000000008180002,0x0000000008200002\n" +".quad 0x0000000008280002,0x0000000008300002,0x0000000008380002,0x0000002c14000000\n" +".quad 0x000000000c000009,0x0000000000000000,0x0000000000000000,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000300000001,0x0000000000000000,0x0000000000000000\n" +".quad 0x0000000000000040,0x0000000000000041,0x0000000000000000,0x0000000000000001\n" +".quad 0x0000000000000000,0x000000030000000b,0x0000000000000000,0x0000000000000000\n" +".quad 0x0000000000000081,0x0000000000000041,0x0000000000000000,0x0000000000000001\n" +".quad 0x0000000000000000,0x0000000200000013,0x0000000000000000,0x0000000000000000\n" +".quad 0x00000000000000c8,0x0000000000000030,0x0000000200000002,0x0000000000000008\n" +".quad 0x0000000000000018,0x7000000b00000032,0x0000000000000000,0x0000000000000000\n" +".quad 0x00000000000000f8,0x00000000000000e0,0x0000000000000000,0x0000000000000008\n" +".quad 0x0000000000000008,0x0000004801010001,0x0000000000000038,0x0000004000000036\n" +".quad 0x0000003400070007,0x0000000000000000,0x0000000000002011,0x0000000000000000\n" +".quad 0x0000000000000038,0x0000000000000000,0x762e21f000010a13,0x37206e6f69737265\n" +".quad 0x677261742e0a372e,0x32355f6d73207465,0x7365726464612e0a,0x3620657a69735f73\n" +".quad 0x0000000a0a0a0a34\n" +".text\n"); +#ifdef __cplusplus +extern "C" { +#endif +extern const unsigned long long fatbinData[125]; +#ifdef __cplusplus +} +#endif +#ifdef __cplusplus +extern "C" { +#endif +static const __fatBinC_Wrapper_t __fatDeviceText __attribute__ ((aligned (8))) __attribute__ ((section (__CUDAFATBINSECTION)))= + { 0x466243b1, 1, fatbinData, 0 }; +#ifdef __cplusplus +} +#endif diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.module_id b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.module_id new file mode 100644 index 0000000..c2a29f3 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.module_id @@ -0,0 +1 @@ +_64424f29_22_CMakeCUDACompilerId_cu_bd57c623 \ No newline at end of file diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.o b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/CMakeCUDACompilerId.o new file mode 100644 index 0000000000000000000000000000000000000000..bf14c579001e486eb1b0f39ae1ce637eab55f72b GIT binary patch literal 7776 zcmds5Uu+yl8K2#=6XT}gk{Z=Cfo{@2I3+B1j+@w3iqE;TV<(PdrEwMEp!NE0Z7;c7 zTX%crTx^oQAS&_DN_ntUP#=&&B@jxbK2#{GiqwZneL~_P4|xa@4~_s4M1>4Q3g0*L zeRt#W9RwK(iLrd&%&y#l;Ny+=cOO{;KdM9Ry%ui?MC8_wL@*!CcxfCL&nVQRzJMA z{&imDj(g;vv5ArMFXb0YOJOl6Pfxr$mKz)T7HCVn5|*k(KMtl(PfQ`mILmv>LAeqx zM$;+T(rH(9QYWZ0FhFWs?HPKh0oFUl;!1uAoX;(mOVi_FRIN##jLR?Q7p9e{iZk}3 zf?qCpg<#IF7USu39~+YVpcV%a23o00oS#q8bONxjNKRHz9zT6V)|Zc%p1LDBW|F|6c&!GH>^#cwa*3DLHV zdzKN~?nrii{V)tW6x2a9Nwk}&L$rrzifF&2kO`tnAJ&M*O5YMn-x5mS5=!3^O5Y}Z zTPS^-^lhQ^ZPK?%-zI&V^da`HqwoWd=sjv4JNw1uHcCnw%#hh3qD)X;Z;!#Cnf~h} z^zZcXrUE(H);=L5MHFT5UnU!9H{rPM5W^A;>jVyc+3pf$!um|%nq!Ruv!4Wx1I@ty zZur}>uN(li#_|k3(P@eMhg>>fofGbfPB-?;^Fi!XO5TgTovvRfl!HpetAwuw&hfrZ zXrTOFc6P+fDch9vbT<2v(*pB!#HzM=0)6KBc)I`JsjAw)isP zTt`gvfZH=HMY$xa39*ZM4FZ>Eu)j-iont*?`w9Fbz92_%nm zO;C)Jv$d6-5RY#KV6-3n@qX2r-GJ}Y>X74qo^T#B?IWCRF@B10&I{w?ggfMv@hgP) z82AqX-w%1?x{+rD$h-wO`y>@fe%1oN)dK%b3;a(laFIRdUkS2PxuGmwcE<{CzFP3- zg0!1oS`ywj$9sD{FIx7(D2#)GSMno&9%wm6-Z90S^W)htT7c_jG4SAOYD%4u7ApQS za9fK`PA;R(bT3|P_%bXbNK1t8-5N_pC#@H%rP7MG>Xh1kP_2iGpClJY!E#E2hft1!7yIXTHWt~gUsIhYSCaZo-LMt*r^Dh`Ws0+bX? zn3f3dJ7K&)esHEL5jj8hIR-#-!E%@nF2c1raqD->Z5%fzfL&HJJd(APJNVjsE>rt zVU)+%k&o>o`K!h{eur?Bf13J8?ouE1b-WGEeQa!hK@CL*;V6&x8GlxjKTNVndNg?* zAJ^oc(d7C3MEg3<&u26L>tx5w|Iao1xQ9pbM-{FSKw-3Y!0`7S)@V&Tee z0k0VDY^4I@MLCd{iu#QQKOxbzj5MNU^)!7Ym@fqp+mZJfzg+fLgbP;##fcW+#7m300YD_Itcwu`ha(dUPW<; zez;z^{=Q1M;YMs|`vOGjjrAG8`fBEX@<}D}CJCZ{G|BqxKTVkFzndo7L;6fupU3!} z1?Pn|t~b_ypo7pi^}hjFQ+>*t`G#idpKGDd3(9${hk?$thF_x*GUvZRud19URx$lw z0!Fj^-=+MsKIR`yvOeP#!0_$V^e^xLg~sw~)EF}kA7q>Q-)!O^-;P<2{a*zP=a0`P zy>*a(^GxIPG5rB3abMSeiu831`=;!V2{Y^GAnAW*7@)GOqwCOXmj5J8@LiI`{9`Sd z^T&8h->8zLPYL&FVK5JPk2m#kO}DKbVEk#}uZD4R{=6?yMQNL535t}6iUK(iq@XkfH1H2mAVG;loG3O3D#VXb^9huE1|@sm zab(4jDBvXD%+BpQo$p>RZ?072Y#Tll?|7uI%BOhMZ}yQCHbD~>#@Qsxm-+D4T&XWJ zuL~VylXUcqIDLwz>HWMg%ke`zyvwKa^dB~;9<%08Eooq@mS2~NYSiBC9$6WA6j9sM z4)u_FOzlz63$>e|Ixlcu;JmlbHpu;@8yPaXdawXq%U#rAT H$(Q;AMS(kC literal 0 HcmV?d00001 diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin new file mode 100644 index 0000000000000000000000000000000000000000..6883861ec3de05155a0ef5eaebc71128372565b2 GIT binary patch literal 1040 zcmcIjyH3ME5Zv1k5*|em6e$rE1u_UyP`Uv{0wEeo1SSL$DcF`{5UKbQeuM(?Df|GR zz+>-rE}Tdt3d9ySGkZJt^7{Dg0c$E>7PZBguKOtZ2FMZ?~(EXw3Un8(qLYKLdTUV3>?QF<5k)2qypPBIu= z7fIf8Dlf7!D@S?PsiHfGl1|yr(tlnYH=7RIlCJni4oZ$(z8Yk{>8FHMAHa9P13%4N zZ_ID5iL7g?4r~CMz*XQna0|HWP+lCUe(42h^&3*ZA@v(lzajO@XLR*U>Sy?w)X(rU z{0u+CFK1ubkYSE!QSb4$QSKw}JQ*=kr$44_eHaTOruiRH^qYTK>d@NZvSeG^Mq9zv s*nQmN2{w_peIlhf literal 0 HcmV?d00001 diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin.c b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin.c new file mode 100644 index 0000000..9afaf28 --- /dev/null +++ b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.fatbin.c @@ -0,0 +1,58 @@ +#ifndef __SKIP_INTERNAL_FATBINARY_HEADERS +#include "fatbinary_section.h" +#endif +#define __CUDAFATBINSECTION ".nvFatBinSegment" +#define __CUDAFATBINDATASECTION ".nv_fatbin" +asm( +".section .nv_fatbin, \"a\"\n" +".align 8\n" +"fatbinData:\n" +".quad 0x00100001ba55ed50,0x0000000000000400,0x0000004001010002,0x00000000000003c0\n" +".quad 0x0000000000000000,0x0000003400010007,0x0000000000000000,0x0000000000000011\n" +".quad 0x0000000000000000,0x0000000000000000,0x33010102464c457f,0x0000000000000007\n" +".quad 0x0000007500be0002,0x0000000000000000,0x0000000000000000,0x0000000000000240\n" +".quad 0x0000004000340534,0x0001000600400000,0x7472747368732e00,0x747274732e006261\n" +".quad 0x746d79732e006261,0x746d79732e006261,0x78646e68735f6261,0x666e692e766e2e00\n" +".quad 0x61632e766e2e006f,0x0068706172676c6c,0x746f72702e766e2e,0x6e2e00657079746f\n" +".quad 0x63612e6c65722e76,0x732e00006e6f6974,0x0062617472747368,0x006261747274732e\n" +".quad 0x006261746d79732e,0x5f6261746d79732e,0x6e2e0078646e6873,0x2e006f666e692e76\n" +".quad 0x676c6c61632e766e,0x766e2e0068706172,0x79746f746f72702e,0x722e766e2e006570\n" +".quad 0x6f697463612e6c65,0x000000000000006e,0x0000000000000000,0x0000000000000000\n" +".quad 0x0000000000000000,0x0004000300000032,0x0000000000000000,0x0000000000000000\n" +".quad 0x000500030000004e,0x0000000000000000,0x0000000000000000,0xffffffff00000000\n" +".quad 0xfffffffe00000000,0xfffffffd00000000,0x000000000000004b,0x222f0a1008020200\n" +".quad 0x0000000008000000,0x0000000008080000,0x0000000008100000,0x0000000008180000\n" +".quad 0x0000000008200000,0x0000000008280000,0x0000000008300000,0x0000000008380000\n" +".quad 0x0000000008000001,0x0000000008080001,0x0000000008100001,0x0000000008180001\n" +".quad 0x0000000008200001,0x0000000008280001,0x0000000008300001,0x0000000008380001\n" +".quad 0x0000000008000002,0x0000000008080002,0x0000000008100002,0x0000000008180002\n" +".quad 0x0000000008200002,0x0000000008280002,0x0000000008300002,0x0000000008380002\n" +".quad 0x0000002c14000000,0x000000000c000009,0x0000000000000000,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000000,0x0000000300000001,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000040,0x000000000000005d,0x0000000000000000\n" +".quad 0x0000000000000001,0x0000000000000000,0x000000030000000b,0x0000000000000000\n" +".quad 0x0000000000000000,0x000000000000009d,0x000000000000005d,0x0000000000000000\n" +".quad 0x0000000000000001,0x0000000000000000,0x0000000200000013,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000100,0x0000000000000048,0x0000000300000002\n" +".quad 0x0000000000000008,0x0000000000000018,0x7000000100000032,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000148,0x0000000000000018,0x0000000000000003\n" +".quad 0x0000000000000004,0x0000000000000008,0x7000000b0000004e,0x0000000000000000\n" +".quad 0x0000000000000000,0x0000000000000160,0x00000000000000e0,0x0000000000000000\n" +".quad 0x0000000000000008, 0x0000000000000008\n" +".text\n"); +#ifdef __cplusplus +extern "C" { +#endif +extern const unsigned long long fatbinData[130]; +#ifdef __cplusplus +} +#endif +#ifdef __cplusplus +extern "C" { +#endif +static const __fatBinC_Wrapper_t __fatDeviceText __attribute__ ((aligned (8))) __attribute__ ((section (__CUDAFATBINSECTION)))= + { 0x466243b1, 2, fatbinData, (void**)__cudaPrelinkedFatbins }; +#ifdef __cplusplus +} +#endif diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.o b/release/CMakeFiles/3.27.7/CompilerIdCUDA/tmp/a_dlink.o new file mode 100644 index 0000000000000000000000000000000000000000..3c17a6e597dacc745198dcf13c3025374f227079 GIT binary patch literal 3240 zcmcImTW=dx5T3J6TlemAkt&LWDFUSuEN&X4vGPwE1XPkF|3HR}o=;{o|KYfzRZ!_oDB0ajrIMGoukIdL1*yiW`TKaAIJ3|Gc z370t_W6Es)kQ?pk2oGu6gU)!iZ$5POymUmsfWD^HH(il*fY=*65rDKhH)NZf#qHfcA-Cif{q+8wCdcC+EM)kDSN&e^L zZbApVrx?#^k-Zo!dX5fx$ey{&0`G6p&sg8o<{-!yj=g)HUD=s=(FM_GMHfX+iY|$s zv6?F`+VOcWi0}A@9N&=R8*+R@j?c?z;{$U1K==VUejxln_<`^P;q&-kdYfNIiB9O$ z{)@)h&1_wpt}IDE6|D;Kz8q&~9RDi``ZxZI94A}bPfL2D7X(EN`mx1heO7Sn6CP7n z+@V^KfohzNQI72}5B3w!VITj#@P8U+bcXh?`rArve(d;fR4P}BlQ(WHUnpJgE@2VgrQd%(J_96*7;MVGjpGRZRSqCw!rNN30fxTce~%SF*z+>rXe?W zrBGL`${qphYCK%$`zGUo7Kd#+X4YkX5U+8n8Rq=^&+8{>7=r`N(P5|&S!K_7xYi6o zIh=+ulA~i|P{jMAb0Pfk8Lp2{`r-hb+O1@bZ`_RBE=xST9*Fq^r3TCw_iltu`<_+GWj$n|)$ zRgdq+gOtL%w=3bk%NAs zm3_;zfolwKLISdhfAm<*^zWjaXl>zQ}nHU)NJP+Q0f2*+9;b zHASOzRPZ;Ghr@)-@q^H8{{^{9be@QXWc#0GY+U_{5{Uf_LH)2s%GbPi7(@RW$EKA@ z>Hh@#UVoQ>@YKU=?9;rsuVNRTb(nqXx#da@)F)p=t6IK$cb yV?5cuk)|vCKb8TXWDNI9mX8}byLJpwUiR;oa6HM*AOFka_)Y2PfyafJ<^Kb6IRkw~??`!`_e*pC+_KhA3{b#@05ymMm~~ zueIl8lNC2l6c>;2w74yOGEVdSu1>4WS5;lw($1=huj)x2r(-)Ui+^6cy}eF;Ae{wT z?DWrlzt`!z#;1hi2ly^LbqyEHQGa!BTe8U46oGwk0B(Uh;68ZdDJKr9Z%BPZ>Kjtu zkotzyH>AG&joxRxpW!onhR^UBKEs!9-`thQ3emdm<8M#dkDPNi60|P9{p9A`u_nb& z{tJeF^EYG;SG&C|xvTABr0_HDJ^t{71N7ZJk search starts here: + /sw/summit/cuda/11.7.1/include + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include + /usr/lib/gcc/ppc64le-redhat-linux/8/include + /usr/local/include + /usr/include + End of search list. + GNU C17 (GCC) version 8.5.0 20210514 (Red Hat 8.5.0-10) (ppc64le-redhat-linux) + compiled by GNU C version 8.5.0 20210514 (Red Hat 8.5.0-10), GMP version 6.1.2, MPFR version 3.1.6-p2, MPC version 1.1.0, isl version isl-0.16.1-GMP + + GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 + Compiler executable checksum: b77697c30dd6bb94a36a8985a10a46a8 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=power8' '-mcpu=power8' + as -v -a64 -mpower8 -many -mlittle -o CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o /tmp/ccXwj3Fz.s + GNU assembler version 2.30 (ppc64le-redhat-linux) using BFD version version 2.30-113.el8 + COMPILER_PATH=/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/:/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/ + LIBRARY_PATH=/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=power8' '-mcpu=power8' + Linking C executable cmTC_9452e + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9452e.dir/link.txt --verbose=1 + /usr/bin/cc -v CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o -o cmTC_9452e + Using built-in specs. + COLLECT_GCC=/usr/bin/cc + COLLECT_LTO_WRAPPER=/usr/libexec/gcc/ppc64le-redhat-linux/8/lto-wrapper + OFFLOAD_TARGET_NAMES=nvptx-none + OFFLOAD_TARGET_DEFAULT=1 + Target: ppc64le-redhat-linux + Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-targets=powerpcle-linux --disable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-secureplt --with-long-double-128 --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 --build=ppc64le-redhat-linux + Thread model: posix + gcc version 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC) + COMPILER_PATH=/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/:/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/ + LIBRARY_PATH=/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_9452e' '-mtune=power8' '-mcpu=power8' + /usr/libexec/gcc/ppc64le-redhat-linux/8/collect2 -plugin /usr/libexec/gcc/ppc64le-redhat-linux/8/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/ppc64le-redhat-linux/8/lto-wrapper -plugin-opt=-fresolution=/tmp/ccH1cgBT.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -V -m elf64lppc -dynamic-linker /lib64/ld64.so.2 -o cmTC_9452e /usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crt1.o /usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crti.o /usr/lib/gcc/ppc64le-redhat-linux/8/crtbegin.o -L/usr/lib/gcc/ppc64le-redhat-linux/8 -L/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib -L/usr/lib/gcc/ppc64le-redhat-linux/8/../../.. CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/ppc64le-redhat-linux/8/crtend.o /usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_9452e' '-mtune=power8' '-mcpu=power8' + gmake[1]: Leaving directory '/autofs/nccs-svm1_home1/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-a4su1y' + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompilerABI.cmake:127 (message)" + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/sw/summit/cuda/11.7.1/include] + add: [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + add: [/usr/lib/gcc/ppc64le-redhat-linux/8/include] + add: [/usr/local/include] + add: [/usr/include] + end of search list found + collapse include dir [/sw/summit/cuda/11.7.1/include] ==> [/sw/summit/cuda/11.7.1/include] + collapse include dir [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] ==> [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + collapse include dir [/usr/lib/gcc/ppc64le-redhat-linux/8/include] ==> [/usr/lib/gcc/ppc64le-redhat-linux/8/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/sw/summit/cuda/11.7.1/include;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include;/usr/lib/gcc/ppc64le-redhat-linux/8/include;/usr/local/include;/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompilerABI.cmake:152 (message)" + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + ignore line: [Change Dir: '/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-a4su1y'] + ignore line: [] + ignore line: [Run Build Command(s): /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_9452e/fast] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_9452e.dir/build.make CMakeFiles/cmTC_9452e.dir/build] + ignore line: [gmake[1]: Entering directory '/autofs/nccs-svm1_home1/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-a4su1y'] + ignore line: [Building C object CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o -c /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: ppc64le-redhat-linux] + ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c c++ fortran lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-targets=powerpcle-linux --disable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-secureplt --with-long-double-128 --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 --build=ppc64le-redhat-linux] + ignore line: [Thread model: posix] + ignore line: [gcc version 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=power8' '-mcpu=power8'] + ignore line: [ /usr/libexec/gcc/ppc64le-redhat-linux/8/cc1 -quiet -v -D__unix__ -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux -D__linux -Asystem=linux -Asystem=unix -Asystem=posix /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCCompilerABI.c -msecure-plt -quiet -dumpbase CMakeCCompilerABI.c -mtune=power8 -mcpu=power8 -auxbase-strip CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o -version -o /tmp/ccXwj3Fz.s] + ignore line: [GNU C17 (GCC) version 8.5.0 20210514 (Red Hat 8.5.0-10) (ppc64le-redhat-linux)] + ignore line: [ compiled by GNU C version 8.5.0 20210514 (Red Hat 8.5.0-10) GMP version 6.1.2 MPFR version 3.1.6-p2 MPC version 1.1.0 isl version isl-0.16.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/ppc64le-redhat-linux/8/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../ppc64le-redhat-linux/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /sw/summit/cuda/11.7.1/include] + ignore line: [ /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + ignore line: [ /usr/lib/gcc/ppc64le-redhat-linux/8/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C17 (GCC) version 8.5.0 20210514 (Red Hat 8.5.0-10) (ppc64le-redhat-linux)] + ignore line: [ compiled by GNU C version 8.5.0 20210514 (Red Hat 8.5.0-10) GMP version 6.1.2 MPFR version 3.1.6-p2 MPC version 1.1.0 isl version isl-0.16.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: b77697c30dd6bb94a36a8985a10a46a8] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=power8' '-mcpu=power8'] + ignore line: [ as -v -a64 -mpower8 -many -mlittle -o CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o /tmp/ccXwj3Fz.s] + ignore line: [GNU assembler version 2.30 (ppc64le-redhat-linux) using BFD version version 2.30-113.el8] + ignore line: [COMPILER_PATH=/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/:/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=power8' '-mcpu=power8'] + ignore line: [Linking C executable cmTC_9452e] + ignore line: [/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9452e.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o -o cmTC_9452e ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/ppc64le-redhat-linux/8/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: ppc64le-redhat-linux] + ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c c++ fortran lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-targets=powerpcle-linux --disable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-secureplt --with-long-double-128 --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 --build=ppc64le-redhat-linux] + ignore line: [Thread model: posix] + ignore line: [gcc version 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC) ] + ignore line: [COMPILER_PATH=/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/8/:/usr/libexec/gcc/ppc64le-redhat-linux/:/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/ppc64le-redhat-linux/8/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/usr/lib/gcc/ppc64le-redhat-linux/8/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_9452e' '-mtune=power8' '-mcpu=power8'] + link line: [ /usr/libexec/gcc/ppc64le-redhat-linux/8/collect2 -plugin /usr/libexec/gcc/ppc64le-redhat-linux/8/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/ppc64le-redhat-linux/8/lto-wrapper -plugin-opt=-fresolution=/tmp/ccH1cgBT.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -V -m elf64lppc -dynamic-linker /lib64/ld64.so.2 -o cmTC_9452e /usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crt1.o /usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crti.o /usr/lib/gcc/ppc64le-redhat-linux/8/crtbegin.o -L/usr/lib/gcc/ppc64le-redhat-linux/8 -L/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib -L/usr/lib/gcc/ppc64le-redhat-linux/8/../../.. CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/ppc64le-redhat-linux/8/crtend.o /usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crtn.o] + arg [/usr/libexec/gcc/ppc64le-redhat-linux/8/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/libexec/gcc/ppc64le-redhat-linux/8/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/libexec/gcc/ppc64le-redhat-linux/8/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccH1cgBT.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--no-add-needed] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-V] ==> ignore + arg [-m] ==> ignore + arg [elf64lppc] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld64.so.2] ==> ignore + arg [-o] ==> ignore + arg [cmTC_9452e] ==> ignore + arg [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crt1.o] ==> obj [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crt1.o] + arg [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crti.o] ==> obj [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crti.o] + arg [/usr/lib/gcc/ppc64le-redhat-linux/8/crtbegin.o] ==> obj [/usr/lib/gcc/ppc64le-redhat-linux/8/crtbegin.o] + arg [-L/usr/lib/gcc/ppc64le-redhat-linux/8] ==> dir [/usr/lib/gcc/ppc64le-redhat-linux/8] + arg [-L/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64] ==> dir [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64] + arg [-L/lib/../lib64] ==> dir [/lib/../lib64] + arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] + arg [-L/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] ==> dir [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] + arg [-L/usr/lib/gcc/ppc64le-redhat-linux/8/../../..] ==> dir [/usr/lib/gcc/ppc64le-redhat-linux/8/../../..] + arg [CMakeFiles/cmTC_9452e.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [/usr/lib/gcc/ppc64le-redhat-linux/8/crtend.o] ==> obj [/usr/lib/gcc/ppc64le-redhat-linux/8/crtend.o] + arg [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crtn.o] ==> obj [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crtn.o] + collapse obj [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crt1.o] ==> [/usr/lib64/crt1.o] + collapse obj [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crti.o] ==> [/usr/lib64/crti.o] + collapse obj [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64/crtn.o] ==> [/usr/lib64/crtn.o] + collapse library dir [/usr/lib/gcc/ppc64le-redhat-linux/8] ==> [/usr/lib/gcc/ppc64le-redhat-linux/8] + collapse library dir [/usr/lib/gcc/ppc64le-redhat-linux/8/../../../../lib64] ==> [/usr/lib64] + collapse library dir [/lib/../lib64] ==> [/lib64] + collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] + collapse library dir [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] ==> [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] + collapse library dir [/usr/lib/gcc/ppc64le-redhat-linux/8/../../..] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit objs: [/usr/lib64/crt1.o;/usr/lib64/crti.o;/usr/lib/gcc/ppc64le-redhat-linux/8/crtbegin.o;/usr/lib/gcc/ppc64le-redhat-linux/8/crtend.o;/usr/lib64/crtn.o] + implicit dirs: [/usr/lib/gcc/ppc64le-redhat-linux/8;/usr/lib64;/lib64;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib;/usr/lib] + implicit fwks: [] + + + - + kind: "try_compile-v1" + backtrace: + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)" + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCUDACompiler.cmake:19 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting CUDA compiler ABI info" + directories: + source: "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-4V22GF" + binary: "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-4V22GF" + cmakeVariables: + CMAKE_CUDA_FLAGS: "" + CMAKE_CUDA_FLAGS_DEBUG: "-g" + CMAKE_CUDA_RUNTIME_LIBRARY: "Static" + CMAKE_EXE_LINKER_FLAGS: "" + buildResult: + variable: "CMAKE_CUDA_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-4V22GF' + + Run Build Command(s): /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0e835/fast + /usr/bin/gmake -f CMakeFiles/cmTC_0e835.dir/build.make CMakeFiles/cmTC_0e835.dir/build + gmake[1]: Entering directory '/autofs/nccs-svm1_home1/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-4V22GF' + Building CUDA object CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o + /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler -Xcompiler=-v -MD -MT CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -MF CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o.d -x cu -c /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompilerABI.cu -o CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o + Using built-in specs. + COLLECT_GCC=gcc + OFFLOAD_TARGET_NAMES=nvptx-none + Target: powerpc64le-unknown-linux-gnu + Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c,c++,fortran,lto --disable-multilib CFLAGS=-m64 + Thread model: posix + gcc version 9.3.0 (GCC) + COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-7_CMakeCUDACompilerABI.cpp1.ii' + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/cc1plus -E -quiet -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -iprefix /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/ -D_GNU_SOURCE -D __CUDA_ARCH__=520 -D __CUDA_ARCH_LIST__=520 -D CUDA_DOUBLE_MATH_FUNCTIONS -D __CUDACC__ -D __NVCC__ -D __CUDACC_VER_MAJOR__=11 -D __CUDACC_VER_MINOR__=7 -D __CUDACC_VER_BUILD__=99 -D __CUDA_API_VER_MAJOR__=11 -D __CUDA_API_VER_MINOR__=7 -D __NVCC_DIAG_PRAGMA_SUPPORT__=1 -include cuda_runtime.h /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompilerABI.cu -o /tmp/tmpxft_0029604b_00000000-7_CMakeCUDACompilerABI.cpp1.ii + ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed" + ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include" + ignoring duplicate directory "/sw/summit/cuda/11.7.1/include" + #include "..." search starts here: + #include <...> search starts here: + /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0 + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed + /usr/local/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include + /usr/include + End of search list. + COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/ + LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-7_CMakeCUDACompilerABI.cpp1.ii' + Using built-in specs. + COLLECT_GCC=gcc + OFFLOAD_TARGET_NAMES=nvptx-none + Target: powerpc64le-unknown-linux-gnu + Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c,c++,fortran,lto --disable-multilib CFLAGS=-m64 + Thread model: posix + gcc version 9.3.0 (GCC) + COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-5_CMakeCUDACompilerABI.cpp4.ii' + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/cc1plus -E -quiet -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -iprefix /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/ -D_GNU_SOURCE -D __CUDA_ARCH_LIST__=520 -D __CUDACC__ -D __NVCC__ -D __CUDACC_VER_MAJOR__=11 -D __CUDACC_VER_MINOR__=7 -D __CUDACC_VER_BUILD__=99 -D __CUDA_API_VER_MAJOR__=11 -D __CUDA_API_VER_MINOR__=7 -D __NVCC_DIAG_PRAGMA_SUPPORT__=1 -include cuda_runtime.h /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompilerABI.cu -o /tmp/tmpxft_0029604b_00000000-5_CMakeCUDACompilerABI.cpp4.ii + ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed" + ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include" + ignoring duplicate directory "/sw/summit/cuda/11.7.1/include" + #include "..." search starts here: + #include <...> search starts here: + /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0 + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed + /usr/local/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include + /usr/include + End of search list. + COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/ + LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-5_CMakeCUDACompilerABI.cpp4.ii' + Using built-in specs. + COLLECT_GCC=gcc + OFFLOAD_TARGET_NAMES=nvptx-none + Target: powerpc64le-unknown-linux-gnu + Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c,c++,fortran,lto --disable-multilib CFLAGS=-m64 + Thread model: posix + gcc version 9.3.0 (GCC) + COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-c' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-o' 'CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o' + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/cc1plus -quiet -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -iprefix /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/ -D_GNU_SOURCE -D __CUDA_ARCH__=520 -D __CUDA_ARCH_LIST__=520 -D CUDA_DOUBLE_MATH_FUNCTIONS /tmp/tmpxft_0029604b_00000000-6_CMakeCUDACompilerABI.cudafe1.cpp -quiet -dumpbase tmpxft_0029604b_00000000-6_CMakeCUDACompilerABI.cudafe1.cpp -auxbase-strip CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -version -o /tmp/cc4acbDK.s + GNU C++14 (GCC) version 9.3.0 (powerpc64le-unknown-linux-gnu) + compiled by GNU C version 9.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP + + GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 + ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include" + ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed" + ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include" + ignoring duplicate directory "/sw/summit/cuda/11.7.1/include" + #include "..." search starts here: + #include <...> search starts here: + /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0 + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed + /usr/local/include + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include + /usr/include + End of search list. + GNU C++14 (GCC) version 9.3.0 (powerpc64le-unknown-linux-gnu) + compiled by GNU C version 9.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP + + GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 + Compiler executable checksum: c15ed6e2c35151c8c02118df9948b5e4 + COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-c' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-o' 'CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o' + as -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -a64 -mppc64 -many -mlittle -o CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o /tmp/cc4acbDK.s + GNU assembler version 2.30 (ppc64le-redhat-linux) using BFD version version 2.30-113.el8 + COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/ + LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-c' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-o' 'CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o' + Linking CUDA executable cmTC_0e835 + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0e835.dir/link.txt --verbose=1 + /sw/summit/gcc/9.3.0-2/bin/g++ -v CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -o cmTC_0e835 -lcudadevrt -lcudart_static -lrt -lpthread -ldl -L"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs" -L"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib" + Using built-in specs. + COLLECT_GCC=/sw/summit/gcc/9.3.0-2/bin/g++ + COLLECT_LTO_WRAPPER=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/lto-wrapper + OFFLOAD_TARGET_NAMES=nvptx-none + Target: powerpc64le-unknown-linux-gnu + Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c,c++,fortran,lto --disable-multilib CFLAGS=-m64 + Thread model: posix + gcc version 9.3.0 (GCC) + COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/ + LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0e835' '-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs' '-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib' '-shared-libgcc' + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/collect2 -plugin /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/liblto_plugin.so -plugin-opt=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccfLr4Zl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --eh-frame-hdr -V -m elf64lppc -dynamic-linker /lib64/ld64.so.2 -o cmTC_0e835 /lib/../lib64/crt1.o /lib/../lib64/crti.o /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtbegin.o -L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs -L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0 -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../.. CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -lcudadevrt -lcudart_static -lrt -lpthread -ldl -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtend.o /lib/../lib64/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0e835' '-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs' '-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib' '-shared-libgcc' + gmake[1]: Leaving directory '/autofs/nccs-svm1_home1/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-4V22GF' + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompilerABI.cmake:127 (message)" + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCUDACompiler.cmake:19 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CUDA implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include] + add: [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + add: [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0] + add: [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu] + add: [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward] + add: [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include] + add: [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed] + add: [/usr/local/include] + add: [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include] + add: [/usr/include] + end of search list found + collapse include dir [/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include] ==> [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include] + collapse include dir [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] ==> [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + collapse include dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0] + collapse include dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu] + collapse include dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/backward] + collapse include dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include] + collapse include dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/backward;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed;/usr/local/include;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include;/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompilerABI.cmake:152 (message)" + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCUDACompiler.cmake:19 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CUDA implicit link information: + link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + ignore line: [Change Dir: '/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-4V22GF'] + ignore line: [] + ignore line: [Run Build Command(s): /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0e835/fast] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_0e835.dir/build.make CMakeFiles/cmTC_0e835.dir/build] + ignore line: [gmake[1]: Entering directory '/autofs/nccs-svm1_home1/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-4V22GF'] + ignore line: [Building CUDA object CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o] + ignore line: [/sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler -Xcompiler=-v -MD -MT CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -MF CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o.d -x cu -c /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompilerABI.cu -o CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=gcc] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none] + ignore line: [Target: powerpc64le-unknown-linux-gnu] + ignore line: [Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c c++ fortran lto --disable-multilib CFLAGS=-m64] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.3.0 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-7_CMakeCUDACompilerABI.cpp1.ii'] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/cc1plus -E -quiet -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -iprefix /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/ -D_GNU_SOURCE -D __CUDA_ARCH__=520 -D __CUDA_ARCH_LIST__=520 -D CUDA_DOUBLE_MATH_FUNCTIONS -D __CUDACC__ -D __NVCC__ -D __CUDACC_VER_MAJOR__=11 -D __CUDACC_VER_MINOR__=7 -D __CUDACC_VER_BUILD__=99 -D __CUDA_API_VER_MAJOR__=11 -D __CUDA_API_VER_MINOR__=7 -D __NVCC_DIAG_PRAGMA_SUPPORT__=1 -include cuda_runtime.h /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompilerABI.cu -o /tmp/tmpxft_0029604b_00000000-7_CMakeCUDACompilerABI.cpp1.ii] + ignore line: [ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed"] + ignore line: [ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include"] + ignore line: [ignoring duplicate directory "/sw/summit/cuda/11.7.1/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include] + ignore line: [ /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed] + ignore line: [ /usr/local/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/] + ignore line: [LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-7_CMakeCUDACompilerABI.cpp1.ii'] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=gcc] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none] + ignore line: [Target: powerpc64le-unknown-linux-gnu] + ignore line: [Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c c++ fortran lto --disable-multilib CFLAGS=-m64] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.3.0 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-5_CMakeCUDACompilerABI.cpp4.ii'] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/cc1plus -E -quiet -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -iprefix /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/ -D_GNU_SOURCE -D __CUDA_ARCH_LIST__=520 -D __CUDACC__ -D __NVCC__ -D __CUDACC_VER_MAJOR__=11 -D __CUDACC_VER_MINOR__=7 -D __CUDACC_VER_BUILD__=99 -D __CUDA_API_VER_MAJOR__=11 -D __CUDA_API_VER_MINOR__=7 -D __NVCC_DIAG_PRAGMA_SUPPORT__=1 -include cuda_runtime.h /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompilerABI.cu -o /tmp/tmpxft_0029604b_00000000-5_CMakeCUDACompilerABI.cpp4.ii] + ignore line: [ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed"] + ignore line: [ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include"] + ignore line: [ignoring duplicate directory "/sw/summit/cuda/11.7.1/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include] + ignore line: [ /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed] + ignore line: [ /usr/local/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/] + ignore line: [LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH_LIST__=520' '-E' '-D' '__CUDACC__' '-D' '__NVCC__' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-D' '__CUDACC_VER_MAJOR__=11' '-D' '__CUDACC_VER_MINOR__=7' '-D' '__CUDACC_VER_BUILD__=99' '-D' '__CUDA_API_VER_MAJOR__=11' '-D' '__CUDA_API_VER_MINOR__=7' '-D' '__NVCC_DIAG_PRAGMA_SUPPORT__=1' '-include' 'cuda_runtime.h' '-o' '/tmp/tmpxft_0029604b_00000000-5_CMakeCUDACompilerABI.cpp4.ii'] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=gcc] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none] + ignore line: [Target: powerpc64le-unknown-linux-gnu] + ignore line: [Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c c++ fortran lto --disable-multilib CFLAGS=-m64] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.3.0 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-c' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-o' 'CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o'] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/cc1plus -quiet -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -iprefix /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/ -D_GNU_SOURCE -D __CUDA_ARCH__=520 -D __CUDA_ARCH_LIST__=520 -D CUDA_DOUBLE_MATH_FUNCTIONS /tmp/tmpxft_0029604b_00000000-6_CMakeCUDACompilerABI.cudafe1.cpp -quiet -dumpbase tmpxft_0029604b_00000000-6_CMakeCUDACompilerABI.cudafe1.cpp -auxbase-strip CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -version -o /tmp/cc4acbDK.s] + ignore line: [GNU C++14 (GCC) version 9.3.0 (powerpc64le-unknown-linux-gnu)] + ignore line: [ compiled by GNU C version 9.3.0 GMP version 6.1.0 MPFR version 3.1.4 MPC version 1.0.3 isl version isl-0.18-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include"] + ignore line: [ignoring duplicate directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed"] + ignore line: [ignoring nonexistent directory "/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../powerpc64le-unknown-linux-gnu/include"] + ignore line: [ignoring duplicate directory "/sw/summit/cuda/11.7.1/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include] + ignore line: [ /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/powerpc64le-unknown-linux-gnu] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed] + ignore line: [ /usr/local/include] + ignore line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/../../include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (GCC) version 9.3.0 (powerpc64le-unknown-linux-gnu)] + ignore line: [ compiled by GNU C version 9.3.0 GMP version 6.1.0 MPFR version 3.1.4 MPC version 1.0.3 isl version isl-0.18-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: c15ed6e2c35151c8c02118df9948b5e4] + ignore line: [COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-c' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-o' 'CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o'] + ignore line: [ as -v -I /sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include -a64 -mppc64 -many -mlittle -o CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o /tmp/cc4acbDK.s] + ignore line: [GNU assembler version 2.30 (ppc64le-redhat-linux) using BFD version version 2.30-113.el8] + ignore line: [COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/] + ignore line: [LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-D' '__CUDA_ARCH__=520' '-D' '__CUDA_ARCH_LIST__=520' '-c' '-D' 'CUDA_DOUBLE_MATH_FUNCTIONS' '-v' '-I' '/sw/summit/cuda/11.7.1/bin/../targets/ppc64le-linux/include' '-o' 'CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o'] + ignore line: [Linking CUDA executable cmTC_0e835] + ignore line: [/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0e835.dir/link.txt --verbose=1] + ignore line: [/sw/summit/gcc/9.3.0-2/bin/g++ -v CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -o cmTC_0e835 -lcudadevrt -lcudart_static -lrt -lpthread -ldl -L"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs" -L"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib"] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/sw/summit/gcc/9.3.0-2/bin/g++] + ignore line: [COLLECT_LTO_WRAPPER=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none] + ignore line: [Target: powerpc64le-unknown-linux-gnu] + ignore line: [Configured with: /gpfs/alpine/scratch/belhorn/stf007/builds/gcc-build-9.3.0-3/gcc-9.3.0/configure --prefix=/sw/summit/gcc/9.3.0-3 --enable-offload-targets=nvptx-none --with-cuda-driver-include=/sw/summit/cuda/11.0.3/include --with-cuda-driver-lib=/sw/summit/cuda/11.0.3/lib64 --with-cuda-driver=/sw/summit/cuda/11.0.3 --enable-languages=c c++ fortran lto --disable-multilib CFLAGS=-m64] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.3.0 (GCC) ] + ignore line: [COMPILER_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/] + ignore line: [LIBRARY_PATH=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/:/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0e835' '-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs' '-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib' '-shared-libgcc'] + link line: [ /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/collect2 -plugin /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/liblto_plugin.so -plugin-opt=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccfLr4Zl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --eh-frame-hdr -V -m elf64lppc -dynamic-linker /lib64/ld64.so.2 -o cmTC_0e835 /lib/../lib64/crt1.o /lib/../lib64/crti.o /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtbegin.o -L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs -L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0 -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib -L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../.. CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o -lcudadevrt -lcudart_static -lrt -lpthread -ldl -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtend.o /lib/../lib64/crtn.o] + arg [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../libexec/gcc/powerpc64le-unknown-linux-gnu/9.3.0/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccfLr4Zl.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-V] ==> ignore + arg [-m] ==> ignore + arg [elf64lppc] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld64.so.2] ==> ignore + arg [-o] ==> ignore + arg [cmTC_0e835] ==> ignore + arg [/lib/../lib64/crt1.o] ==> obj [/lib/../lib64/crt1.o] + arg [/lib/../lib64/crti.o] ==> obj [/lib/../lib64/crti.o] + arg [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtbegin.o] ==> obj [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtbegin.o] + arg [-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs] ==> dir [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs] + arg [-L/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib] ==> dir [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib] + arg [-L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0] ==> dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0] + arg [-L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc] ==> dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc] + arg [-L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64] ==> dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64] + arg [-L/lib/../lib64] ==> dir [/lib/../lib64] + arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] + arg [-L/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] ==> dir [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] + arg [-L/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../..] ==> dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../..] + arg [CMakeFiles/cmTC_0e835.dir/CMakeCUDACompilerABI.cu.o] ==> ignore + arg [-lcudadevrt] ==> lib [cudadevrt] + arg [-lcudart_static] ==> lib [cudart_static] + arg [-lrt] ==> lib [rt] + arg [-lpthread] ==> lib [pthread] + arg [-ldl] ==> lib [dl] + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtend.o] ==> obj [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtend.o] + arg [/lib/../lib64/crtn.o] ==> obj [/lib/../lib64/crtn.o] + collapse obj [/lib/../lib64/crt1.o] ==> [/lib64/crt1.o] + collapse obj [/lib/../lib64/crti.o] ==> [/lib64/crti.o] + collapse obj [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtbegin.o] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtbegin.o] + collapse obj [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtend.o] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtend.o] + collapse obj [/lib/../lib64/crtn.o] ==> [/lib64/crtn.o] + collapse library dir [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs] ==> [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs] + collapse library dir [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib] ==> [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib] + collapse library dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0] + collapse library dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc] + collapse library dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../../../lib64] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib64] + collapse library dir [/lib/../lib64] ==> [/lib64] + collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] + collapse library dir [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] ==> [/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib] + collapse library dir [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/bin/../lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/../../..] ==> [/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib] + implicit libs: [cudadevrt;cudart_static;rt;pthread;dl;stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit objs: [/lib64/crt1.o;/lib64/crti.o;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtbegin.o;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/crtend.o;/lib64/crtn.o] + implicit dirs: [/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib/stubs;/sw/summit/cuda/11.7.1/targets/ppc64le-linux/lib;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib64;/lib64;/usr/lib64;/sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib;/autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib] + implicit fwks: [] + + + - + kind: "try_compile-v1" + backtrace: + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/FindMPI.cmake:1278 (try_compile)" + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/FindMPI.cmake:1322 (_MPI_try_staged_settings)" + - "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/FindMPI.cmake:1645 (_MPI_check_lang_works)" + - "CMakeLists.txt:16 (find_package)" + description: "The MPI test test_mpi for C in mode normal" + directories: + source: "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-cScGQh" + binary: "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-cScGQh" + cmakeVariables: + CMAKE_CUDA_ARCHITECTURES: "70" + CMAKE_C_FLAGS: " -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter" + CMAKE_C_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + buildResult: + variable: "MPI_RESULT_C_test_mpi_normal" + cached: true + stdout: | + Change Dir: '/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-cScGQh' + + Run Build Command(s): /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_302a8/fast + /usr/bin/gmake -f CMakeFiles/cmTC_302a8.dir/build.make CMakeFiles/cmTC_302a8.dir/build + gmake[1]: Entering directory '/autofs/nccs-svm1_home1/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-cScGQh' + Building C object CMakeFiles/cmTC_302a8.dir/test_mpi.c.o + /usr/bin/cc -isystem /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include -isystem /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter -pthread -o CMakeFiles/cmTC_302a8.dir/test_mpi.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-cScGQh/test_mpi.c + Linking C executable cmTC_302a8 + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E cmake_link_script CMakeFiles/cmTC_302a8.dir/link.txt --verbose=1 + /usr/bin/cc -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter -L/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib -pthread CMakeFiles/cmTC_302a8.dir/test_mpi.c.o -o cmTC_302a8 /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpiprofilesupport.so /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/lib/libmpi_ibm.so + gmake[1]: Leaving directory '/autofs/nccs-svm1_home1/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/CMakeScratch/TryCompile-cScGQh' + + exitCode: 0 +... diff --git a/release/CMakeFiles/CMakeDirectoryInformation.cmake b/release/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/CMakeFiles/CMakeRuleHashes.txt b/release/CMakeFiles/CMakeRuleHashes.txt new file mode 100644 index 0000000..3d9aae3 --- /dev/null +++ b/release/CMakeFiles/CMakeRuleHashes.txt @@ -0,0 +1,29 @@ +# Hashes of file build rules. +0fe9243b928a7258475a5eefd547cb6f CMakeFiles/Continuous +2b4567e449534b3b4b2bee2d12e4d824 CMakeFiles/ContinuousBuild +3a5480730adc477676681e76fd29c8fc CMakeFiles/ContinuousConfigure +481e9a5ba475f59ef8609974129a671f CMakeFiles/ContinuousCoverage +ee5ee6b356272233555fc43b15d458e1 CMakeFiles/ContinuousMemCheck +8d328d47eee01c7320335d0b6b6450e8 CMakeFiles/ContinuousStart +ba89f5a0d6dbd3e458e000c6575849f0 CMakeFiles/ContinuousSubmit +02aa2de643cd01ff4206c1cfcd54905f CMakeFiles/ContinuousTest +86cd0a92006fced24a0289bb9dc10c92 CMakeFiles/ContinuousUpdate +02c295006b6b82c0d6a37d5991b378ea CMakeFiles/Experimental +890ca778f7d7fb072ea87be1c4a8d3c3 CMakeFiles/ExperimentalBuild +3ec197ea781c5bef7099519e680eb580 CMakeFiles/ExperimentalConfigure +546faa3b9b9325d90da0d61bc2b4da21 CMakeFiles/ExperimentalCoverage +64353066269e8ae661881e9047f17022 CMakeFiles/ExperimentalMemCheck +07120567b8f7792093098f75d36e6d79 CMakeFiles/ExperimentalStart +49bde3a60f08ce54920a1f554b922b6e CMakeFiles/ExperimentalSubmit +ce8dca1206260918a69f2f1c59248580 CMakeFiles/ExperimentalTest +dcc7248d2aaea0c9e77f3cd362f3b098 CMakeFiles/ExperimentalUpdate +de45ef76359682958bf36950249f446e CMakeFiles/Nightly +e9667a4e701c7727a758e37c26b074e0 CMakeFiles/NightlyBuild +bfd327547ee67d7420bb1cb0a0366643 CMakeFiles/NightlyConfigure +6c06e0540a8b97ffa0bf0df1dac080d8 CMakeFiles/NightlyCoverage +647f1aca7b5ad8d6985e902b89bf4c82 CMakeFiles/NightlyMemCheck +5080991e1221346189bff77b7da7e867 CMakeFiles/NightlyMemoryCheck +9d30f60665e31a88dc6f6c18b270f3a5 CMakeFiles/NightlyStart +6d50b5f7dda48194d5fda5d0e6c7742a CMakeFiles/NightlySubmit +fd6682ccb81a5c1d71daf709cdcfdfad CMakeFiles/NightlyTest +01487bb6b70c718a0ea22cc6b6127aba CMakeFiles/NightlyUpdate diff --git a/release/CMakeFiles/Continuous.dir/DependInfo.cmake b/release/CMakeFiles/Continuous.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/Continuous.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/Continuous.dir/build.make b/release/CMakeFiles/Continuous.dir/build.make new file mode 100644 index 0000000..342085c --- /dev/null +++ b/release/CMakeFiles/Continuous.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for Continuous. + +# Include any custom commands dependencies for this target. +include CMakeFiles/Continuous.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/Continuous.dir/progress.make + +CMakeFiles/Continuous: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D Continuous + +Continuous: CMakeFiles/Continuous +Continuous: CMakeFiles/Continuous.dir/build.make +.PHONY : Continuous + +# Rule to build all files generated by this target. +CMakeFiles/Continuous.dir/build: Continuous +.PHONY : CMakeFiles/Continuous.dir/build + +CMakeFiles/Continuous.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/Continuous.dir/cmake_clean.cmake +.PHONY : CMakeFiles/Continuous.dir/clean + +CMakeFiles/Continuous.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/Continuous.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/Continuous.dir/depend + diff --git a/release/CMakeFiles/Continuous.dir/cmake_clean.cmake b/release/CMakeFiles/Continuous.dir/cmake_clean.cmake new file mode 100644 index 0000000..7e1791c --- /dev/null +++ b/release/CMakeFiles/Continuous.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/Continuous" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/Continuous.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/Continuous.dir/compiler_depend.make b/release/CMakeFiles/Continuous.dir/compiler_depend.make new file mode 100644 index 0000000..4e014e0 --- /dev/null +++ b/release/CMakeFiles/Continuous.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for Continuous. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/Continuous.dir/compiler_depend.ts b/release/CMakeFiles/Continuous.dir/compiler_depend.ts new file mode 100644 index 0000000..8630362 --- /dev/null +++ b/release/CMakeFiles/Continuous.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for Continuous. diff --git a/release/CMakeFiles/Continuous.dir/progress.make b/release/CMakeFiles/Continuous.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/Continuous.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousBuild.dir/build.make b/release/CMakeFiles/ContinuousBuild.dir/build.make new file mode 100644 index 0000000..f1e547a --- /dev/null +++ b/release/CMakeFiles/ContinuousBuild.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousBuild. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousBuild.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousBuild.dir/progress.make + +CMakeFiles/ContinuousBuild: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousBuild + +ContinuousBuild: CMakeFiles/ContinuousBuild +ContinuousBuild: CMakeFiles/ContinuousBuild.dir/build.make +.PHONY : ContinuousBuild + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousBuild.dir/build: ContinuousBuild +.PHONY : CMakeFiles/ContinuousBuild.dir/build + +CMakeFiles/ContinuousBuild.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousBuild.dir/clean + +CMakeFiles/ContinuousBuild.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousBuild.dir/depend + diff --git a/release/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake new file mode 100644 index 0000000..afccd13 --- /dev/null +++ b/release/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousBuild" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousBuild.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousBuild.dir/compiler_depend.make b/release/CMakeFiles/ContinuousBuild.dir/compiler_depend.make new file mode 100644 index 0000000..00b62ad --- /dev/null +++ b/release/CMakeFiles/ContinuousBuild.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousBuild. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousBuild.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousBuild.dir/compiler_depend.ts new file mode 100644 index 0000000..1cb8618 --- /dev/null +++ b/release/CMakeFiles/ContinuousBuild.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousBuild. diff --git a/release/CMakeFiles/ContinuousBuild.dir/progress.make b/release/CMakeFiles/ContinuousBuild.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousBuild.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousConfigure.dir/build.make b/release/CMakeFiles/ContinuousConfigure.dir/build.make new file mode 100644 index 0000000..a38129e --- /dev/null +++ b/release/CMakeFiles/ContinuousConfigure.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousConfigure. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousConfigure.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousConfigure.dir/progress.make + +CMakeFiles/ContinuousConfigure: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousConfigure + +ContinuousConfigure: CMakeFiles/ContinuousConfigure +ContinuousConfigure: CMakeFiles/ContinuousConfigure.dir/build.make +.PHONY : ContinuousConfigure + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousConfigure.dir/build: ContinuousConfigure +.PHONY : CMakeFiles/ContinuousConfigure.dir/build + +CMakeFiles/ContinuousConfigure.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousConfigure.dir/clean + +CMakeFiles/ContinuousConfigure.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousConfigure.dir/depend + diff --git a/release/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake new file mode 100644 index 0000000..eb51e20 --- /dev/null +++ b/release/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousConfigure" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousConfigure.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.make b/release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.make new file mode 100644 index 0000000..584c8bb --- /dev/null +++ b/release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousConfigure. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.ts new file mode 100644 index 0000000..c8a3427 --- /dev/null +++ b/release/CMakeFiles/ContinuousConfigure.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousConfigure. diff --git a/release/CMakeFiles/ContinuousConfigure.dir/progress.make b/release/CMakeFiles/ContinuousConfigure.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousConfigure.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousCoverage.dir/build.make b/release/CMakeFiles/ContinuousCoverage.dir/build.make new file mode 100644 index 0000000..b7a460a --- /dev/null +++ b/release/CMakeFiles/ContinuousCoverage.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousCoverage. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousCoverage.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousCoverage.dir/progress.make + +CMakeFiles/ContinuousCoverage: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousCoverage + +ContinuousCoverage: CMakeFiles/ContinuousCoverage +ContinuousCoverage: CMakeFiles/ContinuousCoverage.dir/build.make +.PHONY : ContinuousCoverage + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousCoverage.dir/build: ContinuousCoverage +.PHONY : CMakeFiles/ContinuousCoverage.dir/build + +CMakeFiles/ContinuousCoverage.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousCoverage.dir/clean + +CMakeFiles/ContinuousCoverage.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousCoverage.dir/depend + diff --git a/release/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake new file mode 100644 index 0000000..6115f89 --- /dev/null +++ b/release/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousCoverage" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousCoverage.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.make b/release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.make new file mode 100644 index 0000000..8d1a807 --- /dev/null +++ b/release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousCoverage. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.ts new file mode 100644 index 0000000..23d476b --- /dev/null +++ b/release/CMakeFiles/ContinuousCoverage.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousCoverage. diff --git a/release/CMakeFiles/ContinuousCoverage.dir/progress.make b/release/CMakeFiles/ContinuousCoverage.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousCoverage.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousMemCheck.dir/build.make b/release/CMakeFiles/ContinuousMemCheck.dir/build.make new file mode 100644 index 0000000..d931bb0 --- /dev/null +++ b/release/CMakeFiles/ContinuousMemCheck.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousMemCheck. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousMemCheck.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousMemCheck.dir/progress.make + +CMakeFiles/ContinuousMemCheck: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousMemCheck + +ContinuousMemCheck: CMakeFiles/ContinuousMemCheck +ContinuousMemCheck: CMakeFiles/ContinuousMemCheck.dir/build.make +.PHONY : ContinuousMemCheck + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousMemCheck.dir/build: ContinuousMemCheck +.PHONY : CMakeFiles/ContinuousMemCheck.dir/build + +CMakeFiles/ContinuousMemCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousMemCheck.dir/clean + +CMakeFiles/ContinuousMemCheck.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousMemCheck.dir/depend + diff --git a/release/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000..ad69e7f --- /dev/null +++ b/release/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousMemCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousMemCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.make b/release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.make new file mode 100644 index 0000000..930bb61 --- /dev/null +++ b/release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousMemCheck. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.ts new file mode 100644 index 0000000..4f4fc23 --- /dev/null +++ b/release/CMakeFiles/ContinuousMemCheck.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousMemCheck. diff --git a/release/CMakeFiles/ContinuousMemCheck.dir/progress.make b/release/CMakeFiles/ContinuousMemCheck.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousMemCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousStart.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousStart.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousStart.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousStart.dir/build.make b/release/CMakeFiles/ContinuousStart.dir/build.make new file mode 100644 index 0000000..8538e59 --- /dev/null +++ b/release/CMakeFiles/ContinuousStart.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousStart. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousStart.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousStart.dir/progress.make + +CMakeFiles/ContinuousStart: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousStart + +ContinuousStart: CMakeFiles/ContinuousStart +ContinuousStart: CMakeFiles/ContinuousStart.dir/build.make +.PHONY : ContinuousStart + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousStart.dir/build: ContinuousStart +.PHONY : CMakeFiles/ContinuousStart.dir/build + +CMakeFiles/ContinuousStart.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousStart.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousStart.dir/clean + +CMakeFiles/ContinuousStart.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousStart.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousStart.dir/depend + diff --git a/release/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake new file mode 100644 index 0000000..13d5b2b --- /dev/null +++ b/release/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousStart" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousStart.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousStart.dir/compiler_depend.make b/release/CMakeFiles/ContinuousStart.dir/compiler_depend.make new file mode 100644 index 0000000..af62614 --- /dev/null +++ b/release/CMakeFiles/ContinuousStart.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousStart. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousStart.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousStart.dir/compiler_depend.ts new file mode 100644 index 0000000..fcc8893 --- /dev/null +++ b/release/CMakeFiles/ContinuousStart.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousStart. diff --git a/release/CMakeFiles/ContinuousStart.dir/progress.make b/release/CMakeFiles/ContinuousStart.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousStart.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousSubmit.dir/build.make b/release/CMakeFiles/ContinuousSubmit.dir/build.make new file mode 100644 index 0000000..c111a0f --- /dev/null +++ b/release/CMakeFiles/ContinuousSubmit.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousSubmit. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousSubmit.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousSubmit.dir/progress.make + +CMakeFiles/ContinuousSubmit: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousSubmit + +ContinuousSubmit: CMakeFiles/ContinuousSubmit +ContinuousSubmit: CMakeFiles/ContinuousSubmit.dir/build.make +.PHONY : ContinuousSubmit + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousSubmit.dir/build: ContinuousSubmit +.PHONY : CMakeFiles/ContinuousSubmit.dir/build + +CMakeFiles/ContinuousSubmit.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousSubmit.dir/clean + +CMakeFiles/ContinuousSubmit.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousSubmit.dir/depend + diff --git a/release/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake new file mode 100644 index 0000000..cc66ba3 --- /dev/null +++ b/release/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousSubmit" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousSubmit.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.make b/release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.make new file mode 100644 index 0000000..3380916 --- /dev/null +++ b/release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousSubmit. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.ts new file mode 100644 index 0000000..73d7404 --- /dev/null +++ b/release/CMakeFiles/ContinuousSubmit.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousSubmit. diff --git a/release/CMakeFiles/ContinuousSubmit.dir/progress.make b/release/CMakeFiles/ContinuousSubmit.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousSubmit.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousTest.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousTest.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousTest.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousTest.dir/build.make b/release/CMakeFiles/ContinuousTest.dir/build.make new file mode 100644 index 0000000..c01b92b --- /dev/null +++ b/release/CMakeFiles/ContinuousTest.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousTest. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousTest.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousTest.dir/progress.make + +CMakeFiles/ContinuousTest: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousTest + +ContinuousTest: CMakeFiles/ContinuousTest +ContinuousTest: CMakeFiles/ContinuousTest.dir/build.make +.PHONY : ContinuousTest + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousTest.dir/build: ContinuousTest +.PHONY : CMakeFiles/ContinuousTest.dir/build + +CMakeFiles/ContinuousTest.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousTest.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousTest.dir/clean + +CMakeFiles/ContinuousTest.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousTest.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousTest.dir/depend + diff --git a/release/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake new file mode 100644 index 0000000..ff11d48 --- /dev/null +++ b/release/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousTest" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousTest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousTest.dir/compiler_depend.make b/release/CMakeFiles/ContinuousTest.dir/compiler_depend.make new file mode 100644 index 0000000..24d664a --- /dev/null +++ b/release/CMakeFiles/ContinuousTest.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousTest. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousTest.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousTest.dir/compiler_depend.ts new file mode 100644 index 0000000..bd7c1d1 --- /dev/null +++ b/release/CMakeFiles/ContinuousTest.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousTest. diff --git a/release/CMakeFiles/ContinuousTest.dir/progress.make b/release/CMakeFiles/ContinuousTest.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousTest.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake b/release/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ContinuousUpdate.dir/build.make b/release/CMakeFiles/ContinuousUpdate.dir/build.make new file mode 100644 index 0000000..eb013a7 --- /dev/null +++ b/release/CMakeFiles/ContinuousUpdate.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ContinuousUpdate. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ContinuousUpdate.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ContinuousUpdate.dir/progress.make + +CMakeFiles/ContinuousUpdate: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ContinuousUpdate + +ContinuousUpdate: CMakeFiles/ContinuousUpdate +ContinuousUpdate: CMakeFiles/ContinuousUpdate.dir/build.make +.PHONY : ContinuousUpdate + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousUpdate.dir/build: ContinuousUpdate +.PHONY : CMakeFiles/ContinuousUpdate.dir/build + +CMakeFiles/ContinuousUpdate.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousUpdate.dir/clean + +CMakeFiles/ContinuousUpdate.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ContinuousUpdate.dir/depend + diff --git a/release/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake b/release/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake new file mode 100644 index 0000000..7a77a24 --- /dev/null +++ b/release/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousUpdate" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousUpdate.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.make b/release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.make new file mode 100644 index 0000000..b373226 --- /dev/null +++ b/release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ContinuousUpdate. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.ts b/release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.ts new file mode 100644 index 0000000..ed8de92 --- /dev/null +++ b/release/CMakeFiles/ContinuousUpdate.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ContinuousUpdate. diff --git a/release/CMakeFiles/ContinuousUpdate.dir/progress.make b/release/CMakeFiles/ContinuousUpdate.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ContinuousUpdate.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/Experimental.dir/DependInfo.cmake b/release/CMakeFiles/Experimental.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/Experimental.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/Experimental.dir/build.make b/release/CMakeFiles/Experimental.dir/build.make new file mode 100644 index 0000000..2840d2c --- /dev/null +++ b/release/CMakeFiles/Experimental.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for Experimental. + +# Include any custom commands dependencies for this target. +include CMakeFiles/Experimental.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/Experimental.dir/progress.make + +CMakeFiles/Experimental: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D Experimental + +Experimental: CMakeFiles/Experimental +Experimental: CMakeFiles/Experimental.dir/build.make +.PHONY : Experimental + +# Rule to build all files generated by this target. +CMakeFiles/Experimental.dir/build: Experimental +.PHONY : CMakeFiles/Experimental.dir/build + +CMakeFiles/Experimental.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/Experimental.dir/cmake_clean.cmake +.PHONY : CMakeFiles/Experimental.dir/clean + +CMakeFiles/Experimental.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/Experimental.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/Experimental.dir/depend + diff --git a/release/CMakeFiles/Experimental.dir/cmake_clean.cmake b/release/CMakeFiles/Experimental.dir/cmake_clean.cmake new file mode 100644 index 0000000..799e708 --- /dev/null +++ b/release/CMakeFiles/Experimental.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/Experimental" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/Experimental.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/Experimental.dir/compiler_depend.make b/release/CMakeFiles/Experimental.dir/compiler_depend.make new file mode 100644 index 0000000..df83d58 --- /dev/null +++ b/release/CMakeFiles/Experimental.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for Experimental. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/Experimental.dir/compiler_depend.ts b/release/CMakeFiles/Experimental.dir/compiler_depend.ts new file mode 100644 index 0000000..2619b9b --- /dev/null +++ b/release/CMakeFiles/Experimental.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for Experimental. diff --git a/release/CMakeFiles/Experimental.dir/progress.make b/release/CMakeFiles/Experimental.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/Experimental.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalBuild.dir/build.make b/release/CMakeFiles/ExperimentalBuild.dir/build.make new file mode 100644 index 0000000..f148d0c --- /dev/null +++ b/release/CMakeFiles/ExperimentalBuild.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalBuild. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalBuild.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalBuild.dir/progress.make + +CMakeFiles/ExperimentalBuild: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalBuild + +ExperimentalBuild: CMakeFiles/ExperimentalBuild +ExperimentalBuild: CMakeFiles/ExperimentalBuild.dir/build.make +.PHONY : ExperimentalBuild + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalBuild.dir/build: ExperimentalBuild +.PHONY : CMakeFiles/ExperimentalBuild.dir/build + +CMakeFiles/ExperimentalBuild.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalBuild.dir/clean + +CMakeFiles/ExperimentalBuild.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalBuild.dir/depend + diff --git a/release/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake new file mode 100644 index 0000000..3354e3f --- /dev/null +++ b/release/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalBuild" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalBuild.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.make new file mode 100644 index 0000000..7608631 --- /dev/null +++ b/release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalBuild. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.ts new file mode 100644 index 0000000..34d9160 --- /dev/null +++ b/release/CMakeFiles/ExperimentalBuild.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalBuild. diff --git a/release/CMakeFiles/ExperimentalBuild.dir/progress.make b/release/CMakeFiles/ExperimentalBuild.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalBuild.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalConfigure.dir/build.make b/release/CMakeFiles/ExperimentalConfigure.dir/build.make new file mode 100644 index 0000000..07d5633 --- /dev/null +++ b/release/CMakeFiles/ExperimentalConfigure.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalConfigure. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalConfigure.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalConfigure.dir/progress.make + +CMakeFiles/ExperimentalConfigure: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalConfigure + +ExperimentalConfigure: CMakeFiles/ExperimentalConfigure +ExperimentalConfigure: CMakeFiles/ExperimentalConfigure.dir/build.make +.PHONY : ExperimentalConfigure + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalConfigure.dir/build: ExperimentalConfigure +.PHONY : CMakeFiles/ExperimentalConfigure.dir/build + +CMakeFiles/ExperimentalConfigure.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalConfigure.dir/clean + +CMakeFiles/ExperimentalConfigure.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalConfigure.dir/depend + diff --git a/release/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake new file mode 100644 index 0000000..69e4a71 --- /dev/null +++ b/release/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalConfigure" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalConfigure.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.make new file mode 100644 index 0000000..0738796 --- /dev/null +++ b/release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalConfigure. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.ts new file mode 100644 index 0000000..51fc32c --- /dev/null +++ b/release/CMakeFiles/ExperimentalConfigure.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalConfigure. diff --git a/release/CMakeFiles/ExperimentalConfigure.dir/progress.make b/release/CMakeFiles/ExperimentalConfigure.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalConfigure.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalCoverage.dir/build.make b/release/CMakeFiles/ExperimentalCoverage.dir/build.make new file mode 100644 index 0000000..20eff44 --- /dev/null +++ b/release/CMakeFiles/ExperimentalCoverage.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalCoverage. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalCoverage.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalCoverage.dir/progress.make + +CMakeFiles/ExperimentalCoverage: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalCoverage + +ExperimentalCoverage: CMakeFiles/ExperimentalCoverage +ExperimentalCoverage: CMakeFiles/ExperimentalCoverage.dir/build.make +.PHONY : ExperimentalCoverage + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalCoverage.dir/build: ExperimentalCoverage +.PHONY : CMakeFiles/ExperimentalCoverage.dir/build + +CMakeFiles/ExperimentalCoverage.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalCoverage.dir/clean + +CMakeFiles/ExperimentalCoverage.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalCoverage.dir/depend + diff --git a/release/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake new file mode 100644 index 0000000..b8d6597 --- /dev/null +++ b/release/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalCoverage" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalCoverage.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.make new file mode 100644 index 0000000..4c327cb --- /dev/null +++ b/release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalCoverage. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.ts new file mode 100644 index 0000000..d3bffd3 --- /dev/null +++ b/release/CMakeFiles/ExperimentalCoverage.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalCoverage. diff --git a/release/CMakeFiles/ExperimentalCoverage.dir/progress.make b/release/CMakeFiles/ExperimentalCoverage.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalCoverage.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalMemCheck.dir/build.make b/release/CMakeFiles/ExperimentalMemCheck.dir/build.make new file mode 100644 index 0000000..91e0d18 --- /dev/null +++ b/release/CMakeFiles/ExperimentalMemCheck.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalMemCheck. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalMemCheck.dir/progress.make + +CMakeFiles/ExperimentalMemCheck: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalMemCheck + +ExperimentalMemCheck: CMakeFiles/ExperimentalMemCheck +ExperimentalMemCheck: CMakeFiles/ExperimentalMemCheck.dir/build.make +.PHONY : ExperimentalMemCheck + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalMemCheck.dir/build: ExperimentalMemCheck +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/build + +CMakeFiles/ExperimentalMemCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/clean + +CMakeFiles/ExperimentalMemCheck.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/depend + diff --git a/release/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000..ed3f7bc --- /dev/null +++ b/release/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalMemCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalMemCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.make new file mode 100644 index 0000000..ab194c2 --- /dev/null +++ b/release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalMemCheck. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.ts new file mode 100644 index 0000000..5d0d9ac --- /dev/null +++ b/release/CMakeFiles/ExperimentalMemCheck.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalMemCheck. diff --git a/release/CMakeFiles/ExperimentalMemCheck.dir/progress.make b/release/CMakeFiles/ExperimentalMemCheck.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalMemCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalStart.dir/build.make b/release/CMakeFiles/ExperimentalStart.dir/build.make new file mode 100644 index 0000000..c17e8f4 --- /dev/null +++ b/release/CMakeFiles/ExperimentalStart.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalStart. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalStart.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalStart.dir/progress.make + +CMakeFiles/ExperimentalStart: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalStart + +ExperimentalStart: CMakeFiles/ExperimentalStart +ExperimentalStart: CMakeFiles/ExperimentalStart.dir/build.make +.PHONY : ExperimentalStart + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalStart.dir/build: ExperimentalStart +.PHONY : CMakeFiles/ExperimentalStart.dir/build + +CMakeFiles/ExperimentalStart.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalStart.dir/clean + +CMakeFiles/ExperimentalStart.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalStart.dir/depend + diff --git a/release/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake new file mode 100644 index 0000000..4e2736b --- /dev/null +++ b/release/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalStart" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalStart.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalStart.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalStart.dir/compiler_depend.make new file mode 100644 index 0000000..29aab51 --- /dev/null +++ b/release/CMakeFiles/ExperimentalStart.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalStart. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalStart.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalStart.dir/compiler_depend.ts new file mode 100644 index 0000000..a636e5c --- /dev/null +++ b/release/CMakeFiles/ExperimentalStart.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalStart. diff --git a/release/CMakeFiles/ExperimentalStart.dir/progress.make b/release/CMakeFiles/ExperimentalStart.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalStart.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalSubmit.dir/build.make b/release/CMakeFiles/ExperimentalSubmit.dir/build.make new file mode 100644 index 0000000..581d58e --- /dev/null +++ b/release/CMakeFiles/ExperimentalSubmit.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalSubmit. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalSubmit.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalSubmit.dir/progress.make + +CMakeFiles/ExperimentalSubmit: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalSubmit + +ExperimentalSubmit: CMakeFiles/ExperimentalSubmit +ExperimentalSubmit: CMakeFiles/ExperimentalSubmit.dir/build.make +.PHONY : ExperimentalSubmit + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalSubmit.dir/build: ExperimentalSubmit +.PHONY : CMakeFiles/ExperimentalSubmit.dir/build + +CMakeFiles/ExperimentalSubmit.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalSubmit.dir/clean + +CMakeFiles/ExperimentalSubmit.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalSubmit.dir/depend + diff --git a/release/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake new file mode 100644 index 0000000..d130e45 --- /dev/null +++ b/release/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalSubmit" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalSubmit.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.make new file mode 100644 index 0000000..4440172 --- /dev/null +++ b/release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalSubmit. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.ts new file mode 100644 index 0000000..7fa97b1 --- /dev/null +++ b/release/CMakeFiles/ExperimentalSubmit.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalSubmit. diff --git a/release/CMakeFiles/ExperimentalSubmit.dir/progress.make b/release/CMakeFiles/ExperimentalSubmit.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalSubmit.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalTest.dir/build.make b/release/CMakeFiles/ExperimentalTest.dir/build.make new file mode 100644 index 0000000..6d1fc95 --- /dev/null +++ b/release/CMakeFiles/ExperimentalTest.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalTest. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalTest.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalTest.dir/progress.make + +CMakeFiles/ExperimentalTest: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalTest + +ExperimentalTest: CMakeFiles/ExperimentalTest +ExperimentalTest: CMakeFiles/ExperimentalTest.dir/build.make +.PHONY : ExperimentalTest + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalTest.dir/build: ExperimentalTest +.PHONY : CMakeFiles/ExperimentalTest.dir/build + +CMakeFiles/ExperimentalTest.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalTest.dir/clean + +CMakeFiles/ExperimentalTest.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalTest.dir/depend + diff --git a/release/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake new file mode 100644 index 0000000..4348aa3 --- /dev/null +++ b/release/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalTest" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalTest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalTest.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalTest.dir/compiler_depend.make new file mode 100644 index 0000000..fab28a9 --- /dev/null +++ b/release/CMakeFiles/ExperimentalTest.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalTest. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalTest.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalTest.dir/compiler_depend.ts new file mode 100644 index 0000000..fbeb091 --- /dev/null +++ b/release/CMakeFiles/ExperimentalTest.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalTest. diff --git a/release/CMakeFiles/ExperimentalTest.dir/progress.make b/release/CMakeFiles/ExperimentalTest.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalTest.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake b/release/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/ExperimentalUpdate.dir/build.make b/release/CMakeFiles/ExperimentalUpdate.dir/build.make new file mode 100644 index 0000000..a722528 --- /dev/null +++ b/release/CMakeFiles/ExperimentalUpdate.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for ExperimentalUpdate. + +# Include any custom commands dependencies for this target. +include CMakeFiles/ExperimentalUpdate.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalUpdate.dir/progress.make + +CMakeFiles/ExperimentalUpdate: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D ExperimentalUpdate + +ExperimentalUpdate: CMakeFiles/ExperimentalUpdate +ExperimentalUpdate: CMakeFiles/ExperimentalUpdate.dir/build.make +.PHONY : ExperimentalUpdate + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalUpdate.dir/build: ExperimentalUpdate +.PHONY : CMakeFiles/ExperimentalUpdate.dir/build + +CMakeFiles/ExperimentalUpdate.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalUpdate.dir/clean + +CMakeFiles/ExperimentalUpdate.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/ExperimentalUpdate.dir/depend + diff --git a/release/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake b/release/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake new file mode 100644 index 0000000..2319049 --- /dev/null +++ b/release/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalUpdate" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalUpdate.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.make b/release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.make new file mode 100644 index 0000000..30e8f2c --- /dev/null +++ b/release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for ExperimentalUpdate. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.ts b/release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.ts new file mode 100644 index 0000000..aa7a97e --- /dev/null +++ b/release/CMakeFiles/ExperimentalUpdate.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for ExperimentalUpdate. diff --git a/release/CMakeFiles/ExperimentalUpdate.dir/progress.make b/release/CMakeFiles/ExperimentalUpdate.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/ExperimentalUpdate.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/FindMPI/test_mpi_C.bin b/release/CMakeFiles/FindMPI/test_mpi_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..977d26e2062b7b00a917b45dfa2f946f9bbd2176 GIT binary patch literal 79600 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 literal 0 HcmV?d00001 diff --git a/release/CMakeFiles/Makefile.cmake b/release/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..2eb2360 --- /dev/null +++ b/release/CMakeFiles/Makefile.cmake @@ -0,0 +1,266 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCCompiler.cmake.in" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCCompilerABI.c" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCInformation.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompiler.cmake.in" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDACompilerABI.cu" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCUDAInformation.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCommonLanguageInclude.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeCompilerIdDetection.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCUDACompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompileFeatures.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompilerABI.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineCompilerId.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeDetermineSystem.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeFindBinUtils.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeGenericSystem.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeInitializeConfigs.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeLanguageInformation.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeParseImplicitLinkInfo.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeParseLibraryArchitecture.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeSystem.cmake.in" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeSystemSpecificInformation.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeSystemSpecificInitialize.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCUDACompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeTestCompilerCommon.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CMakeUnixFindMake.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CTest.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CTestTargets.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CTestUseLaunchers.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/CUDA/architectures.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/GNU-C.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/GNU-FindBinUtils.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/GNU.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/NVIDIA-CUDA.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/TI-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Tasking-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/DartConfiguration.tcl.in" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/FindMPI.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/FindPackageMessage.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/FindPkgConfig.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Internal/FeatureTesting.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Platform/Linux-GNU-C.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Platform/Linux-GNU.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Platform/Linux-Initialize.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Platform/Linux.cmake" + "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/share/cmake-3.27/Modules/Platform/UnixPaths.cmake" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/CMakeLists.txt" + "CMakeFiles/3.27.7/CMakeCCompiler.cmake" + "CMakeFiles/3.27.7/CMakeCUDACompiler.cmake" + "CMakeFiles/3.27.7/CMakeSystem.cmake" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/functions/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/geometry/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/initializations/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/kernels/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/metrics/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/readers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/receivers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/sources/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/vtk/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/buffers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/grid/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/interpolation/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/mpi/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/readers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/accuracy/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/geometry/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/mapping/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/metrics/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/readers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/receivers/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tests/topography/sources/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tools/CMakeLists.txt" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/tools/write_grid/CMakeLists.txt" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.27.7/CMakeSystem.cmake" + "CMakeFiles/3.27.7/CMakeCCompiler.cmake" + "CMakeFiles/3.27.7/CMakeCUDACompiler.cmake" + "CMakeFiles/3.27.7/CMakeCCompiler.cmake" + "CMakeFiles/3.27.7/CMakeCUDACompiler.cmake" + "DartConfiguration.tcl" + "CMakeFiles/CMakeDirectoryInformation.cmake" + "src/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/awp/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/kernels/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/initializations/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/metrics/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/readers/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/geometry/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/sources/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/receivers/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/topography/functions/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/argparse/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/mpi/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/interpolation/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/buffers/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/readers/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/vtk/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/test/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/checksum/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/grid/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/metrics/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/readers/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/geometry/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/sources/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/receivers/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/accuracy/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/topography/mapping/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/buffers/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/grid/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/mpi/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/interpolation/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/readers/CMakeFiles/CMakeDirectoryInformation.cmake" + "tools/CMakeFiles/CMakeDirectoryInformation.cmake" + "tools/write_grid/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/Experimental.dir/DependInfo.cmake" + "CMakeFiles/Nightly.dir/DependInfo.cmake" + "CMakeFiles/Continuous.dir/DependInfo.cmake" + "CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake" + "CMakeFiles/NightlyStart.dir/DependInfo.cmake" + "CMakeFiles/NightlyUpdate.dir/DependInfo.cmake" + "CMakeFiles/NightlyConfigure.dir/DependInfo.cmake" + "CMakeFiles/NightlyBuild.dir/DependInfo.cmake" + "CMakeFiles/NightlyTest.dir/DependInfo.cmake" + "CMakeFiles/NightlyCoverage.dir/DependInfo.cmake" + "CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake" + "CMakeFiles/NightlySubmit.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalStart.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalTest.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake" + "CMakeFiles/ContinuousStart.dir/DependInfo.cmake" + "CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake" + "CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake" + "CMakeFiles/ContinuousBuild.dir/DependInfo.cmake" + "CMakeFiles/ContinuousTest.dir/DependInfo.cmake" + "CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake" + "CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake" + "CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake" + "src/awp/CMakeFiles/awp.dir/DependInfo.cmake" + "src/awp/CMakeFiles/error.dir/DependInfo.cmake" + "src/awp/CMakeFiles/lpmcl3d.dir/DependInfo.cmake" + "src/awp/CMakeFiles/pmcl3d.dir/DependInfo.cmake" + "src/topography/CMakeFiles/mapping.dir/DependInfo.cmake" + "src/topography/CMakeFiles/topography.dir/DependInfo.cmake" + "src/topography/CMakeFiles/topography_no_bc.dir/DependInfo.cmake" + "src/topography/initializations/CMakeFiles/topography_initializations.dir/DependInfo.cmake" + "src/topography/metrics/CMakeFiles/metrics.dir/DependInfo.cmake" + "src/topography/readers/CMakeFiles/topography_readers.dir/DependInfo.cmake" + "src/topography/geometry/CMakeFiles/geometry.dir/DependInfo.cmake" + "src/topography/sources/CMakeFiles/topography_sources.dir/DependInfo.cmake" + "src/topography/receivers/CMakeFiles/topography_receivers.dir/DependInfo.cmake" + "src/topography/functions/CMakeFiles/functions.dir/DependInfo.cmake" + "src/argparse/CMakeFiles/argparse.dir/DependInfo.cmake" + "src/mpi/CMakeFiles/mpi.dir/DependInfo.cmake" + "src/interpolation/CMakeFiles/interpolation.dir/DependInfo.cmake" + "src/buffers/CMakeFiles/buffers.dir/DependInfo.cmake" + "src/readers/CMakeFiles/readers.dir/DependInfo.cmake" + "src/vtk/CMakeFiles/vtk.dir/DependInfo.cmake" + "src/test/CMakeFiles/testing.dir/DependInfo.cmake" + "src/checksum/CMakeFiles/checksum.dir/DependInfo.cmake" + "src/grid/CMakeFiles/grid.dir/DependInfo.cmake" + "tests/CMakeFiles/test_attenuation.dir/DependInfo.cmake" + "tests/topography/metrics/CMakeFiles/test_metrics.dir/DependInfo.cmake" + "tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/DependInfo.cmake" + "tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/DependInfo.cmake" + "tests/topography/sources/CMakeFiles/test_topography_sources.dir/DependInfo.cmake" + "tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/DependInfo.cmake" + "tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/DependInfo.cmake" + "tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/DependInfo.cmake" + "tests/topography/accuracy/CMakeFiles/test_convergence.dir/DependInfo.cmake" + "tests/topography/mapping/CMakeFiles/test_mapping.dir/DependInfo.cmake" + "tests/buffers/CMakeFiles/test_buffer.dir/DependInfo.cmake" + "tests/grid/CMakeFiles/test_grid_3d.dir/DependInfo.cmake" + "tests/mpi/CMakeFiles/test_indexed.dir/DependInfo.cmake" + "tests/mpi/CMakeFiles/test_mpi_io.dir/DependInfo.cmake" + "tests/interpolation/CMakeFiles/test_interpolation.dir/DependInfo.cmake" + "tests/interpolation/CMakeFiles/test_interpolationcu.dir/DependInfo.cmake" + "tests/interpolation/CMakeFiles/test_lagrange.dir/DependInfo.cmake" + "tests/readers/CMakeFiles/test_input.dir/DependInfo.cmake" + "tests/readers/CMakeFiles/test_version.dir/DependInfo.cmake" + "tools/write_grid/CMakeFiles/write_grid.dir/DependInfo.cmake" + ) diff --git a/release/CMakeFiles/Makefile2 b/release/CMakeFiles/Makefile2 new file mode 100644 index 0000000..e30970a --- /dev/null +++ b/release/CMakeFiles/Makefile2 @@ -0,0 +1,2832 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: src/all +all: tests/all +all: tools/all +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: src/preinstall +preinstall: tests/preinstall +preinstall: tools/preinstall +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/Experimental.dir/clean +clean: CMakeFiles/Nightly.dir/clean +clean: CMakeFiles/Continuous.dir/clean +clean: CMakeFiles/NightlyMemoryCheck.dir/clean +clean: CMakeFiles/NightlyStart.dir/clean +clean: CMakeFiles/NightlyUpdate.dir/clean +clean: CMakeFiles/NightlyConfigure.dir/clean +clean: CMakeFiles/NightlyBuild.dir/clean +clean: CMakeFiles/NightlyTest.dir/clean +clean: CMakeFiles/NightlyCoverage.dir/clean +clean: CMakeFiles/NightlyMemCheck.dir/clean +clean: CMakeFiles/NightlySubmit.dir/clean +clean: CMakeFiles/ExperimentalStart.dir/clean +clean: CMakeFiles/ExperimentalUpdate.dir/clean +clean: CMakeFiles/ExperimentalConfigure.dir/clean +clean: CMakeFiles/ExperimentalBuild.dir/clean +clean: CMakeFiles/ExperimentalTest.dir/clean +clean: CMakeFiles/ExperimentalCoverage.dir/clean +clean: CMakeFiles/ExperimentalMemCheck.dir/clean +clean: CMakeFiles/ExperimentalSubmit.dir/clean +clean: CMakeFiles/ContinuousStart.dir/clean +clean: CMakeFiles/ContinuousUpdate.dir/clean +clean: CMakeFiles/ContinuousConfigure.dir/clean +clean: CMakeFiles/ContinuousBuild.dir/clean +clean: CMakeFiles/ContinuousTest.dir/clean +clean: CMakeFiles/ContinuousCoverage.dir/clean +clean: CMakeFiles/ContinuousMemCheck.dir/clean +clean: CMakeFiles/ContinuousSubmit.dir/clean +clean: src/clean +clean: tests/clean +clean: tools/clean +.PHONY : clean + +#============================================================================= +# Directory level rules for directory src + +# Recursive "all" directory target. +src/all: src/awp/all +src/all: src/topography/all +src/all: src/argparse/all +src/all: src/mpi/all +src/all: src/interpolation/all +src/all: src/buffers/all +src/all: src/readers/all +src/all: src/vtk/all +src/all: src/test/all +src/all: src/checksum/all +src/all: src/grid/all +.PHONY : src/all + +# Recursive "preinstall" directory target. +src/preinstall: src/awp/preinstall +src/preinstall: src/topography/preinstall +src/preinstall: src/argparse/preinstall +src/preinstall: src/mpi/preinstall +src/preinstall: src/interpolation/preinstall +src/preinstall: src/buffers/preinstall +src/preinstall: src/readers/preinstall +src/preinstall: src/vtk/preinstall +src/preinstall: src/test/preinstall +src/preinstall: src/checksum/preinstall +src/preinstall: src/grid/preinstall +.PHONY : src/preinstall + +# Recursive "clean" directory target. +src/clean: src/awp/clean +src/clean: src/topography/clean +src/clean: src/argparse/clean +src/clean: src/mpi/clean +src/clean: src/interpolation/clean +src/clean: src/buffers/clean +src/clean: src/readers/clean +src/clean: src/vtk/clean +src/clean: src/test/clean +src/clean: src/checksum/clean +src/clean: src/grid/clean +.PHONY : src/clean + +#============================================================================= +# Directory level rules for directory src/argparse + +# Recursive "all" directory target. +src/argparse/all: src/argparse/CMakeFiles/argparse.dir/all +.PHONY : src/argparse/all + +# Recursive "preinstall" directory target. +src/argparse/preinstall: +.PHONY : src/argparse/preinstall + +# Recursive "clean" directory target. +src/argparse/clean: src/argparse/CMakeFiles/argparse.dir/clean +.PHONY : src/argparse/clean + +#============================================================================= +# Directory level rules for directory src/awp + +# Recursive "all" directory target. +src/awp/all: src/awp/CMakeFiles/awp.dir/all +src/awp/all: src/awp/CMakeFiles/error.dir/all +src/awp/all: src/awp/CMakeFiles/lpmcl3d.dir/all +src/awp/all: src/awp/CMakeFiles/pmcl3d.dir/all +.PHONY : src/awp/all + +# Recursive "preinstall" directory target. +src/awp/preinstall: +.PHONY : src/awp/preinstall + +# Recursive "clean" directory target. +src/awp/clean: src/awp/CMakeFiles/awp.dir/clean +src/awp/clean: src/awp/CMakeFiles/error.dir/clean +src/awp/clean: src/awp/CMakeFiles/lpmcl3d.dir/clean +src/awp/clean: src/awp/CMakeFiles/pmcl3d.dir/clean +.PHONY : src/awp/clean + +#============================================================================= +# Directory level rules for directory src/buffers + +# Recursive "all" directory target. +src/buffers/all: src/buffers/CMakeFiles/buffers.dir/all +.PHONY : src/buffers/all + +# Recursive "preinstall" directory target. +src/buffers/preinstall: +.PHONY : src/buffers/preinstall + +# Recursive "clean" directory target. +src/buffers/clean: src/buffers/CMakeFiles/buffers.dir/clean +.PHONY : src/buffers/clean + +#============================================================================= +# Directory level rules for directory src/checksum + +# Recursive "all" directory target. +src/checksum/all: src/checksum/CMakeFiles/checksum.dir/all +.PHONY : src/checksum/all + +# Recursive "preinstall" directory target. +src/checksum/preinstall: +.PHONY : src/checksum/preinstall + +# Recursive "clean" directory target. +src/checksum/clean: src/checksum/CMakeFiles/checksum.dir/clean +.PHONY : src/checksum/clean + +#============================================================================= +# Directory level rules for directory src/grid + +# Recursive "all" directory target. +src/grid/all: src/grid/CMakeFiles/grid.dir/all +.PHONY : src/grid/all + +# Recursive "preinstall" directory target. +src/grid/preinstall: +.PHONY : src/grid/preinstall + +# Recursive "clean" directory target. +src/grid/clean: src/grid/CMakeFiles/grid.dir/clean +.PHONY : src/grid/clean + +#============================================================================= +# Directory level rules for directory src/interpolation + +# Recursive "all" directory target. +src/interpolation/all: src/interpolation/CMakeFiles/interpolation.dir/all +.PHONY : src/interpolation/all + +# Recursive "preinstall" directory target. +src/interpolation/preinstall: +.PHONY : src/interpolation/preinstall + +# Recursive "clean" directory target. +src/interpolation/clean: src/interpolation/CMakeFiles/interpolation.dir/clean +.PHONY : src/interpolation/clean + +#============================================================================= +# Directory level rules for directory src/mpi + +# Recursive "all" directory target. +src/mpi/all: src/mpi/CMakeFiles/mpi.dir/all +.PHONY : src/mpi/all + +# Recursive "preinstall" directory target. +src/mpi/preinstall: +.PHONY : src/mpi/preinstall + +# Recursive "clean" directory target. +src/mpi/clean: src/mpi/CMakeFiles/mpi.dir/clean +.PHONY : src/mpi/clean + +#============================================================================= +# Directory level rules for directory src/readers + +# Recursive "all" directory target. +src/readers/all: src/readers/CMakeFiles/readers.dir/all +.PHONY : src/readers/all + +# Recursive "preinstall" directory target. +src/readers/preinstall: +.PHONY : src/readers/preinstall + +# Recursive "clean" directory target. +src/readers/clean: src/readers/CMakeFiles/readers.dir/clean +.PHONY : src/readers/clean + +#============================================================================= +# Directory level rules for directory src/test + +# Recursive "all" directory target. +src/test/all: src/test/CMakeFiles/testing.dir/all +.PHONY : src/test/all + +# Recursive "preinstall" directory target. +src/test/preinstall: +.PHONY : src/test/preinstall + +# Recursive "clean" directory target. +src/test/clean: src/test/CMakeFiles/testing.dir/clean +.PHONY : src/test/clean + +#============================================================================= +# Directory level rules for directory src/topography + +# Recursive "all" directory target. +src/topography/all: src/topography/CMakeFiles/mapping.dir/all +src/topography/all: src/topography/CMakeFiles/topography.dir/all +src/topography/all: src/topography/CMakeFiles/topography_no_bc.dir/all +src/topography/all: src/topography/kernels/all +src/topography/all: src/topography/initializations/all +src/topography/all: src/topography/metrics/all +src/topography/all: src/topography/readers/all +src/topography/all: src/topography/geometry/all +src/topography/all: src/topography/sources/all +src/topography/all: src/topography/receivers/all +src/topography/all: src/topography/functions/all +.PHONY : src/topography/all + +# Recursive "preinstall" directory target. +src/topography/preinstall: src/topography/kernels/preinstall +src/topography/preinstall: src/topography/initializations/preinstall +src/topography/preinstall: src/topography/metrics/preinstall +src/topography/preinstall: src/topography/readers/preinstall +src/topography/preinstall: src/topography/geometry/preinstall +src/topography/preinstall: src/topography/sources/preinstall +src/topography/preinstall: src/topography/receivers/preinstall +src/topography/preinstall: src/topography/functions/preinstall +.PHONY : src/topography/preinstall + +# Recursive "clean" directory target. +src/topography/clean: src/topography/CMakeFiles/mapping.dir/clean +src/topography/clean: src/topography/CMakeFiles/topography.dir/clean +src/topography/clean: src/topography/CMakeFiles/topography_no_bc.dir/clean +src/topography/clean: src/topography/kernels/clean +src/topography/clean: src/topography/initializations/clean +src/topography/clean: src/topography/metrics/clean +src/topography/clean: src/topography/readers/clean +src/topography/clean: src/topography/geometry/clean +src/topography/clean: src/topography/sources/clean +src/topography/clean: src/topography/receivers/clean +src/topography/clean: src/topography/functions/clean +.PHONY : src/topography/clean + +#============================================================================= +# Directory level rules for directory src/topography/functions + +# Recursive "all" directory target. +src/topography/functions/all: src/topography/functions/CMakeFiles/functions.dir/all +.PHONY : src/topography/functions/all + +# Recursive "preinstall" directory target. +src/topography/functions/preinstall: +.PHONY : src/topography/functions/preinstall + +# Recursive "clean" directory target. +src/topography/functions/clean: src/topography/functions/CMakeFiles/functions.dir/clean +.PHONY : src/topography/functions/clean + +#============================================================================= +# Directory level rules for directory src/topography/geometry + +# Recursive "all" directory target. +src/topography/geometry/all: src/topography/geometry/CMakeFiles/geometry.dir/all +.PHONY : src/topography/geometry/all + +# Recursive "preinstall" directory target. +src/topography/geometry/preinstall: +.PHONY : src/topography/geometry/preinstall + +# Recursive "clean" directory target. +src/topography/geometry/clean: src/topography/geometry/CMakeFiles/geometry.dir/clean +.PHONY : src/topography/geometry/clean + +#============================================================================= +# Directory level rules for directory src/topography/initializations + +# Recursive "all" directory target. +src/topography/initializations/all: src/topography/initializations/CMakeFiles/topography_initializations.dir/all +.PHONY : src/topography/initializations/all + +# Recursive "preinstall" directory target. +src/topography/initializations/preinstall: +.PHONY : src/topography/initializations/preinstall + +# Recursive "clean" directory target. +src/topography/initializations/clean: src/topography/initializations/CMakeFiles/topography_initializations.dir/clean +.PHONY : src/topography/initializations/clean + +#============================================================================= +# Directory level rules for directory src/topography/kernels + +# Recursive "all" directory target. +src/topography/kernels/all: +.PHONY : src/topography/kernels/all + +# Recursive "preinstall" directory target. +src/topography/kernels/preinstall: +.PHONY : src/topography/kernels/preinstall + +# Recursive "clean" directory target. +src/topography/kernels/clean: +.PHONY : src/topography/kernels/clean + +#============================================================================= +# Directory level rules for directory src/topography/metrics + +# Recursive "all" directory target. +src/topography/metrics/all: src/topography/metrics/CMakeFiles/metrics.dir/all +.PHONY : src/topography/metrics/all + +# Recursive "preinstall" directory target. +src/topography/metrics/preinstall: +.PHONY : src/topography/metrics/preinstall + +# Recursive "clean" directory target. +src/topography/metrics/clean: src/topography/metrics/CMakeFiles/metrics.dir/clean +.PHONY : src/topography/metrics/clean + +#============================================================================= +# Directory level rules for directory src/topography/readers + +# Recursive "all" directory target. +src/topography/readers/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +.PHONY : src/topography/readers/all + +# Recursive "preinstall" directory target. +src/topography/readers/preinstall: +.PHONY : src/topography/readers/preinstall + +# Recursive "clean" directory target. +src/topography/readers/clean: src/topography/readers/CMakeFiles/topography_readers.dir/clean +.PHONY : src/topography/readers/clean + +#============================================================================= +# Directory level rules for directory src/topography/receivers + +# Recursive "all" directory target. +src/topography/receivers/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +.PHONY : src/topography/receivers/all + +# Recursive "preinstall" directory target. +src/topography/receivers/preinstall: +.PHONY : src/topography/receivers/preinstall + +# Recursive "clean" directory target. +src/topography/receivers/clean: src/topography/receivers/CMakeFiles/topography_receivers.dir/clean +.PHONY : src/topography/receivers/clean + +#============================================================================= +# Directory level rules for directory src/topography/sources + +# Recursive "all" directory target. +src/topography/sources/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +.PHONY : src/topography/sources/all + +# Recursive "preinstall" directory target. +src/topography/sources/preinstall: +.PHONY : src/topography/sources/preinstall + +# Recursive "clean" directory target. +src/topography/sources/clean: src/topography/sources/CMakeFiles/topography_sources.dir/clean +.PHONY : src/topography/sources/clean + +#============================================================================= +# Directory level rules for directory src/vtk + +# Recursive "all" directory target. +src/vtk/all: src/vtk/CMakeFiles/vtk.dir/all +.PHONY : src/vtk/all + +# Recursive "preinstall" directory target. +src/vtk/preinstall: +.PHONY : src/vtk/preinstall + +# Recursive "clean" directory target. +src/vtk/clean: src/vtk/CMakeFiles/vtk.dir/clean +.PHONY : src/vtk/clean + +#============================================================================= +# Directory level rules for directory tests + +# Recursive "all" directory target. +tests/all: tests/CMakeFiles/test_attenuation.dir/all +tests/all: tests/topography/all +tests/all: tests/buffers/all +tests/all: tests/grid/all +tests/all: tests/mpi/all +tests/all: tests/interpolation/all +tests/all: tests/readers/all +.PHONY : tests/all + +# Recursive "preinstall" directory target. +tests/preinstall: tests/topography/preinstall +tests/preinstall: tests/buffers/preinstall +tests/preinstall: tests/grid/preinstall +tests/preinstall: tests/mpi/preinstall +tests/preinstall: tests/interpolation/preinstall +tests/preinstall: tests/readers/preinstall +.PHONY : tests/preinstall + +# Recursive "clean" directory target. +tests/clean: tests/CMakeFiles/test_attenuation.dir/clean +tests/clean: tests/topography/clean +tests/clean: tests/buffers/clean +tests/clean: tests/grid/clean +tests/clean: tests/mpi/clean +tests/clean: tests/interpolation/clean +tests/clean: tests/readers/clean +.PHONY : tests/clean + +#============================================================================= +# Directory level rules for directory tests/buffers + +# Recursive "all" directory target. +tests/buffers/all: tests/buffers/CMakeFiles/test_buffer.dir/all +.PHONY : tests/buffers/all + +# Recursive "preinstall" directory target. +tests/buffers/preinstall: +.PHONY : tests/buffers/preinstall + +# Recursive "clean" directory target. +tests/buffers/clean: tests/buffers/CMakeFiles/test_buffer.dir/clean +.PHONY : tests/buffers/clean + +#============================================================================= +# Directory level rules for directory tests/grid + +# Recursive "all" directory target. +tests/grid/all: tests/grid/CMakeFiles/test_grid_3d.dir/all +.PHONY : tests/grid/all + +# Recursive "preinstall" directory target. +tests/grid/preinstall: +.PHONY : tests/grid/preinstall + +# Recursive "clean" directory target. +tests/grid/clean: tests/grid/CMakeFiles/test_grid_3d.dir/clean +.PHONY : tests/grid/clean + +#============================================================================= +# Directory level rules for directory tests/interpolation + +# Recursive "all" directory target. +tests/interpolation/all: tests/interpolation/CMakeFiles/test_interpolation.dir/all +tests/interpolation/all: tests/interpolation/CMakeFiles/test_interpolationcu.dir/all +tests/interpolation/all: tests/interpolation/CMakeFiles/test_lagrange.dir/all +.PHONY : tests/interpolation/all + +# Recursive "preinstall" directory target. +tests/interpolation/preinstall: +.PHONY : tests/interpolation/preinstall + +# Recursive "clean" directory target. +tests/interpolation/clean: tests/interpolation/CMakeFiles/test_interpolation.dir/clean +tests/interpolation/clean: tests/interpolation/CMakeFiles/test_interpolationcu.dir/clean +tests/interpolation/clean: tests/interpolation/CMakeFiles/test_lagrange.dir/clean +.PHONY : tests/interpolation/clean + +#============================================================================= +# Directory level rules for directory tests/mpi + +# Recursive "all" directory target. +tests/mpi/all: tests/mpi/CMakeFiles/test_indexed.dir/all +tests/mpi/all: tests/mpi/CMakeFiles/test_mpi_io.dir/all +.PHONY : tests/mpi/all + +# Recursive "preinstall" directory target. +tests/mpi/preinstall: +.PHONY : tests/mpi/preinstall + +# Recursive "clean" directory target. +tests/mpi/clean: tests/mpi/CMakeFiles/test_indexed.dir/clean +tests/mpi/clean: tests/mpi/CMakeFiles/test_mpi_io.dir/clean +.PHONY : tests/mpi/clean + +#============================================================================= +# Directory level rules for directory tests/readers + +# Recursive "all" directory target. +tests/readers/all: tests/readers/CMakeFiles/test_input.dir/all +tests/readers/all: tests/readers/CMakeFiles/test_version.dir/all +.PHONY : tests/readers/all + +# Recursive "preinstall" directory target. +tests/readers/preinstall: +.PHONY : tests/readers/preinstall + +# Recursive "clean" directory target. +tests/readers/clean: tests/readers/CMakeFiles/test_input.dir/clean +tests/readers/clean: tests/readers/CMakeFiles/test_version.dir/clean +.PHONY : tests/readers/clean + +#============================================================================= +# Directory level rules for directory tests/topography + +# Recursive "all" directory target. +tests/topography/all: tests/topography/metrics/all +tests/topography/all: tests/topography/readers/all +tests/topography/all: tests/topography/geometry/all +tests/topography/all: tests/topography/sources/all +tests/topography/all: tests/topography/receivers/all +tests/topography/all: tests/topography/accuracy/all +tests/topography/all: tests/topography/mapping/all +.PHONY : tests/topography/all + +# Recursive "preinstall" directory target. +tests/topography/preinstall: tests/topography/metrics/preinstall +tests/topography/preinstall: tests/topography/readers/preinstall +tests/topography/preinstall: tests/topography/geometry/preinstall +tests/topography/preinstall: tests/topography/sources/preinstall +tests/topography/preinstall: tests/topography/receivers/preinstall +tests/topography/preinstall: tests/topography/accuracy/preinstall +tests/topography/preinstall: tests/topography/mapping/preinstall +.PHONY : tests/topography/preinstall + +# Recursive "clean" directory target. +tests/topography/clean: tests/topography/metrics/clean +tests/topography/clean: tests/topography/readers/clean +tests/topography/clean: tests/topography/geometry/clean +tests/topography/clean: tests/topography/sources/clean +tests/topography/clean: tests/topography/receivers/clean +tests/topography/clean: tests/topography/accuracy/clean +tests/topography/clean: tests/topography/mapping/clean +.PHONY : tests/topography/clean + +#============================================================================= +# Directory level rules for directory tests/topography/accuracy + +# Recursive "all" directory target. +tests/topography/accuracy/all: tests/topography/accuracy/CMakeFiles/test_convergence.dir/all +.PHONY : tests/topography/accuracy/all + +# Recursive "preinstall" directory target. +tests/topography/accuracy/preinstall: +.PHONY : tests/topography/accuracy/preinstall + +# Recursive "clean" directory target. +tests/topography/accuracy/clean: tests/topography/accuracy/CMakeFiles/test_convergence.dir/clean +.PHONY : tests/topography/accuracy/clean + +#============================================================================= +# Directory level rules for directory tests/topography/geometry + +# Recursive "all" directory target. +tests/topography/geometry/all: tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all +.PHONY : tests/topography/geometry/all + +# Recursive "preinstall" directory target. +tests/topography/geometry/preinstall: +.PHONY : tests/topography/geometry/preinstall + +# Recursive "clean" directory target. +tests/topography/geometry/clean: tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/clean +.PHONY : tests/topography/geometry/clean + +#============================================================================= +# Directory level rules for directory tests/topography/mapping + +# Recursive "all" directory target. +tests/topography/mapping/all: tests/topography/mapping/CMakeFiles/test_mapping.dir/all +.PHONY : tests/topography/mapping/all + +# Recursive "preinstall" directory target. +tests/topography/mapping/preinstall: +.PHONY : tests/topography/mapping/preinstall + +# Recursive "clean" directory target. +tests/topography/mapping/clean: tests/topography/mapping/CMakeFiles/test_mapping.dir/clean +.PHONY : tests/topography/mapping/clean + +#============================================================================= +# Directory level rules for directory tests/topography/metrics + +# Recursive "all" directory target. +tests/topography/metrics/all: tests/topography/metrics/CMakeFiles/test_metrics.dir/all +.PHONY : tests/topography/metrics/all + +# Recursive "preinstall" directory target. +tests/topography/metrics/preinstall: +.PHONY : tests/topography/metrics/preinstall + +# Recursive "clean" directory target. +tests/topography/metrics/clean: tests/topography/metrics/CMakeFiles/test_metrics.dir/clean +.PHONY : tests/topography/metrics/clean + +#============================================================================= +# Directory level rules for directory tests/topography/readers + +# Recursive "all" directory target. +tests/topography/readers/all: tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all +.PHONY : tests/topography/readers/all + +# Recursive "preinstall" directory target. +tests/topography/readers/preinstall: +.PHONY : tests/topography/readers/preinstall + +# Recursive "clean" directory target. +tests/topography/readers/clean: tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/clean +.PHONY : tests/topography/readers/clean + +#============================================================================= +# Directory level rules for directory tests/topography/receivers + +# Recursive "all" directory target. +tests/topography/receivers/all: tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all +.PHONY : tests/topography/receivers/all + +# Recursive "preinstall" directory target. +tests/topography/receivers/preinstall: +.PHONY : tests/topography/receivers/preinstall + +# Recursive "clean" directory target. +tests/topography/receivers/clean: tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/clean +.PHONY : tests/topography/receivers/clean + +#============================================================================= +# Directory level rules for directory tests/topography/sources + +# Recursive "all" directory target. +tests/topography/sources/all: tests/topography/sources/CMakeFiles/test_topography_sources.dir/all +tests/topography/sources/all: tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all +tests/topography/sources/all: tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all +.PHONY : tests/topography/sources/all + +# Recursive "preinstall" directory target. +tests/topography/sources/preinstall: +.PHONY : tests/topography/sources/preinstall + +# Recursive "clean" directory target. +tests/topography/sources/clean: tests/topography/sources/CMakeFiles/test_topography_sources.dir/clean +tests/topography/sources/clean: tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/clean +tests/topography/sources/clean: tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/clean +.PHONY : tests/topography/sources/clean + +#============================================================================= +# Directory level rules for directory tools + +# Recursive "all" directory target. +tools/all: tools/write_grid/all +.PHONY : tools/all + +# Recursive "preinstall" directory target. +tools/preinstall: tools/write_grid/preinstall +.PHONY : tools/preinstall + +# Recursive "clean" directory target. +tools/clean: tools/write_grid/clean +.PHONY : tools/clean + +#============================================================================= +# Directory level rules for directory tools/write_grid + +# Recursive "all" directory target. +tools/write_grid/all: tools/write_grid/CMakeFiles/write_grid.dir/all +.PHONY : tools/write_grid/all + +# Recursive "preinstall" directory target. +tools/write_grid/preinstall: +.PHONY : tools/write_grid/preinstall + +# Recursive "clean" directory target. +tools/write_grid/clean: tools/write_grid/CMakeFiles/write_grid.dir/clean +.PHONY : tools/write_grid/clean + +#============================================================================= +# Target rules for target CMakeFiles/Experimental.dir + +# All Build rule for target. +CMakeFiles/Experimental.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target Experimental" +.PHONY : CMakeFiles/Experimental.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/Experimental.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/Experimental.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/Experimental.dir/rule + +# Convenience name for target. +Experimental: CMakeFiles/Experimental.dir/rule +.PHONY : Experimental + +# clean rule for target. +CMakeFiles/Experimental.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/clean +.PHONY : CMakeFiles/Experimental.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/Nightly.dir + +# All Build rule for target. +CMakeFiles/Nightly.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target Nightly" +.PHONY : CMakeFiles/Nightly.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/Nightly.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/Nightly.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/Nightly.dir/rule + +# Convenience name for target. +Nightly: CMakeFiles/Nightly.dir/rule +.PHONY : Nightly + +# clean rule for target. +CMakeFiles/Nightly.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/clean +.PHONY : CMakeFiles/Nightly.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/Continuous.dir + +# All Build rule for target. +CMakeFiles/Continuous.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target Continuous" +.PHONY : CMakeFiles/Continuous.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/Continuous.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/Continuous.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/Continuous.dir/rule + +# Convenience name for target. +Continuous: CMakeFiles/Continuous.dir/rule +.PHONY : Continuous + +# clean rule for target. +CMakeFiles/Continuous.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/clean +.PHONY : CMakeFiles/Continuous.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyMemoryCheck.dir + +# All Build rule for target. +CMakeFiles/NightlyMemoryCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyMemoryCheck" +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyMemoryCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyMemoryCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/rule + +# Convenience name for target. +NightlyMemoryCheck: CMakeFiles/NightlyMemoryCheck.dir/rule +.PHONY : NightlyMemoryCheck + +# clean rule for target. +CMakeFiles/NightlyMemoryCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/clean +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyStart.dir + +# All Build rule for target. +CMakeFiles/NightlyStart.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyStart" +.PHONY : CMakeFiles/NightlyStart.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyStart.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyStart.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyStart.dir/rule + +# Convenience name for target. +NightlyStart: CMakeFiles/NightlyStart.dir/rule +.PHONY : NightlyStart + +# clean rule for target. +CMakeFiles/NightlyStart.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/clean +.PHONY : CMakeFiles/NightlyStart.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyUpdate.dir + +# All Build rule for target. +CMakeFiles/NightlyUpdate.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyUpdate" +.PHONY : CMakeFiles/NightlyUpdate.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyUpdate.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyUpdate.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyUpdate.dir/rule + +# Convenience name for target. +NightlyUpdate: CMakeFiles/NightlyUpdate.dir/rule +.PHONY : NightlyUpdate + +# clean rule for target. +CMakeFiles/NightlyUpdate.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/clean +.PHONY : CMakeFiles/NightlyUpdate.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyConfigure.dir + +# All Build rule for target. +CMakeFiles/NightlyConfigure.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyConfigure" +.PHONY : CMakeFiles/NightlyConfigure.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyConfigure.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyConfigure.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyConfigure.dir/rule + +# Convenience name for target. +NightlyConfigure: CMakeFiles/NightlyConfigure.dir/rule +.PHONY : NightlyConfigure + +# clean rule for target. +CMakeFiles/NightlyConfigure.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/clean +.PHONY : CMakeFiles/NightlyConfigure.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyBuild.dir + +# All Build rule for target. +CMakeFiles/NightlyBuild.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyBuild" +.PHONY : CMakeFiles/NightlyBuild.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyBuild.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyBuild.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyBuild.dir/rule + +# Convenience name for target. +NightlyBuild: CMakeFiles/NightlyBuild.dir/rule +.PHONY : NightlyBuild + +# clean rule for target. +CMakeFiles/NightlyBuild.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/clean +.PHONY : CMakeFiles/NightlyBuild.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyTest.dir + +# All Build rule for target. +CMakeFiles/NightlyTest.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyTest" +.PHONY : CMakeFiles/NightlyTest.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyTest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyTest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyTest.dir/rule + +# Convenience name for target. +NightlyTest: CMakeFiles/NightlyTest.dir/rule +.PHONY : NightlyTest + +# clean rule for target. +CMakeFiles/NightlyTest.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/clean +.PHONY : CMakeFiles/NightlyTest.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyCoverage.dir + +# All Build rule for target. +CMakeFiles/NightlyCoverage.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyCoverage" +.PHONY : CMakeFiles/NightlyCoverage.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyCoverage.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyCoverage.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyCoverage.dir/rule + +# Convenience name for target. +NightlyCoverage: CMakeFiles/NightlyCoverage.dir/rule +.PHONY : NightlyCoverage + +# clean rule for target. +CMakeFiles/NightlyCoverage.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/clean +.PHONY : CMakeFiles/NightlyCoverage.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyMemCheck.dir + +# All Build rule for target. +CMakeFiles/NightlyMemCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlyMemCheck" +.PHONY : CMakeFiles/NightlyMemCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyMemCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyMemCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyMemCheck.dir/rule + +# Convenience name for target. +NightlyMemCheck: CMakeFiles/NightlyMemCheck.dir/rule +.PHONY : NightlyMemCheck + +# clean rule for target. +CMakeFiles/NightlyMemCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/clean +.PHONY : CMakeFiles/NightlyMemCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlySubmit.dir + +# All Build rule for target. +CMakeFiles/NightlySubmit.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target NightlySubmit" +.PHONY : CMakeFiles/NightlySubmit.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlySubmit.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlySubmit.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/NightlySubmit.dir/rule + +# Convenience name for target. +NightlySubmit: CMakeFiles/NightlySubmit.dir/rule +.PHONY : NightlySubmit + +# clean rule for target. +CMakeFiles/NightlySubmit.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/clean +.PHONY : CMakeFiles/NightlySubmit.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalStart.dir + +# All Build rule for target. +CMakeFiles/ExperimentalStart.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalStart" +.PHONY : CMakeFiles/ExperimentalStart.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalStart.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalStart.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalStart.dir/rule + +# Convenience name for target. +ExperimentalStart: CMakeFiles/ExperimentalStart.dir/rule +.PHONY : ExperimentalStart + +# clean rule for target. +CMakeFiles/ExperimentalStart.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/clean +.PHONY : CMakeFiles/ExperimentalStart.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalUpdate.dir + +# All Build rule for target. +CMakeFiles/ExperimentalUpdate.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalUpdate" +.PHONY : CMakeFiles/ExperimentalUpdate.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalUpdate.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalUpdate.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalUpdate.dir/rule + +# Convenience name for target. +ExperimentalUpdate: CMakeFiles/ExperimentalUpdate.dir/rule +.PHONY : ExperimentalUpdate + +# clean rule for target. +CMakeFiles/ExperimentalUpdate.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/clean +.PHONY : CMakeFiles/ExperimentalUpdate.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalConfigure.dir + +# All Build rule for target. +CMakeFiles/ExperimentalConfigure.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalConfigure" +.PHONY : CMakeFiles/ExperimentalConfigure.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalConfigure.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalConfigure.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalConfigure.dir/rule + +# Convenience name for target. +ExperimentalConfigure: CMakeFiles/ExperimentalConfigure.dir/rule +.PHONY : ExperimentalConfigure + +# clean rule for target. +CMakeFiles/ExperimentalConfigure.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/clean +.PHONY : CMakeFiles/ExperimentalConfigure.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalBuild.dir + +# All Build rule for target. +CMakeFiles/ExperimentalBuild.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalBuild" +.PHONY : CMakeFiles/ExperimentalBuild.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalBuild.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalBuild.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalBuild.dir/rule + +# Convenience name for target. +ExperimentalBuild: CMakeFiles/ExperimentalBuild.dir/rule +.PHONY : ExperimentalBuild + +# clean rule for target. +CMakeFiles/ExperimentalBuild.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/clean +.PHONY : CMakeFiles/ExperimentalBuild.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalTest.dir + +# All Build rule for target. +CMakeFiles/ExperimentalTest.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalTest" +.PHONY : CMakeFiles/ExperimentalTest.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalTest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalTest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalTest.dir/rule + +# Convenience name for target. +ExperimentalTest: CMakeFiles/ExperimentalTest.dir/rule +.PHONY : ExperimentalTest + +# clean rule for target. +CMakeFiles/ExperimentalTest.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/clean +.PHONY : CMakeFiles/ExperimentalTest.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalCoverage.dir + +# All Build rule for target. +CMakeFiles/ExperimentalCoverage.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalCoverage" +.PHONY : CMakeFiles/ExperimentalCoverage.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalCoverage.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalCoverage.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalCoverage.dir/rule + +# Convenience name for target. +ExperimentalCoverage: CMakeFiles/ExperimentalCoverage.dir/rule +.PHONY : ExperimentalCoverage + +# clean rule for target. +CMakeFiles/ExperimentalCoverage.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/clean +.PHONY : CMakeFiles/ExperimentalCoverage.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalMemCheck.dir + +# All Build rule for target. +CMakeFiles/ExperimentalMemCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalMemCheck" +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalMemCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalMemCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/rule + +# Convenience name for target. +ExperimentalMemCheck: CMakeFiles/ExperimentalMemCheck.dir/rule +.PHONY : ExperimentalMemCheck + +# clean rule for target. +CMakeFiles/ExperimentalMemCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/clean +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalSubmit.dir + +# All Build rule for target. +CMakeFiles/ExperimentalSubmit.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ExperimentalSubmit" +.PHONY : CMakeFiles/ExperimentalSubmit.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalSubmit.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalSubmit.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalSubmit.dir/rule + +# Convenience name for target. +ExperimentalSubmit: CMakeFiles/ExperimentalSubmit.dir/rule +.PHONY : ExperimentalSubmit + +# clean rule for target. +CMakeFiles/ExperimentalSubmit.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/clean +.PHONY : CMakeFiles/ExperimentalSubmit.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousStart.dir + +# All Build rule for target. +CMakeFiles/ContinuousStart.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousStart" +.PHONY : CMakeFiles/ContinuousStart.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousStart.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousStart.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousStart.dir/rule + +# Convenience name for target. +ContinuousStart: CMakeFiles/ContinuousStart.dir/rule +.PHONY : ContinuousStart + +# clean rule for target. +CMakeFiles/ContinuousStart.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/clean +.PHONY : CMakeFiles/ContinuousStart.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousUpdate.dir + +# All Build rule for target. +CMakeFiles/ContinuousUpdate.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousUpdate" +.PHONY : CMakeFiles/ContinuousUpdate.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousUpdate.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousUpdate.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousUpdate.dir/rule + +# Convenience name for target. +ContinuousUpdate: CMakeFiles/ContinuousUpdate.dir/rule +.PHONY : ContinuousUpdate + +# clean rule for target. +CMakeFiles/ContinuousUpdate.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/clean +.PHONY : CMakeFiles/ContinuousUpdate.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousConfigure.dir + +# All Build rule for target. +CMakeFiles/ContinuousConfigure.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousConfigure" +.PHONY : CMakeFiles/ContinuousConfigure.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousConfigure.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousConfigure.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousConfigure.dir/rule + +# Convenience name for target. +ContinuousConfigure: CMakeFiles/ContinuousConfigure.dir/rule +.PHONY : ContinuousConfigure + +# clean rule for target. +CMakeFiles/ContinuousConfigure.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/clean +.PHONY : CMakeFiles/ContinuousConfigure.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousBuild.dir + +# All Build rule for target. +CMakeFiles/ContinuousBuild.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousBuild" +.PHONY : CMakeFiles/ContinuousBuild.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousBuild.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousBuild.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousBuild.dir/rule + +# Convenience name for target. +ContinuousBuild: CMakeFiles/ContinuousBuild.dir/rule +.PHONY : ContinuousBuild + +# clean rule for target. +CMakeFiles/ContinuousBuild.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/clean +.PHONY : CMakeFiles/ContinuousBuild.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousTest.dir + +# All Build rule for target. +CMakeFiles/ContinuousTest.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousTest" +.PHONY : CMakeFiles/ContinuousTest.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousTest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousTest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousTest.dir/rule + +# Convenience name for target. +ContinuousTest: CMakeFiles/ContinuousTest.dir/rule +.PHONY : ContinuousTest + +# clean rule for target. +CMakeFiles/ContinuousTest.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/clean +.PHONY : CMakeFiles/ContinuousTest.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousCoverage.dir + +# All Build rule for target. +CMakeFiles/ContinuousCoverage.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousCoverage" +.PHONY : CMakeFiles/ContinuousCoverage.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousCoverage.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousCoverage.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousCoverage.dir/rule + +# Convenience name for target. +ContinuousCoverage: CMakeFiles/ContinuousCoverage.dir/rule +.PHONY : ContinuousCoverage + +# clean rule for target. +CMakeFiles/ContinuousCoverage.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/clean +.PHONY : CMakeFiles/ContinuousCoverage.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousMemCheck.dir + +# All Build rule for target. +CMakeFiles/ContinuousMemCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousMemCheck" +.PHONY : CMakeFiles/ContinuousMemCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousMemCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousMemCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousMemCheck.dir/rule + +# Convenience name for target. +ContinuousMemCheck: CMakeFiles/ContinuousMemCheck.dir/rule +.PHONY : ContinuousMemCheck + +# clean rule for target. +CMakeFiles/ContinuousMemCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/clean +.PHONY : CMakeFiles/ContinuousMemCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousSubmit.dir + +# All Build rule for target. +CMakeFiles/ContinuousSubmit.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num= "Built target ContinuousSubmit" +.PHONY : CMakeFiles/ContinuousSubmit.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousSubmit.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousSubmit.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousSubmit.dir/rule + +# Convenience name for target. +ContinuousSubmit: CMakeFiles/ContinuousSubmit.dir/rule +.PHONY : ContinuousSubmit + +# clean rule for target. +CMakeFiles/ContinuousSubmit.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/clean +.PHONY : CMakeFiles/ContinuousSubmit.dir/clean + +#============================================================================= +# Target rules for target src/awp/CMakeFiles/awp.dir + +# All Build rule for target. +src/awp/CMakeFiles/awp.dir/all: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/depend + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=2,3 "Built target awp" +.PHONY : src/awp/CMakeFiles/awp.dir/all + +# Build rule for subdir invocation for target. +src/awp/CMakeFiles/awp.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/awp.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/awp/CMakeFiles/awp.dir/rule + +# Convenience name for target. +awp: src/awp/CMakeFiles/awp.dir/rule +.PHONY : awp + +# clean rule for target. +src/awp/CMakeFiles/awp.dir/clean: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/clean +.PHONY : src/awp/CMakeFiles/awp.dir/clean + +#============================================================================= +# Target rules for target src/awp/CMakeFiles/error.dir + +# All Build rule for target. +src/awp/CMakeFiles/error.dir/all: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/depend + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=7,8 "Built target error" +.PHONY : src/awp/CMakeFiles/error.dir/all + +# Build rule for subdir invocation for target. +src/awp/CMakeFiles/error.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/error.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/awp/CMakeFiles/error.dir/rule + +# Convenience name for target. +error: src/awp/CMakeFiles/error.dir/rule +.PHONY : error + +# clean rule for target. +src/awp/CMakeFiles/error.dir/clean: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/clean +.PHONY : src/awp/CMakeFiles/error.dir/clean + +#============================================================================= +# Target rules for target src/awp/CMakeFiles/lpmcl3d.dir + +# All Build rule for target. +src/awp/CMakeFiles/lpmcl3d.dir/all: src/awp/CMakeFiles/error.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/CMakeFiles/mapping.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/CMakeFiles/topography.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/mpi/CMakeFiles/mpi.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/buffers/CMakeFiles/buffers.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/readers/CMakeFiles/readers.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/vtk/CMakeFiles/vtk.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/checksum/CMakeFiles/checksum.dir/all +src/awp/CMakeFiles/lpmcl3d.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/depend + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=19,20,21,22,23,24,25,26,27 "Built target lpmcl3d" +.PHONY : src/awp/CMakeFiles/lpmcl3d.dir/all + +# Build rule for subdir invocation for target. +src/awp/CMakeFiles/lpmcl3d.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 52 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/lpmcl3d.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/awp/CMakeFiles/lpmcl3d.dir/rule + +# Convenience name for target. +lpmcl3d: src/awp/CMakeFiles/lpmcl3d.dir/rule +.PHONY : lpmcl3d + +# clean rule for target. +src/awp/CMakeFiles/lpmcl3d.dir/clean: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/clean +.PHONY : src/awp/CMakeFiles/lpmcl3d.dir/clean + +#============================================================================= +# Target rules for target src/awp/CMakeFiles/pmcl3d.dir + +# All Build rule for target. +src/awp/CMakeFiles/pmcl3d.dir/all: src/awp/CMakeFiles/error.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/awp/CMakeFiles/lpmcl3d.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/CMakeFiles/mapping.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/CMakeFiles/topography.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/mpi/CMakeFiles/mpi.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/buffers/CMakeFiles/buffers.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/readers/CMakeFiles/readers.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/vtk/CMakeFiles/vtk.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/checksum/CMakeFiles/checksum.dir/all +src/awp/CMakeFiles/pmcl3d.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/depend + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=36 "Built target pmcl3d" +.PHONY : src/awp/CMakeFiles/pmcl3d.dir/all + +# Build rule for subdir invocation for target. +src/awp/CMakeFiles/pmcl3d.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 53 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/pmcl3d.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/awp/CMakeFiles/pmcl3d.dir/rule + +# Convenience name for target. +pmcl3d: src/awp/CMakeFiles/pmcl3d.dir/rule +.PHONY : pmcl3d + +# clean rule for target. +src/awp/CMakeFiles/pmcl3d.dir/clean: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/clean +.PHONY : src/awp/CMakeFiles/pmcl3d.dir/clean + +#============================================================================= +# Target rules for target src/topography/CMakeFiles/mapping.dir + +# All Build rule for target. +src/topography/CMakeFiles/mapping.dir/all: + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/mapping.dir/build.make src/topography/CMakeFiles/mapping.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/mapping.dir/build.make src/topography/CMakeFiles/mapping.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=28,29 "Built target mapping" +.PHONY : src/topography/CMakeFiles/mapping.dir/all + +# Build rule for subdir invocation for target. +src/topography/CMakeFiles/mapping.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/CMakeFiles/mapping.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/CMakeFiles/mapping.dir/rule + +# Convenience name for target. +mapping: src/topography/CMakeFiles/mapping.dir/rule +.PHONY : mapping + +# clean rule for target. +src/topography/CMakeFiles/mapping.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/mapping.dir/build.make src/topography/CMakeFiles/mapping.dir/clean +.PHONY : src/topography/CMakeFiles/mapping.dir/clean + +#============================================================================= +# Target rules for target src/topography/CMakeFiles/topography.dir + +# All Build rule for target. +src/topography/CMakeFiles/topography.dir/all: src/awp/CMakeFiles/error.dir/all +src/topography/CMakeFiles/topography.dir/all: src/topography/CMakeFiles/mapping.dir/all +src/topography/CMakeFiles/topography.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +src/topography/CMakeFiles/topography.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +src/topography/CMakeFiles/topography.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +src/topography/CMakeFiles/topography.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +src/topography/CMakeFiles/topography.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +src/topography/CMakeFiles/topography.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/topography/CMakeFiles/topography.dir/all: src/mpi/CMakeFiles/mpi.dir/all +src/topography/CMakeFiles/topography.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +src/topography/CMakeFiles/topography.dir/all: src/buffers/CMakeFiles/buffers.dir/all +src/topography/CMakeFiles/topography.dir/all: src/readers/CMakeFiles/readers.dir/all +src/topography/CMakeFiles/topography.dir/all: src/vtk/CMakeFiles/vtk.dir/all +src/topography/CMakeFiles/topography.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography.dir/build.make src/topography/CMakeFiles/topography.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography.dir/build.make src/topography/CMakeFiles/topography.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=71,72,73,74,75,76,77 "Built target topography" +.PHONY : src/topography/CMakeFiles/topography.dir/all + +# Build rule for subdir invocation for target. +src/topography/CMakeFiles/topography.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/CMakeFiles/topography.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/CMakeFiles/topography.dir/rule + +# Convenience name for target. +topography: src/topography/CMakeFiles/topography.dir/rule +.PHONY : topography + +# clean rule for target. +src/topography/CMakeFiles/topography.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography.dir/build.make src/topography/CMakeFiles/topography.dir/clean +.PHONY : src/topography/CMakeFiles/topography.dir/clean + +#============================================================================= +# Target rules for target src/topography/CMakeFiles/topography_no_bc.dir + +# All Build rule for target. +src/topography/CMakeFiles/topography_no_bc.dir/all: src/awp/CMakeFiles/error.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/topography/CMakeFiles/mapping.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/mpi/CMakeFiles/mpi.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/buffers/CMakeFiles/buffers.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/readers/CMakeFiles/readers.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/vtk/CMakeFiles/vtk.dir/all +src/topography/CMakeFiles/topography_no_bc.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography_no_bc.dir/build.make src/topography/CMakeFiles/topography_no_bc.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography_no_bc.dir/build.make src/topography/CMakeFiles/topography_no_bc.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=82,83,84,85,86,87,88 "Built target topography_no_bc" +.PHONY : src/topography/CMakeFiles/topography_no_bc.dir/all + +# Build rule for subdir invocation for target. +src/topography/CMakeFiles/topography_no_bc.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/CMakeFiles/topography_no_bc.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/CMakeFiles/topography_no_bc.dir/rule + +# Convenience name for target. +topography_no_bc: src/topography/CMakeFiles/topography_no_bc.dir/rule +.PHONY : topography_no_bc + +# clean rule for target. +src/topography/CMakeFiles/topography_no_bc.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography_no_bc.dir/build.make src/topography/CMakeFiles/topography_no_bc.dir/clean +.PHONY : src/topography/CMakeFiles/topography_no_bc.dir/clean + +#============================================================================= +# Target rules for target src/topography/initializations/CMakeFiles/topography_initializations.dir + +# All Build rule for target. +src/topography/initializations/CMakeFiles/topography_initializations.dir/all: + $(MAKE) $(MAKESILENT) -f src/topography/initializations/CMakeFiles/topography_initializations.dir/build.make src/topography/initializations/CMakeFiles/topography_initializations.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/initializations/CMakeFiles/topography_initializations.dir/build.make src/topography/initializations/CMakeFiles/topography_initializations.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=78,79,80,81 "Built target topography_initializations" +.PHONY : src/topography/initializations/CMakeFiles/topography_initializations.dir/all + +# Build rule for subdir invocation for target. +src/topography/initializations/CMakeFiles/topography_initializations.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 4 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/initializations/CMakeFiles/topography_initializations.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/initializations/CMakeFiles/topography_initializations.dir/rule + +# Convenience name for target. +topography_initializations: src/topography/initializations/CMakeFiles/topography_initializations.dir/rule +.PHONY : topography_initializations + +# clean rule for target. +src/topography/initializations/CMakeFiles/topography_initializations.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/initializations/CMakeFiles/topography_initializations.dir/build.make src/topography/initializations/CMakeFiles/topography_initializations.dir/clean +.PHONY : src/topography/initializations/CMakeFiles/topography_initializations.dir/clean + +#============================================================================= +# Target rules for target src/topography/metrics/CMakeFiles/metrics.dir + +# All Build rule for target. +src/topography/metrics/CMakeFiles/metrics.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/topography/metrics/CMakeFiles/metrics.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +src/topography/metrics/CMakeFiles/metrics.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/topography/metrics/CMakeFiles/metrics.dir/build.make src/topography/metrics/CMakeFiles/metrics.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/metrics/CMakeFiles/metrics.dir/build.make src/topography/metrics/CMakeFiles/metrics.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=30,31,32 "Built target metrics" +.PHONY : src/topography/metrics/CMakeFiles/metrics.dir/all + +# Build rule for subdir invocation for target. +src/topography/metrics/CMakeFiles/metrics.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 12 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/metrics/CMakeFiles/metrics.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/metrics/CMakeFiles/metrics.dir/rule + +# Convenience name for target. +metrics: src/topography/metrics/CMakeFiles/metrics.dir/rule +.PHONY : metrics + +# clean rule for target. +src/topography/metrics/CMakeFiles/metrics.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/metrics/CMakeFiles/metrics.dir/build.make src/topography/metrics/CMakeFiles/metrics.dir/clean +.PHONY : src/topography/metrics/CMakeFiles/metrics.dir/clean + +#============================================================================= +# Target rules for target src/topography/readers/CMakeFiles/topography_readers.dir + +# All Build rule for target. +src/topography/readers/CMakeFiles/topography_readers.dir/all: + $(MAKE) $(MAKESILENT) -f src/topography/readers/CMakeFiles/topography_readers.dir/build.make src/topography/readers/CMakeFiles/topography_readers.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/readers/CMakeFiles/topography_readers.dir/build.make src/topography/readers/CMakeFiles/topography_readers.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=89,90 "Built target topography_readers" +.PHONY : src/topography/readers/CMakeFiles/topography_readers.dir/all + +# Build rule for subdir invocation for target. +src/topography/readers/CMakeFiles/topography_readers.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/readers/CMakeFiles/topography_readers.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/readers/CMakeFiles/topography_readers.dir/rule + +# Convenience name for target. +topography_readers: src/topography/readers/CMakeFiles/topography_readers.dir/rule +.PHONY : topography_readers + +# clean rule for target. +src/topography/readers/CMakeFiles/topography_readers.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/readers/CMakeFiles/topography_readers.dir/build.make src/topography/readers/CMakeFiles/topography_readers.dir/clean +.PHONY : src/topography/readers/CMakeFiles/topography_readers.dir/clean + +#============================================================================= +# Target rules for target src/topography/geometry/CMakeFiles/geometry.dir + +# All Build rule for target. +src/topography/geometry/CMakeFiles/geometry.dir/all: src/topography/CMakeFiles/mapping.dir/all +src/topography/geometry/CMakeFiles/geometry.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/topography/geometry/CMakeFiles/geometry.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/topography/geometry/CMakeFiles/geometry.dir/build.make src/topography/geometry/CMakeFiles/geometry.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/geometry/CMakeFiles/geometry.dir/build.make src/topography/geometry/CMakeFiles/geometry.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=12 "Built target geometry" +.PHONY : src/topography/geometry/CMakeFiles/geometry.dir/all + +# Build rule for subdir invocation for target. +src/topography/geometry/CMakeFiles/geometry.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 9 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/geometry/CMakeFiles/geometry.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/geometry/CMakeFiles/geometry.dir/rule + +# Convenience name for target. +geometry: src/topography/geometry/CMakeFiles/geometry.dir/rule +.PHONY : geometry + +# clean rule for target. +src/topography/geometry/CMakeFiles/geometry.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/geometry/CMakeFiles/geometry.dir/build.make src/topography/geometry/CMakeFiles/geometry.dir/clean +.PHONY : src/topography/geometry/CMakeFiles/geometry.dir/clean + +#============================================================================= +# Target rules for target src/topography/sources/CMakeFiles/topography_sources.dir + +# All Build rule for target. +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/topography/CMakeFiles/mapping.dir/all +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/mpi/CMakeFiles/mpi.dir/all +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/buffers/CMakeFiles/buffers.dir/all +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/readers/CMakeFiles/readers.dir/all +src/topography/sources/CMakeFiles/topography_sources.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/topography/sources/CMakeFiles/topography_sources.dir/build.make src/topography/sources/CMakeFiles/topography_sources.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/sources/CMakeFiles/topography_sources.dir/build.make src/topography/sources/CMakeFiles/topography_sources.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=94,95,96 "Built target topography_sources" +.PHONY : src/topography/sources/CMakeFiles/topography_sources.dir/all + +# Build rule for subdir invocation for target. +src/topography/sources/CMakeFiles/topography_sources.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 24 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/sources/CMakeFiles/topography_sources.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/sources/CMakeFiles/topography_sources.dir/rule + +# Convenience name for target. +topography_sources: src/topography/sources/CMakeFiles/topography_sources.dir/rule +.PHONY : topography_sources + +# clean rule for target. +src/topography/sources/CMakeFiles/topography_sources.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/sources/CMakeFiles/topography_sources.dir/build.make src/topography/sources/CMakeFiles/topography_sources.dir/clean +.PHONY : src/topography/sources/CMakeFiles/topography_sources.dir/clean + +#============================================================================= +# Target rules for target src/topography/receivers/CMakeFiles/topography_receivers.dir + +# All Build rule for target. +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/topography/CMakeFiles/mapping.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/mpi/CMakeFiles/mpi.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/buffers/CMakeFiles/buffers.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/readers/CMakeFiles/readers.dir/all +src/topography/receivers/CMakeFiles/topography_receivers.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/topography/receivers/CMakeFiles/topography_receivers.dir/build.make src/topography/receivers/CMakeFiles/topography_receivers.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/receivers/CMakeFiles/topography_receivers.dir/build.make src/topography/receivers/CMakeFiles/topography_receivers.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=91,92,93 "Built target topography_receivers" +.PHONY : src/topography/receivers/CMakeFiles/topography_receivers.dir/all + +# Build rule for subdir invocation for target. +src/topography/receivers/CMakeFiles/topography_receivers.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 27 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/receivers/CMakeFiles/topography_receivers.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/receivers/CMakeFiles/topography_receivers.dir/rule + +# Convenience name for target. +topography_receivers: src/topography/receivers/CMakeFiles/topography_receivers.dir/rule +.PHONY : topography_receivers + +# clean rule for target. +src/topography/receivers/CMakeFiles/topography_receivers.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/receivers/CMakeFiles/topography_receivers.dir/build.make src/topography/receivers/CMakeFiles/topography_receivers.dir/clean +.PHONY : src/topography/receivers/CMakeFiles/topography_receivers.dir/clean + +#============================================================================= +# Target rules for target src/topography/functions/CMakeFiles/functions.dir + +# All Build rule for target. +src/topography/functions/CMakeFiles/functions.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/topography/functions/CMakeFiles/functions.dir/build.make src/topography/functions/CMakeFiles/functions.dir/depend + $(MAKE) $(MAKESILENT) -f src/topography/functions/CMakeFiles/functions.dir/build.make src/topography/functions/CMakeFiles/functions.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=9,10,11 "Built target functions" +.PHONY : src/topography/functions/CMakeFiles/functions.dir/all + +# Build rule for subdir invocation for target. +src/topography/functions/CMakeFiles/functions.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 6 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/topography/functions/CMakeFiles/functions.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/topography/functions/CMakeFiles/functions.dir/rule + +# Convenience name for target. +functions: src/topography/functions/CMakeFiles/functions.dir/rule +.PHONY : functions + +# clean rule for target. +src/topography/functions/CMakeFiles/functions.dir/clean: + $(MAKE) $(MAKESILENT) -f src/topography/functions/CMakeFiles/functions.dir/build.make src/topography/functions/CMakeFiles/functions.dir/clean +.PHONY : src/topography/functions/CMakeFiles/functions.dir/clean + +#============================================================================= +# Target rules for target src/argparse/CMakeFiles/argparse.dir + +# All Build rule for target. +src/argparse/CMakeFiles/argparse.dir/all: + $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/depend + $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=1 "Built target argparse" +.PHONY : src/argparse/CMakeFiles/argparse.dir/all + +# Build rule for subdir invocation for target. +src/argparse/CMakeFiles/argparse.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 1 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/argparse/CMakeFiles/argparse.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/argparse/CMakeFiles/argparse.dir/rule + +# Convenience name for target. +argparse: src/argparse/CMakeFiles/argparse.dir/rule +.PHONY : argparse + +# clean rule for target. +src/argparse/CMakeFiles/argparse.dir/clean: + $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/clean +.PHONY : src/argparse/CMakeFiles/argparse.dir/clean + +#============================================================================= +# Target rules for target src/mpi/CMakeFiles/mpi.dir + +# All Build rule for target. +src/mpi/CMakeFiles/mpi.dir/all: + $(MAKE) $(MAKESILENT) -f src/mpi/CMakeFiles/mpi.dir/build.make src/mpi/CMakeFiles/mpi.dir/depend + $(MAKE) $(MAKESILENT) -f src/mpi/CMakeFiles/mpi.dir/build.make src/mpi/CMakeFiles/mpi.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=33,34,35 "Built target mpi" +.PHONY : src/mpi/CMakeFiles/mpi.dir/all + +# Build rule for subdir invocation for target. +src/mpi/CMakeFiles/mpi.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 3 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/mpi/CMakeFiles/mpi.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/mpi/CMakeFiles/mpi.dir/rule + +# Convenience name for target. +mpi: src/mpi/CMakeFiles/mpi.dir/rule +.PHONY : mpi + +# clean rule for target. +src/mpi/CMakeFiles/mpi.dir/clean: + $(MAKE) $(MAKESILENT) -f src/mpi/CMakeFiles/mpi.dir/build.make src/mpi/CMakeFiles/mpi.dir/clean +.PHONY : src/mpi/CMakeFiles/mpi.dir/clean + +#============================================================================= +# Target rules for target src/interpolation/CMakeFiles/interpolation.dir + +# All Build rule for target. +src/interpolation/CMakeFiles/interpolation.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f src/interpolation/CMakeFiles/interpolation.dir/build.make src/interpolation/CMakeFiles/interpolation.dir/depend + $(MAKE) $(MAKESILENT) -f src/interpolation/CMakeFiles/interpolation.dir/build.make src/interpolation/CMakeFiles/interpolation.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=16,17,18 "Built target interpolation" +.PHONY : src/interpolation/CMakeFiles/interpolation.dir/all + +# Build rule for subdir invocation for target. +src/interpolation/CMakeFiles/interpolation.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 6 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/interpolation/CMakeFiles/interpolation.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/interpolation/CMakeFiles/interpolation.dir/rule + +# Convenience name for target. +interpolation: src/interpolation/CMakeFiles/interpolation.dir/rule +.PHONY : interpolation + +# clean rule for target. +src/interpolation/CMakeFiles/interpolation.dir/clean: + $(MAKE) $(MAKESILENT) -f src/interpolation/CMakeFiles/interpolation.dir/build.make src/interpolation/CMakeFiles/interpolation.dir/clean +.PHONY : src/interpolation/CMakeFiles/interpolation.dir/clean + +#============================================================================= +# Target rules for target src/buffers/CMakeFiles/buffers.dir + +# All Build rule for target. +src/buffers/CMakeFiles/buffers.dir/all: + $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/depend + $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=4 "Built target buffers" +.PHONY : src/buffers/CMakeFiles/buffers.dir/all + +# Build rule for subdir invocation for target. +src/buffers/CMakeFiles/buffers.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 1 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/buffers/CMakeFiles/buffers.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/buffers/CMakeFiles/buffers.dir/rule + +# Convenience name for target. +buffers: src/buffers/CMakeFiles/buffers.dir/rule +.PHONY : buffers + +# clean rule for target. +src/buffers/CMakeFiles/buffers.dir/clean: + $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/clean +.PHONY : src/buffers/CMakeFiles/buffers.dir/clean + +#============================================================================= +# Target rules for target src/readers/CMakeFiles/readers.dir + +# All Build rule for target. +src/readers/CMakeFiles/readers.dir/all: + $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/depend + $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=37,38,39 "Built target readers" +.PHONY : src/readers/CMakeFiles/readers.dir/all + +# Build rule for subdir invocation for target. +src/readers/CMakeFiles/readers.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 3 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/readers/CMakeFiles/readers.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/readers/CMakeFiles/readers.dir/rule + +# Convenience name for target. +readers: src/readers/CMakeFiles/readers.dir/rule +.PHONY : readers + +# clean rule for target. +src/readers/CMakeFiles/readers.dir/clean: + $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/clean +.PHONY : src/readers/CMakeFiles/readers.dir/clean + +#============================================================================= +# Target rules for target src/vtk/CMakeFiles/vtk.dir + +# All Build rule for target. +src/vtk/CMakeFiles/vtk.dir/all: + $(MAKE) $(MAKESILENT) -f src/vtk/CMakeFiles/vtk.dir/build.make src/vtk/CMakeFiles/vtk.dir/depend + $(MAKE) $(MAKESILENT) -f src/vtk/CMakeFiles/vtk.dir/build.make src/vtk/CMakeFiles/vtk.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=97,98 "Built target vtk" +.PHONY : src/vtk/CMakeFiles/vtk.dir/all + +# Build rule for subdir invocation for target. +src/vtk/CMakeFiles/vtk.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/vtk/CMakeFiles/vtk.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/vtk/CMakeFiles/vtk.dir/rule + +# Convenience name for target. +vtk: src/vtk/CMakeFiles/vtk.dir/rule +.PHONY : vtk + +# clean rule for target. +src/vtk/CMakeFiles/vtk.dir/clean: + $(MAKE) $(MAKESILENT) -f src/vtk/CMakeFiles/vtk.dir/build.make src/vtk/CMakeFiles/vtk.dir/clean +.PHONY : src/vtk/CMakeFiles/vtk.dir/clean + +#============================================================================= +# Target rules for target src/test/CMakeFiles/testing.dir + +# All Build rule for target. +src/test/CMakeFiles/testing.dir/all: + $(MAKE) $(MAKESILENT) -f src/test/CMakeFiles/testing.dir/build.make src/test/CMakeFiles/testing.dir/depend + $(MAKE) $(MAKESILENT) -f src/test/CMakeFiles/testing.dir/build.make src/test/CMakeFiles/testing.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=68,69,70 "Built target testing" +.PHONY : src/test/CMakeFiles/testing.dir/all + +# Build rule for subdir invocation for target. +src/test/CMakeFiles/testing.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 3 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/test/CMakeFiles/testing.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/test/CMakeFiles/testing.dir/rule + +# Convenience name for target. +testing: src/test/CMakeFiles/testing.dir/rule +.PHONY : testing + +# clean rule for target. +src/test/CMakeFiles/testing.dir/clean: + $(MAKE) $(MAKESILENT) -f src/test/CMakeFiles/testing.dir/build.make src/test/CMakeFiles/testing.dir/clean +.PHONY : src/test/CMakeFiles/testing.dir/clean + +#============================================================================= +# Target rules for target src/checksum/CMakeFiles/checksum.dir + +# All Build rule for target. +src/checksum/CMakeFiles/checksum.dir/all: + $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/depend + $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=5,6 "Built target checksum" +.PHONY : src/checksum/CMakeFiles/checksum.dir/all + +# Build rule for subdir invocation for target. +src/checksum/CMakeFiles/checksum.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/checksum/CMakeFiles/checksum.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/checksum/CMakeFiles/checksum.dir/rule + +# Convenience name for target. +checksum: src/checksum/CMakeFiles/checksum.dir/rule +.PHONY : checksum + +# clean rule for target. +src/checksum/CMakeFiles/checksum.dir/clean: + $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/clean +.PHONY : src/checksum/CMakeFiles/checksum.dir/clean + +#============================================================================= +# Target rules for target src/grid/CMakeFiles/grid.dir + +# All Build rule for target. +src/grid/CMakeFiles/grid.dir/all: + $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/depend + $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=13,14,15 "Built target grid" +.PHONY : src/grid/CMakeFiles/grid.dir/all + +# Build rule for subdir invocation for target. +src/grid/CMakeFiles/grid.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 3 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/grid/CMakeFiles/grid.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : src/grid/CMakeFiles/grid.dir/rule + +# Convenience name for target. +grid: src/grid/CMakeFiles/grid.dir/rule +.PHONY : grid + +# clean rule for target. +src/grid/CMakeFiles/grid.dir/clean: + $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/clean +.PHONY : src/grid/CMakeFiles/grid.dir/clean + +#============================================================================= +# Target rules for target tests/CMakeFiles/test_attenuation.dir + +# All Build rule for target. +tests/CMakeFiles/test_attenuation.dir/all: src/awp/CMakeFiles/awp.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/awp/CMakeFiles/error.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/CMakeFiles/topography.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/initializations/CMakeFiles/topography_initializations.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/argparse/CMakeFiles/argparse.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/test/CMakeFiles/testing.dir/all +tests/CMakeFiles/test_attenuation.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/test_attenuation.dir/build.make tests/CMakeFiles/test_attenuation.dir/depend + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/test_attenuation.dir/build.make tests/CMakeFiles/test_attenuation.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=40 "Built target test_attenuation" +.PHONY : tests/CMakeFiles/test_attenuation.dir/all + +# Build rule for subdir invocation for target. +tests/CMakeFiles/test_attenuation.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 52 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/CMakeFiles/test_attenuation.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/CMakeFiles/test_attenuation.dir/rule + +# Convenience name for target. +test_attenuation: tests/CMakeFiles/test_attenuation.dir/rule +.PHONY : test_attenuation + +# clean rule for target. +tests/CMakeFiles/test_attenuation.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/test_attenuation.dir/build.make tests/CMakeFiles/test_attenuation.dir/clean +.PHONY : tests/CMakeFiles/test_attenuation.dir/clean + +#============================================================================= +# Target rules for target tests/topography/metrics/CMakeFiles/test_metrics.dir + +# All Build rule for target. +tests/topography/metrics/CMakeFiles/test_metrics.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/metrics/CMakeFiles/test_metrics.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/metrics/CMakeFiles/test_metrics.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/metrics/CMakeFiles/test_metrics.dir/all: src/test/CMakeFiles/testing.dir/all +tests/topography/metrics/CMakeFiles/test_metrics.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/metrics/CMakeFiles/test_metrics.dir/build.make tests/topography/metrics/CMakeFiles/test_metrics.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/metrics/CMakeFiles/test_metrics.dir/build.make tests/topography/metrics/CMakeFiles/test_metrics.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=55 "Built target test_metrics" +.PHONY : tests/topography/metrics/CMakeFiles/test_metrics.dir/all + +# Build rule for subdir invocation for target. +tests/topography/metrics/CMakeFiles/test_metrics.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 16 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/metrics/CMakeFiles/test_metrics.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/metrics/CMakeFiles/test_metrics.dir/rule + +# Convenience name for target. +test_metrics: tests/topography/metrics/CMakeFiles/test_metrics.dir/rule +.PHONY : test_metrics + +# clean rule for target. +tests/topography/metrics/CMakeFiles/test_metrics.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/metrics/CMakeFiles/test_metrics.dir/build.make tests/topography/metrics/CMakeFiles/test_metrics.dir/clean +.PHONY : tests/topography/metrics/CMakeFiles/test_metrics.dir/clean + +#============================================================================= +# Target rules for target tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir + +# All Build rule for target. +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/test/CMakeFiles/testing.dir/all +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/build.make tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/build.make tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=61 "Built target test_topography_serial_reader" +.PHONY : tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all + +# Build rule for subdir invocation for target. +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 21 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/rule + +# Convenience name for target. +test_topography_serial_reader: tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/rule +.PHONY : test_topography_serial_reader + +# clean rule for target. +tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/build.make tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/clean +.PHONY : tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/clean + +#============================================================================= +# Target rules for target tests/topography/geometry/CMakeFiles/test_topography_geometry.dir + +# All Build rule for target. +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/test/CMakeFiles/testing.dir/all +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/build.make tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/build.make tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=58 "Built target test_topography_geometry" +.PHONY : tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all + +# Build rule for subdir invocation for target. +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 21 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/rule + +# Convenience name for target. +test_topography_geometry: tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/rule +.PHONY : test_topography_geometry + +# clean rule for target. +tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/build.make tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/clean +.PHONY : tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/clean + +#============================================================================= +# Target rules for target tests/topography/sources/CMakeFiles/test_topography_sources.dir + +# All Build rule for target. +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/awp/CMakeFiles/error.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/CMakeFiles/topography.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/test/CMakeFiles/testing.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=64 "Built target test_topography_sources" +.PHONY : tests/topography/sources/CMakeFiles/test_topography_sources.dir/all + +# Build rule for subdir invocation for target. +tests/topography/sources/CMakeFiles/test_topography_sources.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 45 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/sources/CMakeFiles/test_topography_sources.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/sources/CMakeFiles/test_topography_sources.dir/rule + +# Convenience name for target. +test_topography_sources: tests/topography/sources/CMakeFiles/test_topography_sources.dir/rule +.PHONY : test_topography_sources + +# clean rule for target. +tests/topography/sources/CMakeFiles/test_topography_sources.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources.dir/clean +.PHONY : tests/topography/sources/CMakeFiles/test_topography_sources.dir/clean + +#============================================================================= +# Target rules for target tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir + +# All Build rule for target. +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/awp/CMakeFiles/error.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/CMakeFiles/topography.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/test/CMakeFiles/testing.dir/all +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=65,66 "Built target test_topography_sources_dm" +.PHONY : tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all + +# Build rule for subdir invocation for target. +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 46 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/rule + +# Convenience name for target. +test_topography_sources_dm: tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/rule +.PHONY : test_topography_sources_dm + +# clean rule for target. +tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/clean +.PHONY : tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/clean + +#============================================================================= +# Target rules for target tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir + +# All Build rule for target. +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/awp/CMakeFiles/error.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/CMakeFiles/topography.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/test/CMakeFiles/testing.dir/all +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/build.make tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/build.make tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=62,63 "Built target test_topography_source_distribution" +.PHONY : tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all + +# Build rule for subdir invocation for target. +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 46 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/rule + +# Convenience name for target. +test_topography_source_distribution: tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/rule +.PHONY : test_topography_source_distribution + +# clean rule for target. +tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/build.make tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/clean +.PHONY : tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/clean + +#============================================================================= +# Target rules for target tests/topography/receivers/CMakeFiles/test_topography_receivers.dir + +# All Build rule for target. +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/awp/CMakeFiles/error.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/CMakeFiles/topography.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/test/CMakeFiles/testing.dir/all +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/build.make tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/build.make tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=59,60 "Built target test_topography_receivers" +.PHONY : tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all + +# Build rule for subdir invocation for target. +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 46 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/rule + +# Convenience name for target. +test_topography_receivers: tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/rule +.PHONY : test_topography_receivers + +# clean rule for target. +tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/build.make tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/clean +.PHONY : tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/clean + +#============================================================================= +# Target rules for target tests/topography/accuracy/CMakeFiles/test_convergence.dir + +# All Build rule for target. +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/awp/CMakeFiles/awp.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/awp/CMakeFiles/error.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/CMakeFiles/topography_no_bc.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/topography/accuracy/CMakeFiles/test_convergence.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/accuracy/CMakeFiles/test_convergence.dir/build.make tests/topography/accuracy/CMakeFiles/test_convergence.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/accuracy/CMakeFiles/test_convergence.dir/build.make tests/topography/accuracy/CMakeFiles/test_convergence.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=43 "Built target test_convergence" +.PHONY : tests/topography/accuracy/CMakeFiles/test_convergence.dir/all + +# Build rule for subdir invocation for target. +tests/topography/accuracy/CMakeFiles/test_convergence.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 44 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/accuracy/CMakeFiles/test_convergence.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/accuracy/CMakeFiles/test_convergence.dir/rule + +# Convenience name for target. +test_convergence: tests/topography/accuracy/CMakeFiles/test_convergence.dir/rule +.PHONY : test_convergence + +# clean rule for target. +tests/topography/accuracy/CMakeFiles/test_convergence.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/accuracy/CMakeFiles/test_convergence.dir/build.make tests/topography/accuracy/CMakeFiles/test_convergence.dir/clean +.PHONY : tests/topography/accuracy/CMakeFiles/test_convergence.dir/clean + +#============================================================================= +# Target rules for target tests/topography/mapping/CMakeFiles/test_mapping.dir + +# All Build rule for target. +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/awp/CMakeFiles/error.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/CMakeFiles/mapping.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/CMakeFiles/topography.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/metrics/CMakeFiles/metrics.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/geometry/CMakeFiles/geometry.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/sources/CMakeFiles/topography_sources.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/receivers/CMakeFiles/topography_receivers.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/topography/functions/CMakeFiles/functions.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/vtk/CMakeFiles/vtk.dir/all +tests/topography/mapping/CMakeFiles/test_mapping.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/topography/mapping/CMakeFiles/test_mapping.dir/build.make tests/topography/mapping/CMakeFiles/test_mapping.dir/depend + $(MAKE) $(MAKESILENT) -f tests/topography/mapping/CMakeFiles/test_mapping.dir/build.make tests/topography/mapping/CMakeFiles/test_mapping.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=53,54 "Built target test_mapping" +.PHONY : tests/topography/mapping/CMakeFiles/test_mapping.dir/all + +# Build rule for subdir invocation for target. +tests/topography/mapping/CMakeFiles/test_mapping.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 43 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/topography/mapping/CMakeFiles/test_mapping.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/topography/mapping/CMakeFiles/test_mapping.dir/rule + +# Convenience name for target. +test_mapping: tests/topography/mapping/CMakeFiles/test_mapping.dir/rule +.PHONY : test_mapping + +# clean rule for target. +tests/topography/mapping/CMakeFiles/test_mapping.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/topography/mapping/CMakeFiles/test_mapping.dir/build.make tests/topography/mapping/CMakeFiles/test_mapping.dir/clean +.PHONY : tests/topography/mapping/CMakeFiles/test_mapping.dir/clean + +#============================================================================= +# Target rules for target tests/buffers/CMakeFiles/test_buffer.dir + +# All Build rule for target. +tests/buffers/CMakeFiles/test_buffer.dir/all: src/buffers/CMakeFiles/buffers.dir/all +tests/buffers/CMakeFiles/test_buffer.dir/all: src/test/CMakeFiles/testing.dir/all + $(MAKE) $(MAKESILENT) -f tests/buffers/CMakeFiles/test_buffer.dir/build.make tests/buffers/CMakeFiles/test_buffer.dir/depend + $(MAKE) $(MAKESILENT) -f tests/buffers/CMakeFiles/test_buffer.dir/build.make tests/buffers/CMakeFiles/test_buffer.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=41,42 "Built target test_buffer" +.PHONY : tests/buffers/CMakeFiles/test_buffer.dir/all + +# Build rule for subdir invocation for target. +tests/buffers/CMakeFiles/test_buffer.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 6 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/buffers/CMakeFiles/test_buffer.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/buffers/CMakeFiles/test_buffer.dir/rule + +# Convenience name for target. +test_buffer: tests/buffers/CMakeFiles/test_buffer.dir/rule +.PHONY : test_buffer + +# clean rule for target. +tests/buffers/CMakeFiles/test_buffer.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/buffers/CMakeFiles/test_buffer.dir/build.make tests/buffers/CMakeFiles/test_buffer.dir/clean +.PHONY : tests/buffers/CMakeFiles/test_buffer.dir/clean + +#============================================================================= +# Target rules for target tests/grid/CMakeFiles/test_grid_3d.dir + +# All Build rule for target. +tests/grid/CMakeFiles/test_grid_3d.dir/all: src/test/CMakeFiles/testing.dir/all +tests/grid/CMakeFiles/test_grid_3d.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/grid/CMakeFiles/test_grid_3d.dir/build.make tests/grid/CMakeFiles/test_grid_3d.dir/depend + $(MAKE) $(MAKESILENT) -f tests/grid/CMakeFiles/test_grid_3d.dir/build.make tests/grid/CMakeFiles/test_grid_3d.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=44,45 "Built target test_grid_3d" +.PHONY : tests/grid/CMakeFiles/test_grid_3d.dir/all + +# Build rule for subdir invocation for target. +tests/grid/CMakeFiles/test_grid_3d.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 8 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/grid/CMakeFiles/test_grid_3d.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/grid/CMakeFiles/test_grid_3d.dir/rule + +# Convenience name for target. +test_grid_3d: tests/grid/CMakeFiles/test_grid_3d.dir/rule +.PHONY : test_grid_3d + +# clean rule for target. +tests/grid/CMakeFiles/test_grid_3d.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/grid/CMakeFiles/test_grid_3d.dir/build.make tests/grid/CMakeFiles/test_grid_3d.dir/clean +.PHONY : tests/grid/CMakeFiles/test_grid_3d.dir/clean + +#============================================================================= +# Target rules for target tests/mpi/CMakeFiles/test_indexed.dir + +# All Build rule for target. +tests/mpi/CMakeFiles/test_indexed.dir/all: src/test/CMakeFiles/testing.dir/all + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_indexed.dir/build.make tests/mpi/CMakeFiles/test_indexed.dir/depend + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_indexed.dir/build.make tests/mpi/CMakeFiles/test_indexed.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=46 "Built target test_indexed" +.PHONY : tests/mpi/CMakeFiles/test_indexed.dir/all + +# Build rule for subdir invocation for target. +tests/mpi/CMakeFiles/test_indexed.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 4 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/mpi/CMakeFiles/test_indexed.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/mpi/CMakeFiles/test_indexed.dir/rule + +# Convenience name for target. +test_indexed: tests/mpi/CMakeFiles/test_indexed.dir/rule +.PHONY : test_indexed + +# clean rule for target. +tests/mpi/CMakeFiles/test_indexed.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_indexed.dir/build.make tests/mpi/CMakeFiles/test_indexed.dir/clean +.PHONY : tests/mpi/CMakeFiles/test_indexed.dir/clean + +#============================================================================= +# Target rules for target tests/mpi/CMakeFiles/test_mpi_io.dir + +# All Build rule for target. +tests/mpi/CMakeFiles/test_mpi_io.dir/all: src/mpi/CMakeFiles/mpi.dir/all +tests/mpi/CMakeFiles/test_mpi_io.dir/all: src/test/CMakeFiles/testing.dir/all +tests/mpi/CMakeFiles/test_mpi_io.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_mpi_io.dir/build.make tests/mpi/CMakeFiles/test_mpi_io.dir/depend + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_mpi_io.dir/build.make tests/mpi/CMakeFiles/test_mpi_io.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=56,57 "Built target test_mpi_io" +.PHONY : tests/mpi/CMakeFiles/test_mpi_io.dir/all + +# Build rule for subdir invocation for target. +tests/mpi/CMakeFiles/test_mpi_io.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 11 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/mpi/CMakeFiles/test_mpi_io.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/mpi/CMakeFiles/test_mpi_io.dir/rule + +# Convenience name for target. +test_mpi_io: tests/mpi/CMakeFiles/test_mpi_io.dir/rule +.PHONY : test_mpi_io + +# clean rule for target. +tests/mpi/CMakeFiles/test_mpi_io.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_mpi_io.dir/build.make tests/mpi/CMakeFiles/test_mpi_io.dir/clean +.PHONY : tests/mpi/CMakeFiles/test_mpi_io.dir/clean + +#============================================================================= +# Target rules for target tests/interpolation/CMakeFiles/test_interpolation.dir + +# All Build rule for target. +tests/interpolation/CMakeFiles/test_interpolation.dir/all: src/awp/CMakeFiles/error.dir/all +tests/interpolation/CMakeFiles/test_interpolation.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/interpolation/CMakeFiles/test_interpolation.dir/all: src/test/CMakeFiles/testing.dir/all +tests/interpolation/CMakeFiles/test_interpolation.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolation.dir/build.make tests/interpolation/CMakeFiles/test_interpolation.dir/depend + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolation.dir/build.make tests/interpolation/CMakeFiles/test_interpolation.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=49 "Built target test_interpolation" +.PHONY : tests/interpolation/CMakeFiles/test_interpolation.dir/all + +# Build rule for subdir invocation for target. +tests/interpolation/CMakeFiles/test_interpolation.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 12 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/interpolation/CMakeFiles/test_interpolation.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/interpolation/CMakeFiles/test_interpolation.dir/rule + +# Convenience name for target. +test_interpolation: tests/interpolation/CMakeFiles/test_interpolation.dir/rule +.PHONY : test_interpolation + +# clean rule for target. +tests/interpolation/CMakeFiles/test_interpolation.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolation.dir/build.make tests/interpolation/CMakeFiles/test_interpolation.dir/clean +.PHONY : tests/interpolation/CMakeFiles/test_interpolation.dir/clean + +#============================================================================= +# Target rules for target tests/interpolation/CMakeFiles/test_interpolationcu.dir + +# All Build rule for target. +tests/interpolation/CMakeFiles/test_interpolationcu.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/interpolation/CMakeFiles/test_interpolationcu.dir/all: src/test/CMakeFiles/testing.dir/all +tests/interpolation/CMakeFiles/test_interpolationcu.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolationcu.dir/build.make tests/interpolation/CMakeFiles/test_interpolationcu.dir/depend + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolationcu.dir/build.make tests/interpolation/CMakeFiles/test_interpolationcu.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=50,51 "Built target test_interpolationcu" +.PHONY : tests/interpolation/CMakeFiles/test_interpolationcu.dir/all + +# Build rule for subdir invocation for target. +tests/interpolation/CMakeFiles/test_interpolationcu.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 11 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/interpolation/CMakeFiles/test_interpolationcu.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/interpolation/CMakeFiles/test_interpolationcu.dir/rule + +# Convenience name for target. +test_interpolationcu: tests/interpolation/CMakeFiles/test_interpolationcu.dir/rule +.PHONY : test_interpolationcu + +# clean rule for target. +tests/interpolation/CMakeFiles/test_interpolationcu.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolationcu.dir/build.make tests/interpolation/CMakeFiles/test_interpolationcu.dir/clean +.PHONY : tests/interpolation/CMakeFiles/test_interpolationcu.dir/clean + +#============================================================================= +# Target rules for target tests/interpolation/CMakeFiles/test_lagrange.dir + +# All Build rule for target. +tests/interpolation/CMakeFiles/test_lagrange.dir/all: src/interpolation/CMakeFiles/interpolation.dir/all +tests/interpolation/CMakeFiles/test_lagrange.dir/all: src/test/CMakeFiles/testing.dir/all +tests/interpolation/CMakeFiles/test_lagrange.dir/all: src/grid/CMakeFiles/grid.dir/all + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_lagrange.dir/build.make tests/interpolation/CMakeFiles/test_lagrange.dir/depend + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_lagrange.dir/build.make tests/interpolation/CMakeFiles/test_lagrange.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=52 "Built target test_lagrange" +.PHONY : tests/interpolation/CMakeFiles/test_lagrange.dir/all + +# Build rule for subdir invocation for target. +tests/interpolation/CMakeFiles/test_lagrange.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 10 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/interpolation/CMakeFiles/test_lagrange.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/interpolation/CMakeFiles/test_lagrange.dir/rule + +# Convenience name for target. +test_lagrange: tests/interpolation/CMakeFiles/test_lagrange.dir/rule +.PHONY : test_lagrange + +# clean rule for target. +tests/interpolation/CMakeFiles/test_lagrange.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_lagrange.dir/build.make tests/interpolation/CMakeFiles/test_lagrange.dir/clean +.PHONY : tests/interpolation/CMakeFiles/test_lagrange.dir/clean + +#============================================================================= +# Target rules for target tests/readers/CMakeFiles/test_input.dir + +# All Build rule for target. +tests/readers/CMakeFiles/test_input.dir/all: src/awp/CMakeFiles/error.dir/all +tests/readers/CMakeFiles/test_input.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/readers/CMakeFiles/test_input.dir/all: src/test/CMakeFiles/testing.dir/all + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_input.dir/build.make tests/readers/CMakeFiles/test_input.dir/depend + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_input.dir/build.make tests/readers/CMakeFiles/test_input.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=47,48 "Built target test_input" +.PHONY : tests/readers/CMakeFiles/test_input.dir/all + +# Build rule for subdir invocation for target. +tests/readers/CMakeFiles/test_input.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 10 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/readers/CMakeFiles/test_input.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/readers/CMakeFiles/test_input.dir/rule + +# Convenience name for target. +test_input: tests/readers/CMakeFiles/test_input.dir/rule +.PHONY : test_input + +# clean rule for target. +tests/readers/CMakeFiles/test_input.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_input.dir/build.make tests/readers/CMakeFiles/test_input.dir/clean +.PHONY : tests/readers/CMakeFiles/test_input.dir/clean + +#============================================================================= +# Target rules for target tests/readers/CMakeFiles/test_version.dir + +# All Build rule for target. +tests/readers/CMakeFiles/test_version.dir/all: src/readers/CMakeFiles/readers.dir/all +tests/readers/CMakeFiles/test_version.dir/all: src/test/CMakeFiles/testing.dir/all + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_version.dir/build.make tests/readers/CMakeFiles/test_version.dir/depend + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_version.dir/build.make tests/readers/CMakeFiles/test_version.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=67 "Built target test_version" +.PHONY : tests/readers/CMakeFiles/test_version.dir/all + +# Build rule for subdir invocation for target. +tests/readers/CMakeFiles/test_version.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 7 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/readers/CMakeFiles/test_version.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tests/readers/CMakeFiles/test_version.dir/rule + +# Convenience name for target. +test_version: tests/readers/CMakeFiles/test_version.dir/rule +.PHONY : test_version + +# clean rule for target. +tests/readers/CMakeFiles/test_version.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_version.dir/build.make tests/readers/CMakeFiles/test_version.dir/clean +.PHONY : tests/readers/CMakeFiles/test_version.dir/clean + +#============================================================================= +# Target rules for target tools/write_grid/CMakeFiles/write_grid.dir + +# All Build rule for target. +tools/write_grid/CMakeFiles/write_grid.dir/all: src/topography/CMakeFiles/mapping.dir/all +tools/write_grid/CMakeFiles/write_grid.dir/all: src/topography/readers/CMakeFiles/topography_readers.dir/all + $(MAKE) $(MAKESILENT) -f tools/write_grid/CMakeFiles/write_grid.dir/build.make tools/write_grid/CMakeFiles/write_grid.dir/depend + $(MAKE) $(MAKESILENT) -f tools/write_grid/CMakeFiles/write_grid.dir/build.make tools/write_grid/CMakeFiles/write_grid.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=99,100 "Built target write_grid" +.PHONY : tools/write_grid/CMakeFiles/write_grid.dir/all + +# Build rule for subdir invocation for target. +tools/write_grid/CMakeFiles/write_grid.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 6 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tools/write_grid/CMakeFiles/write_grid.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : tools/write_grid/CMakeFiles/write_grid.dir/rule + +# Convenience name for target. +write_grid: tools/write_grid/CMakeFiles/write_grid.dir/rule +.PHONY : write_grid + +# clean rule for target. +tools/write_grid/CMakeFiles/write_grid.dir/clean: + $(MAKE) $(MAKESILENT) -f tools/write_grid/CMakeFiles/write_grid.dir/build.make tools/write_grid/CMakeFiles/write_grid.dir/clean +.PHONY : tools/write_grid/CMakeFiles/write_grid.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/CMakeFiles/Nightly.dir/DependInfo.cmake b/release/CMakeFiles/Nightly.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/Nightly.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/Nightly.dir/build.make b/release/CMakeFiles/Nightly.dir/build.make new file mode 100644 index 0000000..8e8d5a6 --- /dev/null +++ b/release/CMakeFiles/Nightly.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for Nightly. + +# Include any custom commands dependencies for this target. +include CMakeFiles/Nightly.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/Nightly.dir/progress.make + +CMakeFiles/Nightly: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D Nightly + +Nightly: CMakeFiles/Nightly +Nightly: CMakeFiles/Nightly.dir/build.make +.PHONY : Nightly + +# Rule to build all files generated by this target. +CMakeFiles/Nightly.dir/build: Nightly +.PHONY : CMakeFiles/Nightly.dir/build + +CMakeFiles/Nightly.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/Nightly.dir/cmake_clean.cmake +.PHONY : CMakeFiles/Nightly.dir/clean + +CMakeFiles/Nightly.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/Nightly.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/Nightly.dir/depend + diff --git a/release/CMakeFiles/Nightly.dir/cmake_clean.cmake b/release/CMakeFiles/Nightly.dir/cmake_clean.cmake new file mode 100644 index 0000000..99a4ac1 --- /dev/null +++ b/release/CMakeFiles/Nightly.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/Nightly" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/Nightly.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/Nightly.dir/compiler_depend.make b/release/CMakeFiles/Nightly.dir/compiler_depend.make new file mode 100644 index 0000000..b53ef7a --- /dev/null +++ b/release/CMakeFiles/Nightly.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for Nightly. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/Nightly.dir/compiler_depend.ts b/release/CMakeFiles/Nightly.dir/compiler_depend.ts new file mode 100644 index 0000000..a85d2c8 --- /dev/null +++ b/release/CMakeFiles/Nightly.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for Nightly. diff --git a/release/CMakeFiles/Nightly.dir/progress.make b/release/CMakeFiles/Nightly.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/Nightly.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyBuild.dir/DependInfo.cmake b/release/CMakeFiles/NightlyBuild.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyBuild.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyBuild.dir/build.make b/release/CMakeFiles/NightlyBuild.dir/build.make new file mode 100644 index 0000000..b8e8f71 --- /dev/null +++ b/release/CMakeFiles/NightlyBuild.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyBuild. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyBuild.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyBuild.dir/progress.make + +CMakeFiles/NightlyBuild: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyBuild + +NightlyBuild: CMakeFiles/NightlyBuild +NightlyBuild: CMakeFiles/NightlyBuild.dir/build.make +.PHONY : NightlyBuild + +# Rule to build all files generated by this target. +CMakeFiles/NightlyBuild.dir/build: NightlyBuild +.PHONY : CMakeFiles/NightlyBuild.dir/build + +CMakeFiles/NightlyBuild.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyBuild.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyBuild.dir/clean + +CMakeFiles/NightlyBuild.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyBuild.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyBuild.dir/depend + diff --git a/release/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake new file mode 100644 index 0000000..7aa38a7 --- /dev/null +++ b/release/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyBuild" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyBuild.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyBuild.dir/compiler_depend.make b/release/CMakeFiles/NightlyBuild.dir/compiler_depend.make new file mode 100644 index 0000000..da2f347 --- /dev/null +++ b/release/CMakeFiles/NightlyBuild.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyBuild. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyBuild.dir/compiler_depend.ts b/release/CMakeFiles/NightlyBuild.dir/compiler_depend.ts new file mode 100644 index 0000000..89e6960 --- /dev/null +++ b/release/CMakeFiles/NightlyBuild.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyBuild. diff --git a/release/CMakeFiles/NightlyBuild.dir/progress.make b/release/CMakeFiles/NightlyBuild.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyBuild.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake b/release/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyConfigure.dir/build.make b/release/CMakeFiles/NightlyConfigure.dir/build.make new file mode 100644 index 0000000..9bd637c --- /dev/null +++ b/release/CMakeFiles/NightlyConfigure.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyConfigure. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyConfigure.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyConfigure.dir/progress.make + +CMakeFiles/NightlyConfigure: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyConfigure + +NightlyConfigure: CMakeFiles/NightlyConfigure +NightlyConfigure: CMakeFiles/NightlyConfigure.dir/build.make +.PHONY : NightlyConfigure + +# Rule to build all files generated by this target. +CMakeFiles/NightlyConfigure.dir/build: NightlyConfigure +.PHONY : CMakeFiles/NightlyConfigure.dir/build + +CMakeFiles/NightlyConfigure.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyConfigure.dir/clean + +CMakeFiles/NightlyConfigure.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyConfigure.dir/depend + diff --git a/release/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake new file mode 100644 index 0000000..080c729 --- /dev/null +++ b/release/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyConfigure" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyConfigure.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyConfigure.dir/compiler_depend.make b/release/CMakeFiles/NightlyConfigure.dir/compiler_depend.make new file mode 100644 index 0000000..973bd2a --- /dev/null +++ b/release/CMakeFiles/NightlyConfigure.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyConfigure. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyConfigure.dir/compiler_depend.ts b/release/CMakeFiles/NightlyConfigure.dir/compiler_depend.ts new file mode 100644 index 0000000..3e550da --- /dev/null +++ b/release/CMakeFiles/NightlyConfigure.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyConfigure. diff --git a/release/CMakeFiles/NightlyConfigure.dir/progress.make b/release/CMakeFiles/NightlyConfigure.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyConfigure.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake b/release/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyCoverage.dir/build.make b/release/CMakeFiles/NightlyCoverage.dir/build.make new file mode 100644 index 0000000..9625f3e --- /dev/null +++ b/release/CMakeFiles/NightlyCoverage.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyCoverage. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyCoverage.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyCoverage.dir/progress.make + +CMakeFiles/NightlyCoverage: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyCoverage + +NightlyCoverage: CMakeFiles/NightlyCoverage +NightlyCoverage: CMakeFiles/NightlyCoverage.dir/build.make +.PHONY : NightlyCoverage + +# Rule to build all files generated by this target. +CMakeFiles/NightlyCoverage.dir/build: NightlyCoverage +.PHONY : CMakeFiles/NightlyCoverage.dir/build + +CMakeFiles/NightlyCoverage.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyCoverage.dir/clean + +CMakeFiles/NightlyCoverage.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyCoverage.dir/depend + diff --git a/release/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake new file mode 100644 index 0000000..d6cba89 --- /dev/null +++ b/release/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyCoverage" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyCoverage.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyCoverage.dir/compiler_depend.make b/release/CMakeFiles/NightlyCoverage.dir/compiler_depend.make new file mode 100644 index 0000000..9f188a1 --- /dev/null +++ b/release/CMakeFiles/NightlyCoverage.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyCoverage. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyCoverage.dir/compiler_depend.ts b/release/CMakeFiles/NightlyCoverage.dir/compiler_depend.ts new file mode 100644 index 0000000..3092ba3 --- /dev/null +++ b/release/CMakeFiles/NightlyCoverage.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyCoverage. diff --git a/release/CMakeFiles/NightlyCoverage.dir/progress.make b/release/CMakeFiles/NightlyCoverage.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyCoverage.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake b/release/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyMemCheck.dir/build.make b/release/CMakeFiles/NightlyMemCheck.dir/build.make new file mode 100644 index 0000000..7c30217 --- /dev/null +++ b/release/CMakeFiles/NightlyMemCheck.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyMemCheck. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyMemCheck.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyMemCheck.dir/progress.make + +CMakeFiles/NightlyMemCheck: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyMemCheck + +NightlyMemCheck: CMakeFiles/NightlyMemCheck +NightlyMemCheck: CMakeFiles/NightlyMemCheck.dir/build.make +.PHONY : NightlyMemCheck + +# Rule to build all files generated by this target. +CMakeFiles/NightlyMemCheck.dir/build: NightlyMemCheck +.PHONY : CMakeFiles/NightlyMemCheck.dir/build + +CMakeFiles/NightlyMemCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyMemCheck.dir/clean + +CMakeFiles/NightlyMemCheck.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyMemCheck.dir/depend + diff --git a/release/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000..3c0e881 --- /dev/null +++ b/release/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyMemCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyMemCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.make b/release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.make new file mode 100644 index 0000000..6c54911 --- /dev/null +++ b/release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyMemCheck. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.ts b/release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.ts new file mode 100644 index 0000000..c176eda --- /dev/null +++ b/release/CMakeFiles/NightlyMemCheck.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyMemCheck. diff --git a/release/CMakeFiles/NightlyMemCheck.dir/progress.make b/release/CMakeFiles/NightlyMemCheck.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyMemCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake b/release/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyMemoryCheck.dir/build.make b/release/CMakeFiles/NightlyMemoryCheck.dir/build.make new file mode 100644 index 0000000..50676e1 --- /dev/null +++ b/release/CMakeFiles/NightlyMemoryCheck.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyMemoryCheck. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyMemoryCheck.dir/progress.make + +CMakeFiles/NightlyMemoryCheck: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyMemoryCheck + +NightlyMemoryCheck: CMakeFiles/NightlyMemoryCheck +NightlyMemoryCheck: CMakeFiles/NightlyMemoryCheck.dir/build.make +.PHONY : NightlyMemoryCheck + +# Rule to build all files generated by this target. +CMakeFiles/NightlyMemoryCheck.dir/build: NightlyMemoryCheck +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/build + +CMakeFiles/NightlyMemoryCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/clean + +CMakeFiles/NightlyMemoryCheck.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/depend + diff --git a/release/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000..8846611 --- /dev/null +++ b/release/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyMemoryCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyMemoryCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.make b/release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.make new file mode 100644 index 0000000..3aa41e7 --- /dev/null +++ b/release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyMemoryCheck. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.ts b/release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.ts new file mode 100644 index 0000000..38e1ae0 --- /dev/null +++ b/release/CMakeFiles/NightlyMemoryCheck.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyMemoryCheck. diff --git a/release/CMakeFiles/NightlyMemoryCheck.dir/progress.make b/release/CMakeFiles/NightlyMemoryCheck.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyMemoryCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyStart.dir/DependInfo.cmake b/release/CMakeFiles/NightlyStart.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyStart.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyStart.dir/build.make b/release/CMakeFiles/NightlyStart.dir/build.make new file mode 100644 index 0000000..b929799 --- /dev/null +++ b/release/CMakeFiles/NightlyStart.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyStart. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyStart.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyStart.dir/progress.make + +CMakeFiles/NightlyStart: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyStart + +NightlyStart: CMakeFiles/NightlyStart +NightlyStart: CMakeFiles/NightlyStart.dir/build.make +.PHONY : NightlyStart + +# Rule to build all files generated by this target. +CMakeFiles/NightlyStart.dir/build: NightlyStart +.PHONY : CMakeFiles/NightlyStart.dir/build + +CMakeFiles/NightlyStart.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyStart.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyStart.dir/clean + +CMakeFiles/NightlyStart.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyStart.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyStart.dir/depend + diff --git a/release/CMakeFiles/NightlyStart.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyStart.dir/cmake_clean.cmake new file mode 100644 index 0000000..6a2c6c6 --- /dev/null +++ b/release/CMakeFiles/NightlyStart.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyStart" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyStart.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyStart.dir/compiler_depend.make b/release/CMakeFiles/NightlyStart.dir/compiler_depend.make new file mode 100644 index 0000000..b72de2d --- /dev/null +++ b/release/CMakeFiles/NightlyStart.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyStart. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyStart.dir/compiler_depend.ts b/release/CMakeFiles/NightlyStart.dir/compiler_depend.ts new file mode 100644 index 0000000..2f7f077 --- /dev/null +++ b/release/CMakeFiles/NightlyStart.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyStart. diff --git a/release/CMakeFiles/NightlyStart.dir/progress.make b/release/CMakeFiles/NightlyStart.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyStart.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlySubmit.dir/DependInfo.cmake b/release/CMakeFiles/NightlySubmit.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlySubmit.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlySubmit.dir/build.make b/release/CMakeFiles/NightlySubmit.dir/build.make new file mode 100644 index 0000000..3407591 --- /dev/null +++ b/release/CMakeFiles/NightlySubmit.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlySubmit. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlySubmit.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlySubmit.dir/progress.make + +CMakeFiles/NightlySubmit: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlySubmit + +NightlySubmit: CMakeFiles/NightlySubmit +NightlySubmit: CMakeFiles/NightlySubmit.dir/build.make +.PHONY : NightlySubmit + +# Rule to build all files generated by this target. +CMakeFiles/NightlySubmit.dir/build: NightlySubmit +.PHONY : CMakeFiles/NightlySubmit.dir/build + +CMakeFiles/NightlySubmit.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlySubmit.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlySubmit.dir/clean + +CMakeFiles/NightlySubmit.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlySubmit.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlySubmit.dir/depend + diff --git a/release/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake b/release/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake new file mode 100644 index 0000000..6f88ccc --- /dev/null +++ b/release/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlySubmit" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlySubmit.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlySubmit.dir/compiler_depend.make b/release/CMakeFiles/NightlySubmit.dir/compiler_depend.make new file mode 100644 index 0000000..d2f6748 --- /dev/null +++ b/release/CMakeFiles/NightlySubmit.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlySubmit. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlySubmit.dir/compiler_depend.ts b/release/CMakeFiles/NightlySubmit.dir/compiler_depend.ts new file mode 100644 index 0000000..773bf4b --- /dev/null +++ b/release/CMakeFiles/NightlySubmit.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlySubmit. diff --git a/release/CMakeFiles/NightlySubmit.dir/progress.make b/release/CMakeFiles/NightlySubmit.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlySubmit.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyTest.dir/DependInfo.cmake b/release/CMakeFiles/NightlyTest.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyTest.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyTest.dir/build.make b/release/CMakeFiles/NightlyTest.dir/build.make new file mode 100644 index 0000000..5e50eff --- /dev/null +++ b/release/CMakeFiles/NightlyTest.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyTest. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyTest.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyTest.dir/progress.make + +CMakeFiles/NightlyTest: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyTest + +NightlyTest: CMakeFiles/NightlyTest +NightlyTest: CMakeFiles/NightlyTest.dir/build.make +.PHONY : NightlyTest + +# Rule to build all files generated by this target. +CMakeFiles/NightlyTest.dir/build: NightlyTest +.PHONY : CMakeFiles/NightlyTest.dir/build + +CMakeFiles/NightlyTest.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyTest.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyTest.dir/clean + +CMakeFiles/NightlyTest.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyTest.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyTest.dir/depend + diff --git a/release/CMakeFiles/NightlyTest.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyTest.dir/cmake_clean.cmake new file mode 100644 index 0000000..8f40bb8 --- /dev/null +++ b/release/CMakeFiles/NightlyTest.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyTest" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyTest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyTest.dir/compiler_depend.make b/release/CMakeFiles/NightlyTest.dir/compiler_depend.make new file mode 100644 index 0000000..03d9c29 --- /dev/null +++ b/release/CMakeFiles/NightlyTest.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyTest. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyTest.dir/compiler_depend.ts b/release/CMakeFiles/NightlyTest.dir/compiler_depend.ts new file mode 100644 index 0000000..8bb891c --- /dev/null +++ b/release/CMakeFiles/NightlyTest.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyTest. diff --git a/release/CMakeFiles/NightlyTest.dir/progress.make b/release/CMakeFiles/NightlyTest.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyTest.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake b/release/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake new file mode 100644 index 0000000..45a25b7 --- /dev/null +++ b/release/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/CMakeFiles/NightlyUpdate.dir/build.make b/release/CMakeFiles/NightlyUpdate.dir/build.make new file mode 100644 index 0000000..c95f81d --- /dev/null +++ b/release/CMakeFiles/NightlyUpdate.dir/build.make @@ -0,0 +1,87 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Utility rule file for NightlyUpdate. + +# Include any custom commands dependencies for this target. +include CMakeFiles/NightlyUpdate.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/NightlyUpdate.dir/progress.make + +CMakeFiles/NightlyUpdate: + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest -D NightlyUpdate + +NightlyUpdate: CMakeFiles/NightlyUpdate +NightlyUpdate: CMakeFiles/NightlyUpdate.dir/build.make +.PHONY : NightlyUpdate + +# Rule to build all files generated by this target. +CMakeFiles/NightlyUpdate.dir/build: NightlyUpdate +.PHONY : CMakeFiles/NightlyUpdate.dir/build + +CMakeFiles/NightlyUpdate.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyUpdate.dir/clean + +CMakeFiles/NightlyUpdate.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/NightlyUpdate.dir/depend + diff --git a/release/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake b/release/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake new file mode 100644 index 0000000..0f10e82 --- /dev/null +++ b/release/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyUpdate" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyUpdate.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/CMakeFiles/NightlyUpdate.dir/compiler_depend.make b/release/CMakeFiles/NightlyUpdate.dir/compiler_depend.make new file mode 100644 index 0000000..924c826 --- /dev/null +++ b/release/CMakeFiles/NightlyUpdate.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for NightlyUpdate. +# This may be replaced when dependencies are built. diff --git a/release/CMakeFiles/NightlyUpdate.dir/compiler_depend.ts b/release/CMakeFiles/NightlyUpdate.dir/compiler_depend.ts new file mode 100644 index 0000000..7cf66de --- /dev/null +++ b/release/CMakeFiles/NightlyUpdate.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for NightlyUpdate. diff --git a/release/CMakeFiles/NightlyUpdate.dir/progress.make b/release/CMakeFiles/NightlyUpdate.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/release/CMakeFiles/NightlyUpdate.dir/progress.make @@ -0,0 +1 @@ + diff --git a/release/CMakeFiles/TargetDirectories.txt b/release/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..8e33afe --- /dev/null +++ b/release/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,182 @@ +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/Experimental.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/Nightly.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/Continuous.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyMemoryCheck.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyStart.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyUpdate.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyConfigure.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyBuild.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyTest.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyCoverage.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlyMemCheck.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/NightlySubmit.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalStart.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalUpdate.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalConfigure.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalBuild.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalTest.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalCoverage.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalMemCheck.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ExperimentalSubmit.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousStart.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousUpdate.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousConfigure.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousBuild.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousTest.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousCoverage.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousMemCheck.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/ContinuousSubmit.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/awp.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/error.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/lpmcl3d.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/pmcl3d.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/mapping.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/topography.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/topography_no_bc.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/kernels/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/kernels/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/kernels/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/initializations/CMakeFiles/topography_initializations.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/initializations/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/initializations/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/initializations/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/metrics/CMakeFiles/metrics.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/metrics/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/metrics/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/metrics/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/readers/CMakeFiles/topography_readers.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/readers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/readers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/readers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/geometry/CMakeFiles/geometry.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/geometry/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/geometry/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/geometry/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/sources/CMakeFiles/topography_sources.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/sources/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/sources/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/sources/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/receivers/CMakeFiles/topography_receivers.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/receivers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/receivers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/receivers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/functions/CMakeFiles/functions.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/functions/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/functions/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/functions/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse/CMakeFiles/argparse.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi/CMakeFiles/mpi.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation/CMakeFiles/interpolation.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers/CMakeFiles/buffers.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers/CMakeFiles/readers.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/vtk/CMakeFiles/vtk.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/vtk/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/vtk/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/vtk/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test/CMakeFiles/testing.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum/CMakeFiles/checksum.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid/CMakeFiles/grid.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/CMakeFiles/test_attenuation.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/metrics/CMakeFiles/test_metrics.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/metrics/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/metrics/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/metrics/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/readers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/readers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/readers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/geometry/CMakeFiles/test_topography_geometry.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/geometry/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/geometry/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/geometry/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/sources/CMakeFiles/test_topography_sources.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/sources/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/sources/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/sources/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/receivers/CMakeFiles/test_topography_receivers.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/receivers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/receivers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/receivers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/accuracy/CMakeFiles/test_convergence.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/accuracy/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/accuracy/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/accuracy/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/mapping/CMakeFiles/test_mapping.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/mapping/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/mapping/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/topography/mapping/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/buffers/CMakeFiles/test_buffer.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/buffers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/buffers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/buffers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/grid/CMakeFiles/test_grid_3d.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/grid/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/grid/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/grid/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/mpi/CMakeFiles/test_indexed.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/mpi/CMakeFiles/test_mpi_io.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/mpi/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/mpi/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/mpi/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/interpolation/CMakeFiles/test_interpolation.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/interpolation/CMakeFiles/test_interpolationcu.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/interpolation/CMakeFiles/test_lagrange.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/interpolation/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/interpolation/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/interpolation/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/readers/CMakeFiles/test_input.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/readers/CMakeFiles/test_version.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/readers/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/readers/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/readers/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/CMakeFiles/rebuild_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/write_grid/CMakeFiles/write_grid.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/write_grid/CMakeFiles/test.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/write_grid/CMakeFiles/edit_cache.dir +/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/write_grid/CMakeFiles/rebuild_cache.dir diff --git a/release/CMakeFiles/cmake.check_cache b/release/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/release/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/release/CMakeFiles/progress.marks b/release/CMakeFiles/progress.marks new file mode 100644 index 0000000..29d6383 --- /dev/null +++ b/release/CMakeFiles/progress.marks @@ -0,0 +1 @@ +100 diff --git a/release/CTestTestfile.cmake b/release/CTestTestfile.cmake new file mode 100644 index 0000000..ad9a8e4 --- /dev/null +++ b/release/CTestTestfile.cmake @@ -0,0 +1,9 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("src") +subdirs("tests") +subdirs("tools") diff --git a/release/DartConfiguration.tcl b/release/DartConfiguration.tcl new file mode 100644 index 0000000..31559b5 --- /dev/null +++ b/release/DartConfiguration.tcl @@ -0,0 +1,106 @@ +# This file is configured by CMake automatically as DartConfiguration.tcl +# If you choose not to use CMake, this file may be hand configured, by +# filling in the required variables. + + +# Configuration directories and files +SourceDirectory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp +BuildDirectory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Where to place the cost data store +CostDataFile: + +# Site is something like machine.domain, i.e. pragmatic.crd +Site: login4 + +# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ +BuildName: Linux-cc + +# Subprojects +LabelsForSubprojects: + +# Submission information +SubmitURL: http:// +SubmitInactivityTimeout: + +# Dashboard start time +NightlyStartTime: 00:00:00 EDT + +# Commands for the build/test/submit cycle +ConfigureCommand: "/autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake" "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp" +MakeCommand: /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" +DefaultCTestConfigurationType: Release + +# version control +UpdateVersionOnly: + +# CVS options +# Default is "-d -P -A" +CVSCommand: +CVSUpdateOptions: + +# Subversion options +SVNCommand: +SVNOptions: +SVNUpdateOptions: + +# Git options +GITCommand: /usr/bin/git +GITInitSubmodules: +GITUpdateOptions: +GITUpdateCustom: + +# Perforce options +P4Command: +P4Client: +P4Options: +P4UpdateOptions: +P4UpdateCustom: + +# Generic update command +UpdateCommand: /usr/bin/git +UpdateOptions: +UpdateType: git + +# Compiler info +Compiler: +CompilerVersion: + +# Dynamic analysis (MemCheck) +PurifyCommand: +ValgrindCommand: +ValgrindCommandOptions: +DrMemoryCommand: +DrMemoryCommandOptions: +CudaSanitizerCommand: +CudaSanitizerCommandOptions: +MemoryCheckType: +MemoryCheckSanitizerOptions: +MemoryCheckCommand: /sw/summit/cuda/11.7.1/bin/cuda-memcheck +MemoryCheckCommandOptions: +MemoryCheckSuppressionFile: + +# Coverage +CoverageCommand: /sw/summit/gcc/9.3.0-2/bin/gcov +CoverageExtraFlags: -l + +# Testing options +# TimeOut is the amount of time in seconds to wait for processes +# to complete during testing. After TimeOut seconds, the +# process will be summarily terminated. +# Currently set to 25 minutes +TimeOut: 1500 + +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: + +UseLaunchers: +CurlOptions: +# warning, if you add new options here that have to do with submit, +# you have to update cmCTestSubmitCommand.cxx + +# For CTest submissions that timeout, these options +# specify behavior for retrying the submission +CTestSubmitRetryDelay: 5 +CTestSubmitRetryCount: 3 diff --git a/release/Makefile b/release/Makefile new file mode 100644 index 0000000..3f55033 --- /dev/null +++ b/release/Makefile @@ -0,0 +1,1145 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named Experimental + +# Build rule for target. +Experimental: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 Experimental +.PHONY : Experimental + +# fast build rule for target. +Experimental/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/build +.PHONY : Experimental/fast + +#============================================================================= +# Target rules for targets named Nightly + +# Build rule for target. +Nightly: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 Nightly +.PHONY : Nightly + +# fast build rule for target. +Nightly/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/build +.PHONY : Nightly/fast + +#============================================================================= +# Target rules for targets named Continuous + +# Build rule for target. +Continuous: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 Continuous +.PHONY : Continuous + +# fast build rule for target. +Continuous/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/build +.PHONY : Continuous/fast + +#============================================================================= +# Target rules for targets named NightlyMemoryCheck + +# Build rule for target. +NightlyMemoryCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyMemoryCheck +.PHONY : NightlyMemoryCheck + +# fast build rule for target. +NightlyMemoryCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/build +.PHONY : NightlyMemoryCheck/fast + +#============================================================================= +# Target rules for targets named NightlyStart + +# Build rule for target. +NightlyStart: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyStart +.PHONY : NightlyStart + +# fast build rule for target. +NightlyStart/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/build +.PHONY : NightlyStart/fast + +#============================================================================= +# Target rules for targets named NightlyUpdate + +# Build rule for target. +NightlyUpdate: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyUpdate +.PHONY : NightlyUpdate + +# fast build rule for target. +NightlyUpdate/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/build +.PHONY : NightlyUpdate/fast + +#============================================================================= +# Target rules for targets named NightlyConfigure + +# Build rule for target. +NightlyConfigure: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyConfigure +.PHONY : NightlyConfigure + +# fast build rule for target. +NightlyConfigure/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/build +.PHONY : NightlyConfigure/fast + +#============================================================================= +# Target rules for targets named NightlyBuild + +# Build rule for target. +NightlyBuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyBuild +.PHONY : NightlyBuild + +# fast build rule for target. +NightlyBuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/build +.PHONY : NightlyBuild/fast + +#============================================================================= +# Target rules for targets named NightlyTest + +# Build rule for target. +NightlyTest: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyTest +.PHONY : NightlyTest + +# fast build rule for target. +NightlyTest/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/build +.PHONY : NightlyTest/fast + +#============================================================================= +# Target rules for targets named NightlyCoverage + +# Build rule for target. +NightlyCoverage: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyCoverage +.PHONY : NightlyCoverage + +# fast build rule for target. +NightlyCoverage/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/build +.PHONY : NightlyCoverage/fast + +#============================================================================= +# Target rules for targets named NightlyMemCheck + +# Build rule for target. +NightlyMemCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyMemCheck +.PHONY : NightlyMemCheck + +# fast build rule for target. +NightlyMemCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/build +.PHONY : NightlyMemCheck/fast + +#============================================================================= +# Target rules for targets named NightlySubmit + +# Build rule for target. +NightlySubmit: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlySubmit +.PHONY : NightlySubmit + +# fast build rule for target. +NightlySubmit/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/build +.PHONY : NightlySubmit/fast + +#============================================================================= +# Target rules for targets named ExperimentalStart + +# Build rule for target. +ExperimentalStart: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalStart +.PHONY : ExperimentalStart + +# fast build rule for target. +ExperimentalStart/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/build +.PHONY : ExperimentalStart/fast + +#============================================================================= +# Target rules for targets named ExperimentalUpdate + +# Build rule for target. +ExperimentalUpdate: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalUpdate +.PHONY : ExperimentalUpdate + +# fast build rule for target. +ExperimentalUpdate/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/build +.PHONY : ExperimentalUpdate/fast + +#============================================================================= +# Target rules for targets named ExperimentalConfigure + +# Build rule for target. +ExperimentalConfigure: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalConfigure +.PHONY : ExperimentalConfigure + +# fast build rule for target. +ExperimentalConfigure/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/build +.PHONY : ExperimentalConfigure/fast + +#============================================================================= +# Target rules for targets named ExperimentalBuild + +# Build rule for target. +ExperimentalBuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalBuild +.PHONY : ExperimentalBuild + +# fast build rule for target. +ExperimentalBuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/build +.PHONY : ExperimentalBuild/fast + +#============================================================================= +# Target rules for targets named ExperimentalTest + +# Build rule for target. +ExperimentalTest: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalTest +.PHONY : ExperimentalTest + +# fast build rule for target. +ExperimentalTest/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/build +.PHONY : ExperimentalTest/fast + +#============================================================================= +# Target rules for targets named ExperimentalCoverage + +# Build rule for target. +ExperimentalCoverage: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalCoverage +.PHONY : ExperimentalCoverage + +# fast build rule for target. +ExperimentalCoverage/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/build +.PHONY : ExperimentalCoverage/fast + +#============================================================================= +# Target rules for targets named ExperimentalMemCheck + +# Build rule for target. +ExperimentalMemCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalMemCheck +.PHONY : ExperimentalMemCheck + +# fast build rule for target. +ExperimentalMemCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/build +.PHONY : ExperimentalMemCheck/fast + +#============================================================================= +# Target rules for targets named ExperimentalSubmit + +# Build rule for target. +ExperimentalSubmit: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalSubmit +.PHONY : ExperimentalSubmit + +# fast build rule for target. +ExperimentalSubmit/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/build +.PHONY : ExperimentalSubmit/fast + +#============================================================================= +# Target rules for targets named ContinuousStart + +# Build rule for target. +ContinuousStart: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousStart +.PHONY : ContinuousStart + +# fast build rule for target. +ContinuousStart/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/build +.PHONY : ContinuousStart/fast + +#============================================================================= +# Target rules for targets named ContinuousUpdate + +# Build rule for target. +ContinuousUpdate: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousUpdate +.PHONY : ContinuousUpdate + +# fast build rule for target. +ContinuousUpdate/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/build +.PHONY : ContinuousUpdate/fast + +#============================================================================= +# Target rules for targets named ContinuousConfigure + +# Build rule for target. +ContinuousConfigure: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousConfigure +.PHONY : ContinuousConfigure + +# fast build rule for target. +ContinuousConfigure/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/build +.PHONY : ContinuousConfigure/fast + +#============================================================================= +# Target rules for targets named ContinuousBuild + +# Build rule for target. +ContinuousBuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousBuild +.PHONY : ContinuousBuild + +# fast build rule for target. +ContinuousBuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/build +.PHONY : ContinuousBuild/fast + +#============================================================================= +# Target rules for targets named ContinuousTest + +# Build rule for target. +ContinuousTest: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousTest +.PHONY : ContinuousTest + +# fast build rule for target. +ContinuousTest/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/build +.PHONY : ContinuousTest/fast + +#============================================================================= +# Target rules for targets named ContinuousCoverage + +# Build rule for target. +ContinuousCoverage: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousCoverage +.PHONY : ContinuousCoverage + +# fast build rule for target. +ContinuousCoverage/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/build +.PHONY : ContinuousCoverage/fast + +#============================================================================= +# Target rules for targets named ContinuousMemCheck + +# Build rule for target. +ContinuousMemCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousMemCheck +.PHONY : ContinuousMemCheck + +# fast build rule for target. +ContinuousMemCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/build +.PHONY : ContinuousMemCheck/fast + +#============================================================================= +# Target rules for targets named ContinuousSubmit + +# Build rule for target. +ContinuousSubmit: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousSubmit +.PHONY : ContinuousSubmit + +# fast build rule for target. +ContinuousSubmit/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/build +.PHONY : ContinuousSubmit/fast + +#============================================================================= +# Target rules for targets named awp + +# Build rule for target. +awp: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 awp +.PHONY : awp + +# fast build rule for target. +awp/fast: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/build +.PHONY : awp/fast + +#============================================================================= +# Target rules for targets named error + +# Build rule for target. +error: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 error +.PHONY : error + +# fast build rule for target. +error/fast: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/build +.PHONY : error/fast + +#============================================================================= +# Target rules for targets named lpmcl3d + +# Build rule for target. +lpmcl3d: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 lpmcl3d +.PHONY : lpmcl3d + +# fast build rule for target. +lpmcl3d/fast: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/build +.PHONY : lpmcl3d/fast + +#============================================================================= +# Target rules for targets named pmcl3d + +# Build rule for target. +pmcl3d: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 pmcl3d +.PHONY : pmcl3d + +# fast build rule for target. +pmcl3d/fast: + $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/build +.PHONY : pmcl3d/fast + +#============================================================================= +# Target rules for targets named mapping + +# Build rule for target. +mapping: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mapping +.PHONY : mapping + +# fast build rule for target. +mapping/fast: + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/mapping.dir/build.make src/topography/CMakeFiles/mapping.dir/build +.PHONY : mapping/fast + +#============================================================================= +# Target rules for targets named topography + +# Build rule for target. +topography: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 topography +.PHONY : topography + +# fast build rule for target. +topography/fast: + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography.dir/build.make src/topography/CMakeFiles/topography.dir/build +.PHONY : topography/fast + +#============================================================================= +# Target rules for targets named topography_no_bc + +# Build rule for target. +topography_no_bc: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 topography_no_bc +.PHONY : topography_no_bc + +# fast build rule for target. +topography_no_bc/fast: + $(MAKE) $(MAKESILENT) -f src/topography/CMakeFiles/topography_no_bc.dir/build.make src/topography/CMakeFiles/topography_no_bc.dir/build +.PHONY : topography_no_bc/fast + +#============================================================================= +# Target rules for targets named topography_initializations + +# Build rule for target. +topography_initializations: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 topography_initializations +.PHONY : topography_initializations + +# fast build rule for target. +topography_initializations/fast: + $(MAKE) $(MAKESILENT) -f src/topography/initializations/CMakeFiles/topography_initializations.dir/build.make src/topography/initializations/CMakeFiles/topography_initializations.dir/build +.PHONY : topography_initializations/fast + +#============================================================================= +# Target rules for targets named metrics + +# Build rule for target. +metrics: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 metrics +.PHONY : metrics + +# fast build rule for target. +metrics/fast: + $(MAKE) $(MAKESILENT) -f src/topography/metrics/CMakeFiles/metrics.dir/build.make src/topography/metrics/CMakeFiles/metrics.dir/build +.PHONY : metrics/fast + +#============================================================================= +# Target rules for targets named topography_readers + +# Build rule for target. +topography_readers: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 topography_readers +.PHONY : topography_readers + +# fast build rule for target. +topography_readers/fast: + $(MAKE) $(MAKESILENT) -f src/topography/readers/CMakeFiles/topography_readers.dir/build.make src/topography/readers/CMakeFiles/topography_readers.dir/build +.PHONY : topography_readers/fast + +#============================================================================= +# Target rules for targets named geometry + +# Build rule for target. +geometry: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 geometry +.PHONY : geometry + +# fast build rule for target. +geometry/fast: + $(MAKE) $(MAKESILENT) -f src/topography/geometry/CMakeFiles/geometry.dir/build.make src/topography/geometry/CMakeFiles/geometry.dir/build +.PHONY : geometry/fast + +#============================================================================= +# Target rules for targets named topography_sources + +# Build rule for target. +topography_sources: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 topography_sources +.PHONY : topography_sources + +# fast build rule for target. +topography_sources/fast: + $(MAKE) $(MAKESILENT) -f src/topography/sources/CMakeFiles/topography_sources.dir/build.make src/topography/sources/CMakeFiles/topography_sources.dir/build +.PHONY : topography_sources/fast + +#============================================================================= +# Target rules for targets named topography_receivers + +# Build rule for target. +topography_receivers: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 topography_receivers +.PHONY : topography_receivers + +# fast build rule for target. +topography_receivers/fast: + $(MAKE) $(MAKESILENT) -f src/topography/receivers/CMakeFiles/topography_receivers.dir/build.make src/topography/receivers/CMakeFiles/topography_receivers.dir/build +.PHONY : topography_receivers/fast + +#============================================================================= +# Target rules for targets named functions + +# Build rule for target. +functions: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 functions +.PHONY : functions + +# fast build rule for target. +functions/fast: + $(MAKE) $(MAKESILENT) -f src/topography/functions/CMakeFiles/functions.dir/build.make src/topography/functions/CMakeFiles/functions.dir/build +.PHONY : functions/fast + +#============================================================================= +# Target rules for targets named argparse + +# Build rule for target. +argparse: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 argparse +.PHONY : argparse + +# fast build rule for target. +argparse/fast: + $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/build +.PHONY : argparse/fast + +#============================================================================= +# Target rules for targets named mpi + +# Build rule for target. +mpi: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mpi +.PHONY : mpi + +# fast build rule for target. +mpi/fast: + $(MAKE) $(MAKESILENT) -f src/mpi/CMakeFiles/mpi.dir/build.make src/mpi/CMakeFiles/mpi.dir/build +.PHONY : mpi/fast + +#============================================================================= +# Target rules for targets named interpolation + +# Build rule for target. +interpolation: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 interpolation +.PHONY : interpolation + +# fast build rule for target. +interpolation/fast: + $(MAKE) $(MAKESILENT) -f src/interpolation/CMakeFiles/interpolation.dir/build.make src/interpolation/CMakeFiles/interpolation.dir/build +.PHONY : interpolation/fast + +#============================================================================= +# Target rules for targets named buffers + +# Build rule for target. +buffers: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 buffers +.PHONY : buffers + +# fast build rule for target. +buffers/fast: + $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/build +.PHONY : buffers/fast + +#============================================================================= +# Target rules for targets named readers + +# Build rule for target. +readers: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 readers +.PHONY : readers + +# fast build rule for target. +readers/fast: + $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/build +.PHONY : readers/fast + +#============================================================================= +# Target rules for targets named vtk + +# Build rule for target. +vtk: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 vtk +.PHONY : vtk + +# fast build rule for target. +vtk/fast: + $(MAKE) $(MAKESILENT) -f src/vtk/CMakeFiles/vtk.dir/build.make src/vtk/CMakeFiles/vtk.dir/build +.PHONY : vtk/fast + +#============================================================================= +# Target rules for targets named testing + +# Build rule for target. +testing: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 testing +.PHONY : testing + +# fast build rule for target. +testing/fast: + $(MAKE) $(MAKESILENT) -f src/test/CMakeFiles/testing.dir/build.make src/test/CMakeFiles/testing.dir/build +.PHONY : testing/fast + +#============================================================================= +# Target rules for targets named checksum + +# Build rule for target. +checksum: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 checksum +.PHONY : checksum + +# fast build rule for target. +checksum/fast: + $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/build +.PHONY : checksum/fast + +#============================================================================= +# Target rules for targets named grid + +# Build rule for target. +grid: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 grid +.PHONY : grid + +# fast build rule for target. +grid/fast: + $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/build +.PHONY : grid/fast + +#============================================================================= +# Target rules for targets named test_attenuation + +# Build rule for target. +test_attenuation: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_attenuation +.PHONY : test_attenuation + +# fast build rule for target. +test_attenuation/fast: + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/test_attenuation.dir/build.make tests/CMakeFiles/test_attenuation.dir/build +.PHONY : test_attenuation/fast + +#============================================================================= +# Target rules for targets named test_metrics + +# Build rule for target. +test_metrics: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_metrics +.PHONY : test_metrics + +# fast build rule for target. +test_metrics/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/metrics/CMakeFiles/test_metrics.dir/build.make tests/topography/metrics/CMakeFiles/test_metrics.dir/build +.PHONY : test_metrics/fast + +#============================================================================= +# Target rules for targets named test_topography_serial_reader + +# Build rule for target. +test_topography_serial_reader: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_topography_serial_reader +.PHONY : test_topography_serial_reader + +# fast build rule for target. +test_topography_serial_reader/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/build.make tests/topography/readers/CMakeFiles/test_topography_serial_reader.dir/build +.PHONY : test_topography_serial_reader/fast + +#============================================================================= +# Target rules for targets named test_topography_geometry + +# Build rule for target. +test_topography_geometry: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_topography_geometry +.PHONY : test_topography_geometry + +# fast build rule for target. +test_topography_geometry/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/build.make tests/topography/geometry/CMakeFiles/test_topography_geometry.dir/build +.PHONY : test_topography_geometry/fast + +#============================================================================= +# Target rules for targets named test_topography_sources + +# Build rule for target. +test_topography_sources: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_topography_sources +.PHONY : test_topography_sources + +# fast build rule for target. +test_topography_sources/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources.dir/build +.PHONY : test_topography_sources/fast + +#============================================================================= +# Target rules for targets named test_topography_sources_dm + +# Build rule for target. +test_topography_sources_dm: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_topography_sources_dm +.PHONY : test_topography_sources_dm + +# fast build rule for target. +test_topography_sources_dm/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/build.make tests/topography/sources/CMakeFiles/test_topography_sources_dm.dir/build +.PHONY : test_topography_sources_dm/fast + +#============================================================================= +# Target rules for targets named test_topography_source_distribution + +# Build rule for target. +test_topography_source_distribution: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_topography_source_distribution +.PHONY : test_topography_source_distribution + +# fast build rule for target. +test_topography_source_distribution/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/build.make tests/topography/sources/CMakeFiles/test_topography_source_distribution.dir/build +.PHONY : test_topography_source_distribution/fast + +#============================================================================= +# Target rules for targets named test_topography_receivers + +# Build rule for target. +test_topography_receivers: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_topography_receivers +.PHONY : test_topography_receivers + +# fast build rule for target. +test_topography_receivers/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/build.make tests/topography/receivers/CMakeFiles/test_topography_receivers.dir/build +.PHONY : test_topography_receivers/fast + +#============================================================================= +# Target rules for targets named test_convergence + +# Build rule for target. +test_convergence: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_convergence +.PHONY : test_convergence + +# fast build rule for target. +test_convergence/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/accuracy/CMakeFiles/test_convergence.dir/build.make tests/topography/accuracy/CMakeFiles/test_convergence.dir/build +.PHONY : test_convergence/fast + +#============================================================================= +# Target rules for targets named test_mapping + +# Build rule for target. +test_mapping: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_mapping +.PHONY : test_mapping + +# fast build rule for target. +test_mapping/fast: + $(MAKE) $(MAKESILENT) -f tests/topography/mapping/CMakeFiles/test_mapping.dir/build.make tests/topography/mapping/CMakeFiles/test_mapping.dir/build +.PHONY : test_mapping/fast + +#============================================================================= +# Target rules for targets named test_buffer + +# Build rule for target. +test_buffer: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_buffer +.PHONY : test_buffer + +# fast build rule for target. +test_buffer/fast: + $(MAKE) $(MAKESILENT) -f tests/buffers/CMakeFiles/test_buffer.dir/build.make tests/buffers/CMakeFiles/test_buffer.dir/build +.PHONY : test_buffer/fast + +#============================================================================= +# Target rules for targets named test_grid_3d + +# Build rule for target. +test_grid_3d: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_grid_3d +.PHONY : test_grid_3d + +# fast build rule for target. +test_grid_3d/fast: + $(MAKE) $(MAKESILENT) -f tests/grid/CMakeFiles/test_grid_3d.dir/build.make tests/grid/CMakeFiles/test_grid_3d.dir/build +.PHONY : test_grid_3d/fast + +#============================================================================= +# Target rules for targets named test_indexed + +# Build rule for target. +test_indexed: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_indexed +.PHONY : test_indexed + +# fast build rule for target. +test_indexed/fast: + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_indexed.dir/build.make tests/mpi/CMakeFiles/test_indexed.dir/build +.PHONY : test_indexed/fast + +#============================================================================= +# Target rules for targets named test_mpi_io + +# Build rule for target. +test_mpi_io: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_mpi_io +.PHONY : test_mpi_io + +# fast build rule for target. +test_mpi_io/fast: + $(MAKE) $(MAKESILENT) -f tests/mpi/CMakeFiles/test_mpi_io.dir/build.make tests/mpi/CMakeFiles/test_mpi_io.dir/build +.PHONY : test_mpi_io/fast + +#============================================================================= +# Target rules for targets named test_interpolation + +# Build rule for target. +test_interpolation: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_interpolation +.PHONY : test_interpolation + +# fast build rule for target. +test_interpolation/fast: + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolation.dir/build.make tests/interpolation/CMakeFiles/test_interpolation.dir/build +.PHONY : test_interpolation/fast + +#============================================================================= +# Target rules for targets named test_interpolationcu + +# Build rule for target. +test_interpolationcu: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_interpolationcu +.PHONY : test_interpolationcu + +# fast build rule for target. +test_interpolationcu/fast: + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_interpolationcu.dir/build.make tests/interpolation/CMakeFiles/test_interpolationcu.dir/build +.PHONY : test_interpolationcu/fast + +#============================================================================= +# Target rules for targets named test_lagrange + +# Build rule for target. +test_lagrange: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_lagrange +.PHONY : test_lagrange + +# fast build rule for target. +test_lagrange/fast: + $(MAKE) $(MAKESILENT) -f tests/interpolation/CMakeFiles/test_lagrange.dir/build.make tests/interpolation/CMakeFiles/test_lagrange.dir/build +.PHONY : test_lagrange/fast + +#============================================================================= +# Target rules for targets named test_input + +# Build rule for target. +test_input: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_input +.PHONY : test_input + +# fast build rule for target. +test_input/fast: + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_input.dir/build.make tests/readers/CMakeFiles/test_input.dir/build +.PHONY : test_input/fast + +#============================================================================= +# Target rules for targets named test_version + +# Build rule for target. +test_version: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 test_version +.PHONY : test_version + +# fast build rule for target. +test_version/fast: + $(MAKE) $(MAKESILENT) -f tests/readers/CMakeFiles/test_version.dir/build.make tests/readers/CMakeFiles/test_version.dir/build +.PHONY : test_version/fast + +#============================================================================= +# Target rules for targets named write_grid + +# Build rule for target. +write_grid: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 write_grid +.PHONY : write_grid + +# fast build rule for target. +write_grid/fast: + $(MAKE) $(MAKESILENT) -f tools/write_grid/CMakeFiles/write_grid.dir/build.make tools/write_grid/CMakeFiles/write_grid.dir/build +.PHONY : write_grid/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" + @echo "... Continuous" + @echo "... ContinuousBuild" + @echo "... ContinuousConfigure" + @echo "... ContinuousCoverage" + @echo "... ContinuousMemCheck" + @echo "... ContinuousStart" + @echo "... ContinuousSubmit" + @echo "... ContinuousTest" + @echo "... ContinuousUpdate" + @echo "... Experimental" + @echo "... ExperimentalBuild" + @echo "... ExperimentalConfigure" + @echo "... ExperimentalCoverage" + @echo "... ExperimentalMemCheck" + @echo "... ExperimentalStart" + @echo "... ExperimentalSubmit" + @echo "... ExperimentalTest" + @echo "... ExperimentalUpdate" + @echo "... Nightly" + @echo "... NightlyBuild" + @echo "... NightlyConfigure" + @echo "... NightlyCoverage" + @echo "... NightlyMemCheck" + @echo "... NightlyMemoryCheck" + @echo "... NightlyStart" + @echo "... NightlySubmit" + @echo "... NightlyTest" + @echo "... NightlyUpdate" + @echo "... argparse" + @echo "... awp" + @echo "... buffers" + @echo "... checksum" + @echo "... error" + @echo "... functions" + @echo "... geometry" + @echo "... grid" + @echo "... interpolation" + @echo "... lpmcl3d" + @echo "... mapping" + @echo "... metrics" + @echo "... mpi" + @echo "... pmcl3d" + @echo "... readers" + @echo "... test_attenuation" + @echo "... test_buffer" + @echo "... test_convergence" + @echo "... test_grid_3d" + @echo "... test_indexed" + @echo "... test_input" + @echo "... test_interpolation" + @echo "... test_interpolationcu" + @echo "... test_lagrange" + @echo "... test_mapping" + @echo "... test_metrics" + @echo "... test_mpi_io" + @echo "... test_topography_geometry" + @echo "... test_topography_receivers" + @echo "... test_topography_serial_reader" + @echo "... test_topography_source_distribution" + @echo "... test_topography_sources" + @echo "... test_topography_sources_dm" + @echo "... test_version" + @echo "... testing" + @echo "... topography" + @echo "... topography_initializations" + @echo "... topography_no_bc" + @echo "... topography_readers" + @echo "... topography_receivers" + @echo "... topography_sources" + @echo "... vtk" + @echo "... write_grid" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/cmake_install.cmake b/release/cmake_install.cmake new file mode 100644 index 0000000..dd5e930 --- /dev/null +++ b/release/cmake_install.cmake @@ -0,0 +1,62 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tests/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/tools/cmake_install.cmake") + +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/release/src/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/CMakeFiles/progress.marks b/release/src/CMakeFiles/progress.marks new file mode 100644 index 0000000..2bbd69c --- /dev/null +++ b/release/src/CMakeFiles/progress.marks @@ -0,0 +1 @@ +70 diff --git a/release/src/CTestTestfile.cmake b/release/src/CTestTestfile.cmake new file mode 100644 index 0000000..4bfb6f6 --- /dev/null +++ b/release/src/CTestTestfile.cmake @@ -0,0 +1,17 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("awp") +subdirs("topography") +subdirs("argparse") +subdirs("mpi") +subdirs("interpolation") +subdirs("buffers") +subdirs("readers") +subdirs("vtk") +subdirs("test") +subdirs("checksum") +subdirs("grid") diff --git a/release/src/Makefile b/release/src/Makefile new file mode 100644 index 0000000..ab85d98 --- /dev/null +++ b/release/src/Makefile @@ -0,0 +1,151 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src//CMakeFiles/progress.marks + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/src/argparse/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/argparse/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/argparse/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/argparse/CMakeFiles/argparse.dir/DependInfo.cmake b/release/src/argparse/CMakeFiles/argparse.dir/DependInfo.cmake new file mode 100644 index 0000000..888034f --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/DependInfo.cmake @@ -0,0 +1,19 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse/argparse.c" "src/argparse/CMakeFiles/argparse.dir/argparse.c.o" "gcc" "src/argparse/CMakeFiles/argparse.dir/argparse.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/argparse/CMakeFiles/argparse.dir/argparse.c.o b/release/src/argparse/CMakeFiles/argparse.dir/argparse.c.o new file mode 100644 index 0000000000000000000000000000000000000000..fe89215759b3b9f261a7aea76d374662fea3ec97 GIT binary patch literal 13760 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 literal 0 HcmV?d00001 diff --git a/release/src/argparse/CMakeFiles/argparse.dir/argparse.c.o.d b/release/src/argparse/CMakeFiles/argparse.dir/argparse.c.o.d new file mode 100644 index 0000000..75bdfd5 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/argparse.c.o.d @@ -0,0 +1,24 @@ +src/argparse/CMakeFiles/argparse.dir/argparse.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse/argparse.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /usr/include/string.h /usr/include/assert.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/argparse/argparse.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h diff --git a/release/src/argparse/CMakeFiles/argparse.dir/build.make b/release/src/argparse/CMakeFiles/argparse.dir/build.make new file mode 100644 index 0000000..f9062d1 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/build.make @@ -0,0 +1,111 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/argparse/CMakeFiles/argparse.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/argparse/CMakeFiles/argparse.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/argparse/CMakeFiles/argparse.dir/progress.make + +# Include the compile flags for this target's objects. +include src/argparse/CMakeFiles/argparse.dir/flags.make + +src/argparse/CMakeFiles/argparse.dir/argparse.c.o: src/argparse/CMakeFiles/argparse.dir/flags.make +src/argparse/CMakeFiles/argparse.dir/argparse.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse/argparse.c +src/argparse/CMakeFiles/argparse.dir/argparse.c.o: src/argparse/CMakeFiles/argparse.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/argparse/CMakeFiles/argparse.dir/argparse.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/argparse/CMakeFiles/argparse.dir/argparse.c.o -MF CMakeFiles/argparse.dir/argparse.c.o.d -o CMakeFiles/argparse.dir/argparse.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse/argparse.c + +src/argparse/CMakeFiles/argparse.dir/argparse.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/argparse.dir/argparse.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse/argparse.c > CMakeFiles/argparse.dir/argparse.c.i + +src/argparse/CMakeFiles/argparse.dir/argparse.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/argparse.dir/argparse.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse/argparse.c -o CMakeFiles/argparse.dir/argparse.c.s + +# Object files for target argparse +argparse_OBJECTS = \ +"CMakeFiles/argparse.dir/argparse.c.o" + +# External object files for target argparse +argparse_EXTERNAL_OBJECTS = + +src/argparse/libargparse.a: src/argparse/CMakeFiles/argparse.dir/argparse.c.o +src/argparse/libargparse.a: src/argparse/CMakeFiles/argparse.dir/build.make +src/argparse/libargparse.a: src/argparse/CMakeFiles/argparse.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C static library libargparse.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse && $(CMAKE_COMMAND) -P CMakeFiles/argparse.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/argparse.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/argparse/CMakeFiles/argparse.dir/build: src/argparse/libargparse.a +.PHONY : src/argparse/CMakeFiles/argparse.dir/build + +src/argparse/CMakeFiles/argparse.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse && $(CMAKE_COMMAND) -P CMakeFiles/argparse.dir/cmake_clean.cmake +.PHONY : src/argparse/CMakeFiles/argparse.dir/clean + +src/argparse/CMakeFiles/argparse.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse/CMakeFiles/argparse.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/argparse/CMakeFiles/argparse.dir/depend + diff --git a/release/src/argparse/CMakeFiles/argparse.dir/cmake_clean.cmake b/release/src/argparse/CMakeFiles/argparse.dir/cmake_clean.cmake new file mode 100644 index 0000000..ad7b4e8 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/argparse.dir/argparse.c.o" + "CMakeFiles/argparse.dir/argparse.c.o.d" + "libargparse.a" + "libargparse.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/argparse.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/argparse/CMakeFiles/argparse.dir/cmake_clean_target.cmake b/release/src/argparse/CMakeFiles/argparse.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..267e0f7 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libargparse.a" +) diff --git a/release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.make b/release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.make new file mode 100644 index 0000000..3bafce9 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for argparse. +# This may be replaced when dependencies are built. diff --git a/release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.ts b/release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.ts new file mode 100644 index 0000000..6978a2c --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for argparse. diff --git a/release/src/argparse/CMakeFiles/argparse.dir/depend.make b/release/src/argparse/CMakeFiles/argparse.dir/depend.make new file mode 100644 index 0000000..dfcf4d6 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for argparse. +# This may be replaced when dependencies are built. diff --git a/release/src/argparse/CMakeFiles/argparse.dir/flags.make b/release/src/argparse/CMakeFiles/argparse.dir/flags.make new file mode 100644 index 0000000..fdec4c2 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + diff --git a/release/src/argparse/CMakeFiles/argparse.dir/link.txt b/release/src/argparse/CMakeFiles/argparse.dir/link.txt new file mode 100644 index 0000000..959d218 --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libargparse.a CMakeFiles/argparse.dir/argparse.c.o +/usr/bin/ranlib libargparse.a diff --git a/release/src/argparse/CMakeFiles/argparse.dir/progress.make b/release/src/argparse/CMakeFiles/argparse.dir/progress.make new file mode 100644 index 0000000..2271fbb --- /dev/null +++ b/release/src/argparse/CMakeFiles/argparse.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_2 = 1 + diff --git a/release/src/argparse/CMakeFiles/progress.marks b/release/src/argparse/CMakeFiles/progress.marks new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/release/src/argparse/CMakeFiles/progress.marks @@ -0,0 +1 @@ +1 diff --git a/release/src/argparse/CTestTestfile.cmake b/release/src/argparse/CTestTestfile.cmake new file mode 100644 index 0000000..8d8b5be --- /dev/null +++ b/release/src/argparse/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/release/src/argparse/Makefile b/release/src/argparse/Makefile new file mode 100644 index 0000000..daf9859 --- /dev/null +++ b/release/src/argparse/Makefile @@ -0,0 +1,193 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse//CMakeFiles/progress.marks + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/argparse/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/argparse/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/argparse/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/argparse/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/argparse/CMakeFiles/argparse.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/argparse/CMakeFiles/argparse.dir/rule +.PHONY : src/argparse/CMakeFiles/argparse.dir/rule + +# Convenience name for target. +argparse: src/argparse/CMakeFiles/argparse.dir/rule +.PHONY : argparse + +# fast build rule for target. +argparse/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/build +.PHONY : argparse/fast + +argparse.o: argparse.c.o +.PHONY : argparse.o + +# target to build an object file +argparse.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/argparse.c.o +.PHONY : argparse.c.o + +argparse.i: argparse.c.i +.PHONY : argparse.i + +# target to preprocess a source file +argparse.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/argparse.c.i +.PHONY : argparse.c.i + +argparse.s: argparse.c.s +.PHONY : argparse.s + +# target to generate assembly for a file +argparse.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/argparse/CMakeFiles/argparse.dir/build.make src/argparse/CMakeFiles/argparse.dir/argparse.c.s +.PHONY : argparse.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" + @echo "... argparse" + @echo "... argparse.o" + @echo "... argparse.i" + @echo "... argparse.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/src/argparse/cmake_install.cmake b/release/src/argparse/cmake_install.cmake new file mode 100644 index 0000000..dcd70c0 --- /dev/null +++ b/release/src/argparse/cmake_install.cmake @@ -0,0 +1,44 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/argparse + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + diff --git a/release/src/argparse/libargparse.a b/release/src/argparse/libargparse.a new file mode 100644 index 0000000000000000000000000000000000000000..6ad8d5b33838c96d2d8f8fab7cc9030ebe8948ba GIT binary patch literal 13992 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 literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/awp/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/awp/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/awp/CMakeFiles/awp.dir/DependInfo.cmake b/release/src/awp/CMakeFiles/awp.dir/DependInfo.cmake new file mode 100644 index 0000000..b14a42a --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/DependInfo.cmake @@ -0,0 +1,19 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/kernel.cu" "src/awp/CMakeFiles/awp.dir/kernel.cu.o" "gcc" "src/awp/CMakeFiles/awp.dir/kernel.cu.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/awp/CMakeFiles/awp.dir/build.make b/release/src/awp/CMakeFiles/awp.dir/build.make new file mode 100644 index 0000000..8d5c118 --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/build.make @@ -0,0 +1,112 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/awp/CMakeFiles/awp.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/awp/CMakeFiles/awp.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/awp/CMakeFiles/awp.dir/progress.make + +# Include the compile flags for this target's objects. +include src/awp/CMakeFiles/awp.dir/flags.make + +src/awp/CMakeFiles/awp.dir/kernel.cu.o: src/awp/CMakeFiles/awp.dir/flags.make +src/awp/CMakeFiles/awp.dir/kernel.cu.o: src/awp/CMakeFiles/awp.dir/includes_CUDA.rsp +src/awp/CMakeFiles/awp.dir/kernel.cu.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/kernel.cu +src/awp/CMakeFiles/awp.dir/kernel.cu.o: src/awp/CMakeFiles/awp.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CUDA object src/awp/CMakeFiles/awp.dir/kernel.cu.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler $(CUDA_DEFINES) $(CUDA_INCLUDES) $(CUDA_FLAGS) -MD -MT src/awp/CMakeFiles/awp.dir/kernel.cu.o -MF CMakeFiles/awp.dir/kernel.cu.o.d -x cu -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/kernel.cu -o CMakeFiles/awp.dir/kernel.cu.o + +src/awp/CMakeFiles/awp.dir/kernel.cu.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CUDA source to CMakeFiles/awp.dir/kernel.cu.i" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_PREPROCESSED_SOURCE + +src/awp/CMakeFiles/awp.dir/kernel.cu.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CUDA source to assembly CMakeFiles/awp.dir/kernel.cu.s" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_ASSEMBLY_SOURCE + +# Object files for target awp +awp_OBJECTS = \ +"CMakeFiles/awp.dir/kernel.cu.o" + +# External object files for target awp +awp_EXTERNAL_OBJECTS = + +src/awp/libawp.a: src/awp/CMakeFiles/awp.dir/kernel.cu.o +src/awp/libawp.a: src/awp/CMakeFiles/awp.dir/build.make +src/awp/libawp.a: src/awp/CMakeFiles/awp.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CUDA static library libawp.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -P CMakeFiles/awp.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/awp.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/awp/CMakeFiles/awp.dir/build: src/awp/libawp.a +.PHONY : src/awp/CMakeFiles/awp.dir/build + +src/awp/CMakeFiles/awp.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -P CMakeFiles/awp.dir/cmake_clean.cmake +.PHONY : src/awp/CMakeFiles/awp.dir/clean + +src/awp/CMakeFiles/awp.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/awp.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/awp/CMakeFiles/awp.dir/depend + diff --git a/release/src/awp/CMakeFiles/awp.dir/cmake_clean.cmake b/release/src/awp/CMakeFiles/awp.dir/cmake_clean.cmake new file mode 100644 index 0000000..9b92f23 --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/awp.dir/kernel.cu.o" + "CMakeFiles/awp.dir/kernel.cu.o.d" + "libawp.a" + "libawp.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CUDA) + include(CMakeFiles/awp.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/awp/CMakeFiles/awp.dir/cmake_clean_target.cmake b/release/src/awp/CMakeFiles/awp.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..20379bc --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libawp.a" +) diff --git a/release/src/awp/CMakeFiles/awp.dir/compiler_depend.make b/release/src/awp/CMakeFiles/awp.dir/compiler_depend.make new file mode 100644 index 0000000..db83cdf --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for awp. +# This may be replaced when dependencies are built. diff --git a/release/src/awp/CMakeFiles/awp.dir/compiler_depend.ts b/release/src/awp/CMakeFiles/awp.dir/compiler_depend.ts new file mode 100644 index 0000000..c8b99f7 --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for awp. diff --git a/release/src/awp/CMakeFiles/awp.dir/depend.make b/release/src/awp/CMakeFiles/awp.dir/depend.make new file mode 100644 index 0000000..ec48031 --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for awp. +# This may be replaced when dependencies are built. diff --git a/release/src/awp/CMakeFiles/awp.dir/flags.make b/release/src/awp/CMakeFiles/awp.dir/flags.make new file mode 100644 index 0000000..1bd321f --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile CUDA with /sw/summit/cuda/11.7.1/bin/nvcc +CUDA_DEFINES = + +CUDA_INCLUDES = --options-file CMakeFiles/awp.dir/includes_CUDA.rsp + +CUDA_FLAGS = -O4 -Xcompiler -std=c++11 -use_fast_math -Xptxas=-v -lineinfo "--generate-code=arch=compute_70,code=[compute_70,sm_70]" + diff --git a/release/src/awp/CMakeFiles/awp.dir/includes_CUDA.rsp b/release/src/awp/CMakeFiles/awp.dir/includes_CUDA.rsp new file mode 100644 index 0000000..8b5bbf1 --- /dev/null +++ b/release/src/awp/CMakeFiles/awp.dir/includes_CUDA.rsp @@ -0,0 +1 @@ +-I"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include" -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include diff --git a/release/src/awp/CMakeFiles/awp.dir/kernel.cu.o b/release/src/awp/CMakeFiles/awp.dir/kernel.cu.o new file mode 100644 index 0000000000000000000000000000000000000000..50f8fc98c30fd93ffeecbe830fac6c36acd4c8af GIT binary patch literal 1096344 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

r{er~~ZCW3C-*>(vJd9hwSj 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%0DTzcm+RHa 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 JR-CW@zW~~Jb CMakeFiles/error.dir/error.c.i + +src/awp/CMakeFiles/error.dir/error.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/error.dir/error.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/error.c -o CMakeFiles/error.dir/error.c.s + +# Object files for target error +error_OBJECTS = \ +"CMakeFiles/error.dir/error.c.o" + +# External object files for target error +error_EXTERNAL_OBJECTS = + +src/awp/liberror.a: src/awp/CMakeFiles/error.dir/error.c.o +src/awp/liberror.a: src/awp/CMakeFiles/error.dir/build.make +src/awp/liberror.a: src/awp/CMakeFiles/error.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C static library liberror.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -P CMakeFiles/error.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/error.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/awp/CMakeFiles/error.dir/build: src/awp/liberror.a +.PHONY : src/awp/CMakeFiles/error.dir/build + +src/awp/CMakeFiles/error.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -P CMakeFiles/error.dir/cmake_clean.cmake +.PHONY : src/awp/CMakeFiles/error.dir/clean + +src/awp/CMakeFiles/error.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/error.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/awp/CMakeFiles/error.dir/depend + diff --git a/release/src/awp/CMakeFiles/error.dir/cmake_clean.cmake b/release/src/awp/CMakeFiles/error.dir/cmake_clean.cmake new file mode 100644 index 0000000..2edfe3f --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/error.dir/error.c.o" + "CMakeFiles/error.dir/error.c.o.d" + "liberror.a" + "liberror.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/error.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/awp/CMakeFiles/error.dir/cmake_clean_target.cmake b/release/src/awp/CMakeFiles/error.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..cbf5c0c --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "liberror.a" +) diff --git a/release/src/awp/CMakeFiles/error.dir/compiler_depend.make b/release/src/awp/CMakeFiles/error.dir/compiler_depend.make new file mode 100644 index 0000000..662723e --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for error. +# This may be replaced when dependencies are built. diff --git a/release/src/awp/CMakeFiles/error.dir/compiler_depend.ts b/release/src/awp/CMakeFiles/error.dir/compiler_depend.ts new file mode 100644 index 0000000..d5d3bab --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for error. diff --git a/release/src/awp/CMakeFiles/error.dir/depend.make b/release/src/awp/CMakeFiles/error.dir/depend.make new file mode 100644 index 0000000..ae5d689 --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for error. +# This may be replaced when dependencies are built. diff --git a/release/src/awp/CMakeFiles/error.dir/error.c.o b/release/src/awp/CMakeFiles/error.dir/error.c.o new file mode 100644 index 0000000000000000000000000000000000000000..de2e5fa75a092f938d1adac777784ab6c66dd7ae GIT binary patch literal 5520 zcmbtYO>9(E6uvV>Qw3@<7#qQORWKzf(`i$*7?i1$zfggYlGKERzL~kxzA!Uy^4=Sm zk|Mp1q68K-vS@?^&w1~h&h24{MsIk% z-}&x$&pr3tpZA87+Xr?e6A8s7p>^t%`9Hs!Rkk>J`-jXkd#{pY$#~{r&Ov zr*ALRmTw)et#QY-+WIv-r+N}ookPiUeT;9Y*$8(4e>V~Hh=++UsHx7g#3R^lXxNPLWE`}QYd-`&tQL2WUf?aNc! zXUVC~Ich`9bNB%IOcIZn$JqoJePh`|qJU0)tn%JwTOeFC5#b@e5vU$8!B^KtNUVn_|>y&lA zhT(j{a|+KzubR!!+T2&_=7X%-dLR9Rqg{9wYkSt8Q0fZ^_jGUV&mT`B55o=PGXXKc z7;_hzn#W-;g_4b5UhogXowK5G2H^~$>y*L0Ly=qvghC1(rPBgc&Q;H^D*TwUe zx+usc{+wdb%Q=uDOKOi7l~6X%Ci?;W{35if&%#UGNgE z@lr>7qZP+>2|`l|v>WKM2l;f5xl&RHBifW|=s zvnoWJF_Q9P@@z*SjUhM-N1d`hZhVg%erigdKc;CBa4*JAa7MYR3tPgkctzNckZUa4 zVOrJ5gaktKGqLD)*gD4Fpmo9X^?)rxr`PV&mXK8EDFpGGmn#ovgBL_Ue(VT9gbDFS@FIwz7NyRd3kDC zAG{np;J-V!ZTnES@7#NEgYHdjN~Lvoy1OgAsjEk~AArbqIbqCi>`HHdKCRR*ar}T< zR_jZwS&>j{frEQADuYc>^|xfcP4umNEBOnwDy8A+g$E1V^GfY(nMkba`}|xoQVm8T z=u`h}kP0in;3e!tK&KP2?L^$!U>^Le3%@8hV93O(}`p}$1> zQ0SQ-7y4VIhwrJV@cJ@8DfGOb;J3>XJ@elPJ+JFop=bWQ&}Yd0PUxAxDD*Y5F9|*K zSA>3=?5jf0{7*v9@!b%5=5Gl->uw7@^S=rG0@-(kp7}YU&(IbBQ0SR|B=nP{XMeoD z%=0UQ&-;1OFQc0E%&#Dx^;gJl6?*2|g#HfMYlWWqbwWQ+cDv9spBDO7x`=y(o_T&> z$oqVV^zuIEJmGxpx8fPnX9Pb(JiZa_x8nE2bKcr1&Wprzo|(UF`Dp=Pvb+Zb{BBz; z_$`9v4R~k^MD~{GZ=L7)t5h&n3Y{#}p&!?yjC@mcQlY7ZDuti$DwPcamGZsVh+Dm! zO2IEA{4`f7_+mCG_>|fhgih`VNYQ~AJzVhV*9ZmiKPnA<@v5@d0NrKq50rb9uh^=; zpV?jm08^e}g6c_Hq-k=DImL1KecMJl%s2947`2XH{G{WGu2nWw2O#wMU;B4KU-W6O zEtrb;ONWSq<3|makKt(){}2hKUfP?Xf1~`h(f_}3o-luyO7746HX0xIxm|`yn6gR0 zoIkDyEY6mG#RJ)71Fb`x%-=Ni9}@jVI@KX)Z#4fj&7bFm^T#d4Ve$NN9&&7;)Eo&% oX`(BEYt$dVo8{iY{`+bF_M%}G&Kpx0W~2VY6#o$xQZ4)c4H#?lz5oCK literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/error.dir/error.c.o.d b/release/src/awp/CMakeFiles/error.dir/error.c.o.d new file mode 100644 index 0000000..47e73d0 --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/error.c.o.d @@ -0,0 +1,17 @@ +src/awp/CMakeFiles/error.dir/error.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/error.c \ + /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/error.h diff --git a/release/src/awp/CMakeFiles/error.dir/flags.make b/release/src/awp/CMakeFiles/error.dir/flags.make new file mode 100644 index 0000000..fdec4c2 --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + diff --git a/release/src/awp/CMakeFiles/error.dir/link.txt b/release/src/awp/CMakeFiles/error.dir/link.txt new file mode 100644 index 0000000..6eb16a4 --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc liberror.a CMakeFiles/error.dir/error.c.o +/usr/bin/ranlib liberror.a diff --git a/release/src/awp/CMakeFiles/error.dir/progress.make b/release/src/awp/CMakeFiles/error.dir/progress.make new file mode 100644 index 0000000..72bb7dd --- /dev/null +++ b/release/src/awp/CMakeFiles/error.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 7 +CMAKE_PROGRESS_2 = 8 + diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/DependInfo.cmake b/release/src/awp/CMakeFiles/lpmcl3d.dir/DependInfo.cmake new file mode 100644 index 0000000..b1f012f --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/DependInfo.cmake @@ -0,0 +1,30 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/calc.c" "src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/cerjan.c" "src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/command.c" "src/awp/CMakeFiles/lpmcl3d.dir/command.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/command.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/dump.c" "src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/grid.c" "src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/init.c" "src/awp/CMakeFiles/lpmcl3d.dir/init.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/init.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/io.c" "src/awp/CMakeFiles/lpmcl3d.dir/io.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/io.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/mesh.c" "src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/source.c" "src/awp/CMakeFiles/lpmcl3d.dir/source.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/source.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/swap.c" "src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/utils.c" "src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/kernel.cu" "src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o" "gcc" "src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/build.make b/release/src/awp/CMakeFiles/lpmcl3d.dir/build.make new file mode 100644 index 0000000..c9b38e6 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/build.make @@ -0,0 +1,288 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/awp/CMakeFiles/lpmcl3d.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/awp/CMakeFiles/lpmcl3d.dir/progress.make + +# Include the compile flags for this target's objects. +include src/awp/CMakeFiles/lpmcl3d.dir/flags.make + +src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/calc.c +src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o -MF CMakeFiles/lpmcl3d.dir/calc.c.o.d -o CMakeFiles/lpmcl3d.dir/calc.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/calc.c + +src/awp/CMakeFiles/lpmcl3d.dir/calc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/calc.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/calc.c > CMakeFiles/lpmcl3d.dir/calc.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/calc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/calc.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/calc.c -o CMakeFiles/lpmcl3d.dir/calc.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/cerjan.c +src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o -MF CMakeFiles/lpmcl3d.dir/cerjan.c.o.d -o CMakeFiles/lpmcl3d.dir/cerjan.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/cerjan.c + +src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/cerjan.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/cerjan.c > CMakeFiles/lpmcl3d.dir/cerjan.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/cerjan.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/cerjan.c -o CMakeFiles/lpmcl3d.dir/cerjan.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/command.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/command.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/command.c +src/awp/CMakeFiles/lpmcl3d.dir/command.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/command.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/command.c.o -MF CMakeFiles/lpmcl3d.dir/command.c.o.d -o CMakeFiles/lpmcl3d.dir/command.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/command.c + +src/awp/CMakeFiles/lpmcl3d.dir/command.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/command.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/command.c > CMakeFiles/lpmcl3d.dir/command.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/command.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/command.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/command.c -o CMakeFiles/lpmcl3d.dir/command.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/dump.c +src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o -MF CMakeFiles/lpmcl3d.dir/dump.c.o.d -o CMakeFiles/lpmcl3d.dir/dump.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/dump.c + +src/awp/CMakeFiles/lpmcl3d.dir/dump.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/dump.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/dump.c > CMakeFiles/lpmcl3d.dir/dump.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/dump.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/dump.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/dump.c -o CMakeFiles/lpmcl3d.dir/dump.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/grid.c +src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o -MF CMakeFiles/lpmcl3d.dir/grid.c.o.d -o CMakeFiles/lpmcl3d.dir/grid.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/grid.c + +src/awp/CMakeFiles/lpmcl3d.dir/grid.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/grid.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/grid.c > CMakeFiles/lpmcl3d.dir/grid.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/grid.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/grid.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/grid.c -o CMakeFiles/lpmcl3d.dir/grid.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/init.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/init.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/init.c +src/awp/CMakeFiles/lpmcl3d.dir/init.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/init.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/init.c.o -MF CMakeFiles/lpmcl3d.dir/init.c.o.d -o CMakeFiles/lpmcl3d.dir/init.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/init.c + +src/awp/CMakeFiles/lpmcl3d.dir/init.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/init.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/init.c > CMakeFiles/lpmcl3d.dir/init.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/init.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/init.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/init.c -o CMakeFiles/lpmcl3d.dir/init.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/io.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/io.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/io.c +src/awp/CMakeFiles/lpmcl3d.dir/io.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/io.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/io.c.o -MF CMakeFiles/lpmcl3d.dir/io.c.o.d -o CMakeFiles/lpmcl3d.dir/io.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/io.c + +src/awp/CMakeFiles/lpmcl3d.dir/io.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/io.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/io.c > CMakeFiles/lpmcl3d.dir/io.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/io.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/io.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/io.c -o CMakeFiles/lpmcl3d.dir/io.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o: src/awp/CMakeFiles/lpmcl3d.dir/includes_CUDA.rsp +src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/kernel.cu +src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CUDA object src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler $(CUDA_DEFINES) $(CUDA_INCLUDES) $(CUDA_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o -MF CMakeFiles/lpmcl3d.dir/kernel.cu.o.d -x cu -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/kernel.cu -o CMakeFiles/lpmcl3d.dir/kernel.cu.o + +src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CUDA source to CMakeFiles/lpmcl3d.dir/kernel.cu.i" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_PREPROCESSED_SOURCE + +src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CUDA source to assembly CMakeFiles/lpmcl3d.dir/kernel.cu.s" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_ASSEMBLY_SOURCE + +src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/mesh.c +src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o -MF CMakeFiles/lpmcl3d.dir/mesh.c.o.d -o CMakeFiles/lpmcl3d.dir/mesh.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/mesh.c + +src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/mesh.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/mesh.c > CMakeFiles/lpmcl3d.dir/mesh.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/mesh.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/mesh.c -o CMakeFiles/lpmcl3d.dir/mesh.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/source.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/source.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/source.c +src/awp/CMakeFiles/lpmcl3d.dir/source.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/source.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/source.c.o -MF CMakeFiles/lpmcl3d.dir/source.c.o.d -o CMakeFiles/lpmcl3d.dir/source.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/source.c + +src/awp/CMakeFiles/lpmcl3d.dir/source.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/source.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/source.c > CMakeFiles/lpmcl3d.dir/source.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/source.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/source.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/source.c -o CMakeFiles/lpmcl3d.dir/source.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/swap.c +src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o -MF CMakeFiles/lpmcl3d.dir/swap.c.o.d -o CMakeFiles/lpmcl3d.dir/swap.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/swap.c + +src/awp/CMakeFiles/lpmcl3d.dir/swap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/swap.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/swap.c > CMakeFiles/lpmcl3d.dir/swap.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/swap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/swap.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/swap.c -o CMakeFiles/lpmcl3d.dir/swap.c.s + +src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o: src/awp/CMakeFiles/lpmcl3d.dir/flags.make +src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/utils.c +src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o: src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o -MF CMakeFiles/lpmcl3d.dir/utils.c.o.d -o CMakeFiles/lpmcl3d.dir/utils.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/utils.c + +src/awp/CMakeFiles/lpmcl3d.dir/utils.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/lpmcl3d.dir/utils.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/utils.c > CMakeFiles/lpmcl3d.dir/utils.c.i + +src/awp/CMakeFiles/lpmcl3d.dir/utils.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/lpmcl3d.dir/utils.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/utils.c -o CMakeFiles/lpmcl3d.dir/utils.c.s + +# Object files for target lpmcl3d +lpmcl3d_OBJECTS = \ +"CMakeFiles/lpmcl3d.dir/calc.c.o" \ +"CMakeFiles/lpmcl3d.dir/cerjan.c.o" \ +"CMakeFiles/lpmcl3d.dir/command.c.o" \ +"CMakeFiles/lpmcl3d.dir/dump.c.o" \ +"CMakeFiles/lpmcl3d.dir/grid.c.o" \ +"CMakeFiles/lpmcl3d.dir/init.c.o" \ +"CMakeFiles/lpmcl3d.dir/io.c.o" \ +"CMakeFiles/lpmcl3d.dir/kernel.cu.o" \ +"CMakeFiles/lpmcl3d.dir/mesh.c.o" \ +"CMakeFiles/lpmcl3d.dir/source.c.o" \ +"CMakeFiles/lpmcl3d.dir/swap.c.o" \ +"CMakeFiles/lpmcl3d.dir/utils.c.o" + +# External object files for target lpmcl3d +lpmcl3d_EXTERNAL_OBJECTS = + +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/command.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/init.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/io.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/source.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/build.make +src/awp/liblpmcl3d.a: src/awp/CMakeFiles/lpmcl3d.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Linking CUDA static library liblpmcl3d.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -P CMakeFiles/lpmcl3d.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/lpmcl3d.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/awp/CMakeFiles/lpmcl3d.dir/build: src/awp/liblpmcl3d.a +.PHONY : src/awp/CMakeFiles/lpmcl3d.dir/build + +src/awp/CMakeFiles/lpmcl3d.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp && $(CMAKE_COMMAND) -P CMakeFiles/lpmcl3d.dir/cmake_clean.cmake +.PHONY : src/awp/CMakeFiles/lpmcl3d.dir/clean + +src/awp/CMakeFiles/lpmcl3d.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/CMakeFiles/lpmcl3d.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/awp/CMakeFiles/lpmcl3d.dir/depend + diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o b/release/src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2938d6fb5d6694a2620049effa74f947584dcc21 GIT binary patch literal 2880 zcmbtV&2Jl35TCUJNoYX<1vR2b-AYJ!ExI^WA~jrWQ%b!qs!RYWx7c+IuE>|-J=hhi zIJX?T2c#VO!4Wud$cYR80{Bo>2nmQd;Pz5D+2vs7w>!^%*)E|4#pO ze(i12px2}`{WfL$yR_WjqimO>7l@pGbF}xdPmt5y3~Y`M3B4{lB=oZAkkFSzhlE}d zy+h0083Q(}Yml|DKW=%=D=F_QKJPdwj|$&zPt)xj<5GD1lL;!QnC6wV_!hmN;S>1Z z%Ip5W81eoc@o&?ud|W=9PZ!hPU|=mAFwV|LlV0b;f>$b}z5VgDr+U~6usOp%M))T@ z3h!(0>=b+_o{{xNz{@sNre-~(!+SJc19_Y7`?_|sl^ zzmESv_%p_HjdJK~%v|HpF6+W+e@-~0;=rTOzv%r9KjD!cLr26skeHjorMSHCQG9wF z!>4k9&+&yD0iQ;BQi5;7LmqJIG0TuslMCNt&%Ns0dXMkpPq`132mC^x|Hm(d1^iO6 zI(MS8+7yl*<$F~B;8{=OnZl^^tj@UkedMFBN5||-<$zT0DV=M;5arsg)J^a#zT%opxU5~DCLu@20*d*o7f%nJ6sKw90EQ&tPlOQ<`2{=}3s zl)b>;mxm^`ud*Jjw!xpL%NH-cW2P=&{lqda*zg!Eb zFze&Szs0f0nc<(lRDD}F@?OYIWOdowSCiZ6K*!Iuq&SlmD#grXVO-$}l&Np5Z+=svhP=lh+% z-#O=gH@Dxu@Qz1ONG^q5qSj8LM3tc??*WN5*cgqF58Q<}iQbBAc?PXfQug-jhrj$` zKm6xg`_(;jIBG3Zv}V%XJ@fcimU-&FWuE=jG7|$u^W8wveC>`^qUf4={A;Vs^wba5 zD$}#O);iO~P_e@Fy>rEF&}AC0u98+qelrN1S{D;m6cLTwq2LAB*CeQvt z(8aStu-~T5SO{{CMKhn@UZ>4Ce64sXIK{T}M}jxMq1j!wCmKTD5A1E|vwbodEH-m1 zJwZ;@Fn#f)Tb2^C;m2X}J?=gy)x$Ji?-i5Ji@3FQkt4_Cyf|mhw^bK^a1YQ+AxXSBfd#Sem7L_e*E zv~Vaq5js6FsRb@)=e3!%(Zo+qgo3adZP*eipIs)e8CQ<_6w-hpuf`fZ05bhT@=*NN z_sU&Qd}LfT6zIec0>6^GLCOFauhLL<`C);V{& zd#UtXHwZ)}@sVwlJ`euIR4dO$J%Am;BWu^DPDgs+M|I$dA7LWNKB24&4S48Wacv&Ri#5Y7MocJqE_w+KT2-QUN!p%h^Jx6-M$T#U#$>p=x)4Gv0 z4btb+Mw;}wLV@(m(&Az^2Q0T_WOck4CksY8^9kt<_3YKzkMrrpEa@0#J#85Ig}EC> zwjjd)Z=%5im(V$(F<`vpJT-T%KFK}L4VNw^0YPJfP3C8@=lXFR0q?)RuM6DyMkSpI z2|uk#ZvrQT&;M#aA>xOGe@SF~T>^s2_>!IhF8OxVTYct#N!WMH5U`T4kF+}lFW(ah zpBGq60)mc-t3uwBTz|f8ob~?**k882B+T~7JrUn|hd9s5duQ(KWJlO1g#o|IoRTv> fW6s_IqA{W9=S|yk#^-y^%|0Z~ztCpOtkeEq!?Zx8 literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o.d b/release/src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o.d new file mode 100644 index 0000000..218d25b --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o.d @@ -0,0 +1,47 @@ +src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/cerjan.c \ + /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/stdio.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /usr/include/stdlib.h /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean.cmake b/release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean.cmake new file mode 100644 index 0000000..507f7bc --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean.cmake @@ -0,0 +1,33 @@ +file(REMOVE_RECURSE + "CMakeFiles/lpmcl3d.dir/calc.c.o" + "CMakeFiles/lpmcl3d.dir/calc.c.o.d" + "CMakeFiles/lpmcl3d.dir/cerjan.c.o" + "CMakeFiles/lpmcl3d.dir/cerjan.c.o.d" + "CMakeFiles/lpmcl3d.dir/command.c.o" + "CMakeFiles/lpmcl3d.dir/command.c.o.d" + "CMakeFiles/lpmcl3d.dir/dump.c.o" + "CMakeFiles/lpmcl3d.dir/dump.c.o.d" + "CMakeFiles/lpmcl3d.dir/grid.c.o" + "CMakeFiles/lpmcl3d.dir/grid.c.o.d" + "CMakeFiles/lpmcl3d.dir/init.c.o" + "CMakeFiles/lpmcl3d.dir/init.c.o.d" + "CMakeFiles/lpmcl3d.dir/io.c.o" + "CMakeFiles/lpmcl3d.dir/io.c.o.d" + "CMakeFiles/lpmcl3d.dir/kernel.cu.o" + "CMakeFiles/lpmcl3d.dir/kernel.cu.o.d" + "CMakeFiles/lpmcl3d.dir/mesh.c.o" + "CMakeFiles/lpmcl3d.dir/mesh.c.o.d" + "CMakeFiles/lpmcl3d.dir/source.c.o" + "CMakeFiles/lpmcl3d.dir/source.c.o.d" + "CMakeFiles/lpmcl3d.dir/swap.c.o" + "CMakeFiles/lpmcl3d.dir/swap.c.o.d" + "CMakeFiles/lpmcl3d.dir/utils.c.o" + "CMakeFiles/lpmcl3d.dir/utils.c.o.d" + "liblpmcl3d.a" + "liblpmcl3d.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C CUDA) + include(CMakeFiles/lpmcl3d.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean_target.cmake b/release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..35e4773 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "liblpmcl3d.a" +) diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/command.c.o b/release/src/awp/CMakeFiles/lpmcl3d.dir/command.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ca6f7dc5d136927e056dae9b7f66fe7f6ec162a9 GIT binary patch literal 23120 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 BLsS3& literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/command.c.o.d b/release/src/awp/CMakeFiles/lpmcl3d.dir/command.c.o.d new file mode 100644 index 0000000..6f0e6b2 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/command.c.o.d @@ -0,0 +1,51 @@ +src/awp/CMakeFiles/lpmcl3d.dir/command.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/command.c \ + /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/getopt.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_ext.h /usr/include/math.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/string.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h \ + /usr/include/assert.h diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.make b/release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.make new file mode 100644 index 0000000..7269be7 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for lpmcl3d. +# This may be replaced when dependencies are built. diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts b/release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts new file mode 100644 index 0000000..d9e7913 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for lpmcl3d. diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/depend.make b/release/src/awp/CMakeFiles/lpmcl3d.dir/depend.make new file mode 100644 index 0000000..ce6e1aa --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for lpmcl3d. +# This may be replaced when dependencies are built. diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o b/release/src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o new file mode 100644 index 0000000000000000000000000000000000000000..08cf60ea6dadaca09c77e0b3aba5bbf87c2beaae GIT binary patch literal 5664 zcmbtYQEVJn6}{tiTbHJ88d4faq%5>Xwn%2zNlLe=i`Q|JY-w7oI29ID%#L?wvrE@I z%gk&tw$`<&`jJ$8q*Xr(O5?PI%H@ZCL?{v;4WdZx2U7T}M5F{h%38@s5PWP1!rVLW zKKuD)Cob@$o%`N-_nmv+efQlNdv5=s16_szvKjCYtd1lKkl!TwT`00qHwzCyFSM8c zeCvw|pImBY zNsit-`!vb%XJ&IK$yWXjwp5=ZKPCSoCz}(*gLZKJ>tv@)677T}(GKn>vU39Eo%RH9 zXb50m=Dn_-=0@CNYx$j9Hq7Oxq zxYshul3^`P8pBIJFt#s!&sc8#(D<+w!dzy|xY7c61$}rmgJ+r}UvUplNGyEzky(l7 zG3L16C4l!+JK#(f;A>9-4B&WRDFo|@aD4x4r*%2B+YR#>l`Gs@p_tvIx#GhE(_L^8 z=lf=}#zLzMb1i9;^y(Nx{QVfYvjt=ITnUsXoZq-WF4=6aP(2*VGNX$CPVv_xKHr^=laG zS1{Hy7;8_7by*>i@%ldKWJp;Inpxy|q;^a}YZ?Kr^^R2$3)t7#}xD$t_ zhYw`Jc3cQ3xQ%KtS#yJ=TX$;7KK~11B2_5(sj@req>7GR+dcTr)W~rF2hBlmCr zHcn!rc`PhZtI~5{Z$6qIU!9*2(@+-kV*Oz;|0rS{1^{|-=6X*h9vpf3?Zla`h^MO- zDJF61EdHn+A>M)UjL z$r$`}4F2;Nd@%<9RSf>?82mSgM{(oSit-$>KQLbB)QWN&G2mijS*1p;U|DA7@jZhP zXxY`ORkQBFCJnPn*Nq!uj(r?5pRRWc;6u%Nuu=@m+|kx9uF`X$@awoNms8_>=9t#?#Le z7c?G;UsQPbPk?B}rwWgH%P%vYMJ*M-uIQ8hd-#ZC3+2;*4|FDg7#OJoZa9`aw-uaI%+zr^P?{Tvg$s_9GogrLE3^9sI2!7nNJmlgc7f`3K9TME8a!ME{!zb(%h*Ymv2 zxXkkpm@8mh##!R{ogFob!vm~K;w_Em0?(b+cqG0U!*fyNxyU>pX*?3Y6vNZfcs^#H z>l%;5+c7*Fxgf~+Tw|SNN zS2ep5zaC?^n~R`~LyLKO7?*L7_-4lSIPB1PZZJ<;`9b?CuCXnJf~`#ffEK`M({=MY`vh=_*Kfcf+38`uEiCCg3Fojf3UE%dD<}B1C5NyB zd&K#_uBShPh*QlS9Ks^ozgsgX{U;r2-@;!f|3Bb>>iYT^|5?;AemVZAka42;5v5!& z@lm!<_fc&Z*uJTP*q7Up@{oe5s-N+C6{EgfCvlrGJ$@}-e^n~7)boe#W2gMd^Zrlq zI@&+g7JdKZk8Ycme0&c*0pxr3e(Y09>g(w*B0YByg15*Rwm%86^3?ZFZgyIKgZ+PL KWu@ro>;D5tc`1kh literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o.d b/release/src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o.d new file mode 100644 index 0000000..02bff01 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o.d @@ -0,0 +1,41 @@ +src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/dump.c \ + /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/dump.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/flags.make b/release/src/awp/CMakeFiles/lpmcl3d.dir/flags.make new file mode 100644 index 0000000..7e13218 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/flags.make @@ -0,0 +1,17 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +# compile CUDA with /sw/summit/cuda/11.7.1/bin/nvcc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/checksum -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/checksum/md5 + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + +CUDA_DEFINES = + +CUDA_INCLUDES = --options-file CMakeFiles/lpmcl3d.dir/includes_CUDA.rsp + +CUDA_FLAGS = -O4 -Xcompiler -std=c++11 -use_fast_math -Xptxas=-v -lineinfo "--generate-code=arch=compute_70,code=[compute_70,sm_70]" + diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o b/release/src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o new file mode 100644 index 0000000000000000000000000000000000000000..46ce715b65dfb8a5181a1f50077a619f05c452ec GIT binary patch literal 5488 zcmeHKO>9(E6h6~dDe@x_6e2Z!LW46E#%YnHH71>DYnhe?YQ>lslFnoLfX4o1I))iD z&$bB*Vq8eVf(1cH2!bn2Sh#Re6BaC7G%N^9Om5^e_SoUvRv5ERVwTnD;4&fD-~Y*s+6Rz^M#)EelN>+`~5UzA9XE7sK2ut@?L+d zf9?6!VmCD}F@CSV(H{t8)ZaeP>W}V-6$^*=_~4etq#2H#psq*wEfL*(-J#2%bpl+n z9Xh65&Qx?Fr_;fla8C1l4mHpB(#ZV%chdgtbp!tP;h5jj+*;fXTT64Sm;jIM15rPa z!)c$W{}KG>BNPkbIPk@q<|+N@?5*;p6vt%0<#MbuK_l>OWuIUzjB~#Oe3i$gU>#0p z3pnMWb3E+L{C(`h?R7Ei54ee5I2`p`(8r!tFy=P8<8i)3>zDQl7ar5W>k$5!E8x#_ zay*`o`JV;*Z+$BD`s zbx&*YJ@+?!Gq7<^aIR#is{=Xt@Oph?33>UmLvu%vJKQ335ki_g&E2QDOX(-gUEF}3 zsBPry|0{RDHtt>2!1;EmH~ZcM???DO(Y+Z(z4JbC{i05T`%P=uzB@2?aIY+)7I_|? ze`pQ0_+PI_&-LG0&v$Y@4$UrOj$r?r=yD4Ehx%s8U5j^uGW<)fVc(w4v--aExRaAp zdB+_epUS#<&pFWRj7;aetmEc#Zjq>peQXlrL+j)A_Er30hrf5q%V~^5Jw0za(L+bx zi#Z+fgYksZo@j4N9Bg~Ti4J?CPTI|f`2My;jA#pzfm`I`VQMI(BD*$5$U%Q6gJ|FK zhgsj|%+}N=Uqn)yn(MA&0GfjzK8k`?YfKZYnQ#a#vh3SDq;XCn4BO`zN2_JO5?F~& zv+UcPRR2NoUs%Qd!zy-ut+`c;A6lyaWw!?Utz6AouR$$iJ=I%C*sVvTYOS80sRkp; zx*B+64gA^1a2~lWBa4R~oFOFVgXRR(N_!DnHT>lo`0g6`tH60)olj+(;00N7kPpD{ zAO_>pvINCbg71{A2+j}K0DjeY9+mNP*7y$ue`w)Z!G~l^H9nonjg7{$l;Q$E&`a@S zM|hf^!`HZ%o@2Q5fH(Af%q7&2xe84>X(SJ}Cv8 zXIgOO=>*>Rq840vDn4YyF?k+0aFeIzm(8;zn_~04A-K)+j^N5ODLn5At~?e0-iTxJ zd|==vPtA9m=b+Sq&9fl5&GUlb$}=N8FAAdEGr7Myu* z6D};YF6}sHYs9%#BaYUw9p{%Cadt|5+kCX{?KsC|yuGfu8gZIrjW0n;DFjH;!nJ-z zEnM^Utc7cST(fXJk2@Bw`}>oH>wY!JQ=mL`{S==mPUPJakojCFPpg*m#@%?{E95CY z>gHXFpO~4Ucy21}WTz%3yh+&bJ>Q2i#u!4k&Y_T21pmoEmiEn?(1l_}Z&jM--gh#tr# YI?f%VS<4}&Sk0OhA#nE(I) literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o.d b/release/src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o.d new file mode 100644 index 0000000..aba47c1 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o.d @@ -0,0 +1,49 @@ +src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/grid.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/includes_CUDA.rsp b/release/src/awp/CMakeFiles/lpmcl3d.dir/includes_CUDA.rsp new file mode 100644 index 0000000..dcc3659 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/includes_CUDA.rsp @@ -0,0 +1 @@ +-I"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include" -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/checksum -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/checksum/md5 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/init.c.o b/release/src/awp/CMakeFiles/lpmcl3d.dir/init.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5a9cef8cde1517e1e3468ffd0bc51d93213ceaf0 GIT binary patch literal 3328 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

^R&p=VT?}!K=sPm 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 z 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

r{er~~ZCW3C-*>(vJd9hwSj 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%0DTzcm+RHa zd34t=Iem`)szJUHZ}R#`>jQuPVg<*4-|p~t{Yjxm`A*gw{9XY2^YXn}e_q~i6hAND zoAu}Ay(fO@csc)oUrxR;zMOoUKGyhcJ{R=yf$s5o`Q8jaFYh-xUN7I9_2=dNM#r0z zZ;Ur5-`g0km+#H+^YVTp4Ez09r?!XsTkEyt8_PS^FPmSK z&xx@h@6yLr)z^K^fMHL|-PG?Xz<#HG4)XiiJF~lg8DYM^puc1BYuraPDF1@LzaalO zx$mF*WvJi$vsk|v-@4xYNiX-l_hS9)`(JQhy#EFIwU#Ti5_Yv>(_Bj0|(%0Vy zq4@P9uAKF8UkweYP@nfT!Jd}?h4pYte+%trpSAPeA^zRvKV_x3-$?%{@u$GQoc{#> zB>cY5F(76BlKd6n!~3IPPupYm%Issq1|GqG&LZEoqx%oTc3}LQe1Rz`v>l|LZyUe=E3ek?ozoC)nHnXpeY*{5_g=`ET*}Wab93UsYB-dSi(8 z6Y^D@Ka+8P6z$=kXg}KYzx<_P+FKiI@RvYe-j6T;ME3n@*h}Rh#*2gh(;3cGpW{P+ z$p2J4Ih3!AmV>_ndgJ$8%)gU8_YA*p?Y%#;0_zR(~F}Pg?%P_9Qx*o z^ZDP8sITnT_y)cIQ}kb!_w7&pC+LTLF#N#N1^W~BeB#egKSlffO=xe|XQ=&Ewy&za`EOXS>5nXUd*1B# z=zlzc_KZKe@2kDVx9vXr6KFq`_%muRd&BU52JQDKdpLf-q3@f&a+>x>&Yz*Z5%)`e z1nno1^^*A4)ZY9x;tzi$@n_J!#{8A&Kbbpc-$&?U`9R{ofc}miS|4n`#_r>jeZuh{ zl=&0sZ~XJ)Z?#SShNAxig2eB4`9GbpeVR{_C;Agrh5FrnZ1sA3W|#zb>lyr`S=HBk zhWz694+bb-`o8>`+5qc280Gsl9|q;Gu>Q;l1#pz|g875^^9bcjF#5yzwISpE9nd%W zKbRkR|AqEr;=gFV98CBFf2Tb;8|+Q$gQWw}e*#=znJV}%d&Vg_r9=jNN_UH!p-^7fncm*W@uOXeHzxMkTcHdE;f2uzbzi|39%0uG6;5=tee_p$j z@|5^5_8vm{0+yC>yG!~R6p4K zGy6pGp=5m|y`~a=^7r;EAIz;E)bD#~pKE6U{gZ@|j z5Z`q3Mf&No%?~MD%IDSX`9CLL#r{ue1?DIGpAcVMK9uu!N}a;*5iwuK`#YH5@Mn~t z80=Z*Z!UtLT#s44f~|7z|A79yPlxgR@V$=RPY~+EzoNIO{V23=EoE|rR1SU7V?Rpv za`?XcJsQ=={xtTZq%Q>f{itJW+un}~`%5=r40H5P5KcYe`g^XF-;ct0!+zBq>VI1K zOL4#HWWVh{z0tLwD|Pu};t%K->1F(e zEv0t`e`tB?2<_3>zM=Nh^6#YYr&^&s{gI>5KBYglTtAX6r0ox=z4=F`ujBaXPaTW? zjN0!z!u2?Qe@5-K-n@94_Q<|C{`YhI(VtcO=_6c!WBVz!H~&ufPsj1IeJk=)?ZGds zx3PW7PvPH)<7fNCA5{D15ytb>9`aCXAC33p+j`p!_R6*QOJ5>FhsW?~MPaGk={rcZpYDNEx^1WQ2 z;QVTZ`IXKGUOqqHnPO+_Cv7daA#DQ^6iqfBW}j z??nI3KSY1puS~`t=P$;8tYh?x_CM%{`6&D#Ke_q)Y4IbWAIA&&JrKX=`EB%b{Pp&* z@B{z6y=&vGNB*1!zmG+Je+0i*?Bpl%7xLx(J&YgtMg59+y3TKi-&jR4KE(f;oPTrD zhm_ye-XOo?FX->>Wyxc`5#-m&qZl0gse@7{KAwZ|PX>9GJevGyewh3;3i4fuKcwB7_X0Kxba4Qke)rpo0IPz<$tsBdim}- zUOVp+@1Yl4aaBF!i+UuZ4*Zxw+ z&P&L?MR_iN5HS2N+3!8~pV)uuU(r5&wlr8K{pr7fpUU4mwwCxyFL(cG7`@@S3IFDl zuh&m-)BUH8^B*dx1pH{vI~`A>l`QbjtD%e7qR@O@kqy5Bjv;85^TM z9rFGGe$Sb(+M|E?Gx{lE?GM4feDd+p!QjuG90WWt81e=2`yCTFpFxbY|8(sX`nP;} z$?GMoAD!}WkYCal`$wdJ`5UL94{_Xs_`Cg;eE!@sXz%uqJihIb=#QX3v>y)s68Ve$ zB;w=wKhc>UUFG-aZ(ZW~7Q1g<-y?t9)5Ba4g%9c1o*Dq?{i(`qXOI0Jy`w+QH;o4T zF}`kp$l~uk_oJAf=kn=Fe!OXXT=rQ$pDwq5L;kJIj&Qt#uD$j@;J=u?&h>Fdzh7wa zBC|(0b)x-{-`_(1Qf~hV>$T3`YrVF3>P&t=D}`#|}GXMKI@L+elLt>ItDrz`HqHS~S&ul3rG z%J0V|{s;Jhc$wOpzx9gjN2$LX-;XkWS$yw=^5di-$aM36kZ?(QLH{G3&3IAX|EWSj zK;9)!%*PwwPkkW$fp}rPQxhEKXJ<_LdOqIG^9XDo^mDte`~2;^80S-Mfc%U5Q!}HK zr&vBdKzl{ym`{jTYCZG*Olx^Y^IP&Le`r>4^oMG)hg2W>O8Z6kay+!pX>Vb_;O&5E zPuqS~^q-%@T9M|*Qa^Pjl;0Qa{UqNG`a`!3*5I@i! z@i4^)%%9|Z!hTa;z6<*``Z?>MkCh+iIZ{%}9E_M5zXW4_Y=lY<=mvx#JW za=$KVFMlV^zdK?5d4I;nANOlCU*I3{arufp`wQ~z`pe6A#ILJA{9btuKk1*iza{=) ze=RTHh5l|}yg|MletG$R`Qr`p?fT2hcLBeYew&OpC*K%vUcL+c<;RQjU;9)05c)rt ze>c(Ix0n9A*_X2K_S0Za_N!ukAMFpPU(NnGA^jQRe^-0@KiAFItAC;WAI=~88<-!= zkK=kAe&6r|0QC6$G?}Yeb`*b{v-==fKllU7_R zbpJ*<yzyk5KiY4;J72Cpgnce}tXkxe5Pp-$wYo#$$kCAGKC+ zyc`JG@4555ypEf@_5TFy16)^tssY~>0AO&x;ytIk?CZN>j6JUd%^W}S-Ee<$Xy4Nw zACBdpME#ZiVd}FA`-i{6`^tlVNBe)Jzn|-|>=W6u*nWXMA^c@O=s1+=6P$m?eMa_! z+pG5bk9UJV&yQdX{yZJ-uhv6*4E^WM&#Au=tKja_8NlyP>7iE!`ofpRSOx{wKeJ!xS{AjrI>^fhL`=^HS`&h1q@cqDhtEDk?E&N(S+-Q%~WqNYuVB8Ree@UXzFpPF`VM??|1I$4?|Fkh^${EoERnv*PbK}XQ{MO$ z?8g(o+l}7E-$MkyAPp$z@1>$Y?8o+lU-TbD?>j+ndyF6cKGdq)-!IMwKfWgzt8ykn18Khr~}&fuD|!=K8Q1@K1BQJD(?@0dblr^ zAHe#-XYuzrKhS<@Y=h#Gwr>I+R(qWHTpEx15cFpMl)s8A=kL$!q5Q#~V>v}-MECFX z6MqDxI3CE8YtI&AJ=bM>LVk)KWa z^eg}VLK%N>`jYwDT&j#7C)EF9s84#0Zk!9{-M??xTB>clHYuO(42{&6Ej$Q%>-P>X zd;JXhPj|*uE*)}-a9uEINO_prSL@(Gp8ra}31XG*X(Rnb4| zFQERo8}D>ytj7Kn!vQ`V59#UoKiz4lTt>2M|4x+G)qViqn-qS^SyKDj#@FZC?@_sO z%p_k!8?OoFCLiwxTy^-9-seO4coyVy-OK0r#si_;`0*g%Nwp_G>KoMm!vBTS8t=n^ z_qcMM*!E7a-^3SKV12H0E@m3ehBcG>i20p_X8dw40+{zC9gH!OVF<_pQpd_ zG|ms6kUTFW`X0ZpUTU+x`@LuABU^3VeJH#Sw(jdYeu*B`Cy+m!pN#gBV3-5wub=A` z;u~1sZGP8neFy!t-rM}@WBho;==WpFH^zLfvVC&`_0eBwPyG$~1wRx|+PLx`-FXDd zSJ}Ao7l85m-mZOizmpG#U$yddiTcdPv!(wzp0?pTTB)f#$k*>I%<5I^F2-5F6ly;`aDQ9l>g3(61mi|Mz%Y_L5f`ruER&x7p|*>4{9 z`YqA-R!)2F62~*D{%kxavXhMOXRCD`8izg|#P5ZYo_Y*FosTVX{l)mE@%!!d?{vSH z0DPxABSVB`Gr|5NzHBRfeXYOi{s)|gw|u6!o({`DaKEoE`}R*szaNpkfq1|2*OT?P zLi^hLE3Chet6#SLh1h?Y_O`E|JFkQFPUoRM7r)mPZ(nXi|3>mUDS1`?JM4`H>__Rg z3n$(0wT_uC#Pl-zrZfio=CJUGeKUdI;}n5D)s%g6Yz6i??FG&c+BfY{#Y>exPx)(4 zP#>*ozJWijm2ufGA-}#o!V64Yd&(!K3*gZ(-^K-xGc2CWH`z;q$NITe$ey}3K6DKI z5gx%70Oj#myJ6+RkMKx8zc-RWe?dNQ|G*gSHR(Ixi}U}Joc@~6Y`=ozJbru{kJ)o$ zcl}kLo%b2R29Wc|R6b6Hl8kpm_TGs6DcN_5{~EnG-iF3E62@oa*Zl<=-^3XClZ@W*&GKgXz_gx}~y7%$3k-dx|;cu)@e)9!C@{dxN>;*;2$!Y|2> z6a7o06dmzL^dGVOxqx3u{z%F3C-6JqHwFPAKcHWL5A7|0K|a6_v!4TgMz0a-AC1qQ z*ZO_e9`}a@{y_e6_AmQi!S!O`ufOjB`Abs&V>Q>`%BZuS884UpDSyQ2+cNZ@>JPg5 zIe!84p+0g8Owf0vj~hX4iE2ikkYx6`lutHB!AH`Is! z%kc>x;5X>bpZWd=ao?_V8~;FjaGs6Y0#Kj9{a~nr(Le5|sV)8y|MKzvY~AS>g4Abg z<5}^%)0590;>?EXjj7pDmiNZ^wA z!9tl|G=GNoYwHQ$r?-!Xu;K^0F2e3pRlG-~Nc6#fk2C%wZdp7C{&S1xVJYy`5AcWi zeYQyA4Z8nH`?W6KaM|o--Ny}k0RbY$6Kwr2`d9R)E?WKm>`%c@tT&7NfE!PUPaVad zQvBvT?8bKlFyaZoR{=NW=gFT1jAuajpAbC>3!hwk#OOEsnCp*~6wh$<%zQkflG$IN zuN2RKufn=~ES{l!#2C*&e^A)sr{Wm{C4OPU#WPyVd*b>Be)o!RoRLTYKa>alzz(wb z#-QaltkM2EjCfyJ@xDFoKIviHPvBkP|O9z@fYV|0ni_Z|4jR2 z8P|R1;vJdx1N?nukOzzn^rU>cct^^=7Jjdp?dmh%ev1^*x~*NvAf`1-IPTT6p6o+0@mv+#KN;eBG< zk8=3XK4v_^`!lV!@ynOz4vy@meRp8OhQ{NWG!h_B>Z@f>`gtN+EE!b1U_h|6l;DbBg_r~n3f7z# zJS3Q7;(AQ{>2H_ipE4dXqH?Xl`d(GA;uo&|>rsEe`LokFPfmP>*`N9!6YS#??EkA# zR8f7#AK=fRzJ{p!$#||F7Cv8t`hx)<a^(hX9 zPePBYr&a$yL6Q06#0O_MQJ*}t`U$-pK5sygk9Qzmqx!VT4WE>rh7VQoaG*~^^=SiJ z{|S8^K9mo|3$7BMgx)URaSG*;KMB2Y9}DR_kMhWmg#Is_R{5PMkMvLI?fU;llt+3e z^mYAz9m*9SLHuGG`Cz1%H5D5 z1XrxTTyQGWB)1rtp9IA zxzUgPr}VS_zX9cnABn#y{jC2tqul7r{!{u{|8GHgl<#CdIQpDHd6egrzSjR+Q6A+t zrLXmW8s$-5Q~DbI-+}V2s`2YM>PLN284UVN->(X`_0ITrKkA!&VLt}H zPsH`o=x5_S3E1WbfS&ryFjQEc=Y1pjKoEZ2Gm`yKpL zeOpiMdo+i=z92pi02V&r5A6-QJc8YLj{r7$6ThJtuYchgeg7EBjlKgYAKl>kXydc- ze-&V_|8n~)j{av+Zu=Abezhx}PyB5Ef#sErcNO|4ta$!QMvsR8r}6pM02X~+`3b;j zJpMMo;-@P=3Rv`Z@K*p7eI5K-z#5N(Zv`y+IQVwJqOXJB4OsMX@J)alHIKL;-G-|FU{x7tJU*L?nS9r^1-rx>5F zRGy|iS%-a$3#RZ)`1Tg>l7DcC_?Z9a{ee1uzn!|w;%AJ0ulPbS{?Gl1ze4|u^T6jt`5P9WzY{R_KYGRg=`YCM$Np;__YV{H@$fjRHrvHcip_4q1 zp1J)3_yesKxc3;Uoi~KM;Qn0lL;D4s|0}u<*YaVYe`K#f!8?5jcwmtG2l{HVe^BOr z@3p?J{R7?q1%)s9g#Sh>w&HBT5LVShv zLVOAF#Bx4=34`UsNr!mKY^S1lMkVGim9;-n%wG!hmb;H%{XyQl_BY&oQu!xQpZBN1zzF9@p?}FM z!$;*A_fv!~Qp;v+RD9Gv6Ei<35(DaGwY8ed7GcK7Eh*pl2~( zSMcjP?^J#HXUKQW>^vkAu&}=4K9ek*cU1dPPH&^%L;dKlF`b8#d|Q>{`@a5Jtfx+& zd4Bu*ngqjsf zxqK}b&zx8Pkb1;Vh!6Sg;;+5(y=tL7=)-tT=J9j+URTI)ssZ#D@~illIp%v=A=V3* z?}guhU>PkM7a#RCTzs^~p~d(pAc&Iar}*f2mE}G@+AAJvaRBurD^KYB>oxWSuXy$z%E=o zvKZfG{Bwa4$U$O$Gv1l}-X!#i?cc|Er|o}j9`D3xp>8)>QWzte2?lGz$41n>MP~?H~*x%fbvl*5ABnDuIeJn8_Lg; zJzQM{Jej~308b_GMZk)en*CfI0z8qFb2_B(@dA8D0ludI-&=qmD!`or{8Rycwg7W# zD4)&Y+XSrqJO`fyEPK(x^MD7E@q84p=LheLJu`$qczpnWvB`4Di~OzX|3+B;BKcoR z^4WUFi=UT?1NnkHAU+}gQT{X5Tf`d#OQhuAW`gkvuD{4Ps|)5B4Nm+|^AD>33`O4G zM0{2CDSlSJA-F-<)&H;Y>itc`OI0qdEPN&fPbT&M4c~)*Jf(6ivchk)M1MGm2UPzB zs+&K_c*nHrYte>$BR-<~vciE6{Z;y(Mql~Q)&B;tj~7kj_bAxE^4)|V;`xB}SbVnn z-vKcHmhqRpDu#))&CatjlPWkjH_Jq zec?3y^Xl^`kMW9z%0+LB|5QJYa?6J!Jw}zkCwiHGUj03k8-07mC#siF9P`^5E#ThWarda$4o$zx&>cC^z~uo-tC$=S<`qzt2MY{yOUSly5h_{}tt)e#oyB zekSjy(f{xU%u|yu;LHC0N5IC9p7E6GZ=*cQZ#O-E73C$-i}Xz9j~m}_pxpRDd8{j6 zRPyKOc^T!FKS_Qi^u&5ae18z-nhy@&e+4-5FUb#e-}^67Zv5f*lKfEjy?>5!;|IT& z@XOKfe?YnMgYq}BF%Q^(pZT_5=V6OiReuw(*9Xj};dE4e_r3oLu%};ZsgcB+Y<~X} zlpFm?zeL};@%(F)?+yBOcw@=;4|*^kHN;O~zmuQ;3(8G?Sw0c>^W6AeK)LwwlJWl& zfJILSe-g0x;oyG^SmSf>#{eerr|RzjPU2hDPXQKvUH#t$tnoYe-vLhIXVrfXIEkNC z|1Dt2lUtvD4Y0+xlz(0Qr+~eF!Tr(ID}a^XgM10ZU+g?F^Ji&qxO~hp=BqMZ1$jEj z`dq&lufqBk@=;~KjBotDFDHH5a4$T332-N?(%c@W{fGV$U(k7rMaxIUeP|Xx(*Ai` z?($86pJJ&SYsgPU|K8v7`Ki1QoBb>Q6z#!JErotPu6M@AtsMEPz{j^&eiHi2S5)l*6C0&KNa-o5pSx}K9D_x^d17G!L@wx8!5!Q!(#(&D8|6z+45dH-DF`|6YD(!o~+OI%;5zXR7 z^6xF*v^!oD^MAwnjiF+`Y4(4S9>~uEJ#z8H7eRmK7rg`HOY>8e-{tEk_nBDzf$Qa) z&L{1=<1ye4hQ5dL3;N>sQ3Wer3IC;W9{aIN){2u5vVfe2a{_P1XH~+GX@);X{7@zJ>nF;xv<2b;cj?d&F8J|ou<0r>w z{-DRl`?o4L{!Gv|iS)0H6Bd6&@2Zst`rCEqo@jSh~enNa) z^fqza2>GSs+Q4W@F6nN%Hp;A58M~T>Y;`{g_XdJt*JJH-!VN zeAZ-sIsU#i(3kX2>3c%*aXQeK^iT64jsD*e=u7@~%jerrzLk7_7s{i)=$6m#MtRf^ z-ST-a%D0lwZ$i1>KiJJT-OV@Uei3b4#E-C_wwrHy1f=l$f4ljnS?RT)$8Nsq=NRAT zew(I>kH7Ecn_7OU@&^$A-_19LdxU&P`Adjz?mXXgA{WmH_u0*1QX-z>_iKWG)|G#% zOoAl;)Z!ZxH=KVufDhrJQhbj2y_SF4&v-QRPkG-p;}42Yp8#z4$63B-?|jp6KJe4r zPe}5+F7?VcP4cNe$?xI14D7Fj`?%8kp%8!7d1=sJ`K63cFJpHC29fq7()>f_TjIVs z+?S{P#x&n_QJY1G4*|cIfBxO_!^IEcljhUHKZgH&-ShA8tnu*sFEjo~{-pVwy}v&| ziAeG--FbK9Q@MQ0MSb7$BZ)7`u|>Y6I}dO9Sj-nY>G8*Sx5Nkh;C+7UipSaazR>Z) zE#rfrUok%TYKR9eQapVARgZY!DmRE24Kv-~*b?+qsTdn`}R3o5^FDCYmD zJ${c1{upUUd-F|?!KO;|De{w4KE?7&M(;CtjrnI~oww5v<%xx_HK#s2!9_P?%z|n^54{dO|XsE;!EF-`j$_{{*v>F7$51u{Yp>o zkblDbLPvk3Yoz%r#vligW2h0o|pT6wa0xU7!TydRyT4KaQA(8 z*@nJH`2+p^`7zN)u)Cjw`}=m^oz1s+-<{T9FW>RJS;!}{{bt^G2YCtpO1SS%#}zPM zf8U+I4=vnxXXoL$bY8Bq#eH|2-`@W~ z{*mazK1k2Oc3Jk8hrPZ@@{g>X`VsW0cLq#f*zZr|&#ys$;r!fy^eH=peV;qO2L59H z42S#epnr4c*DU`?TlY+5a=|YXgzm-T~+yK{(K+mSBv>a7jyMTbw6KH zfAo6!M<6x-Q2Rv_lxO81RWju>g#4qD!BlX{KPvIO#^(3k;d~`^m*#`= zj|Oyqo%{>X8^7<)^=mceAKCqLDhL0Mp*?k#wdee@`78Sd<*oJ};oAuLIVQi#uTc5k ze&ll``7f0c;d017DqDHTf2s8IdzFxX)X@1x-ESv+2lq1FJ?0XLf zV1Fey9?;Xu-FjKa{y3K>jR*6ih4qB$ut9z0@BwJ}puFzxukqvc_Gi!g?i_v;74ZWw z{HX!LE*}Z`P`Z8!<%U1-v+{sn#o-5iLi{}cBYu@Uy-hyK;eI=(k3#-Yr4smo{-{sb zKIR|wmkH}WcjD{rx9bo2MVZD!Px$~bAE~T#)QOmn1cTn$Tc9uR zpJRJHg3J0nPYqihdWAwFICN6?>mP^$bcfu`au z;k-1B#z%1<`(q;*2p*Qh|9;KV+#IZpdHu0=NcopyFw3u^9Q0y!R6?~w+3`-9uk!?% zzj1S?B)CLaweu9(l1CIS$c@Dqpwde8>`UifjpW=t|T>pUAPbJ^awa51bC*{TOtG|4CvHxs7 zUmo$Z{&U}-yAJ*+&-E{SlKx}+7svZ@^ute88|?4_oTHDyY;W|k`sz>p2iWmL@K7uV ze_yjyLU_l?>r-z*|0>6!Zal_+c4hprauuonQ0~Tu@|$s=HS70m|Ke#^K4j&>NAbc? z|F~<<&u33@zF0gFNP2wOb%M``73IoPd`48iXM5qp@}YT^3m+ZlGZ^DLj{B=cANDVN zRBkz$Hhwk@_}tv70$x9*oXt?4;=}T6K3`sJKa`f|#%ulO+6#ZpU(vto`?>b7X?NkD z<1hMG{RBUaU;T?-HGR*Qzh;R)Pd{Y(?y0B2-zl}1KPdX?JpDYz4E=Q){8V`+|5fGq zy(hL;`8dmoPbi0eO7N?(f5E;z%85!sf0hr;=gU+2Z{5Df_c@f%Kg!j$A3wg2@?8JI zC;5J^J@D6flX99fp?@pSQv5|<&tH6BpWdv!$IsK>@XPfte3JG>`~~OBw`{NRCiv;o zNqddgmt%Yw&-$r+d9HuaBPmb#PyNF7IsS^@`TleC>(SnQ|5_dKU49PF9R9%{0lfYBCik5aQ#wy>+j4hd3^&I{focqFTifR0e1ZC-5&II@?-Ty z|D-?hFAvB5@cmqS;7fc0zB|RQIQ|?x4c|!507v|C?e8JIm-10`9kezw=kF zQJL$LD~bN1G`xA6C;hFGrn3;dazJ0k?=$@EO)OYF@T zDUU37_5|8LIa(XeZd${iQ2!s*^6e#GX1}o0O#I;Ss`XRqU*j2x_Ug5){QtA}uEBL( z*O}lE2tuGpkq4KTAixKB1)dAyjVq7>FF-sFE?(5jRAgI;EhnXBds0bvDvdcnvyLFg zx`f>+M%868?j%L)m&T(>IsT=ZDpw`_3zKLvj?0zOWRe~`JyXS~G%l4UeVYEOU&45Fh{7%7f&H8MUh5x-e}w*bNdG%mTe*ME_P;mV z-a~~T|6ao8OZyH4l`Yl(-p}jr_4r)oc&Pr0P=kJzsUQ7^z9LyNKC)gOlJ(`r=Mb}0 zf59K{{sS7+;{ks@)F&>hGMo9Wx{Z~ub{$an`j(F7K zo7sg%(Z4X=SKxk7tuN{`9{pDln=x%W*wR{2`Dh>U<@d1xvDaWfeK3XTpf$!^!5)cx z^S!L^&yM1~YlO>L*iz$(^Xs8?9?#yHlSeNO^&lUo1(P}-`%%y@<0XU0^#pq;+vC5W zjpYyTv+r?Zf2zux@sRRuEXzfs_5->4)+eNWF%mFdR&oTpP@FH&e)PxW553Z~(EkSU zcjO38-c|pJr(~ja0%=800pE9YP~fTig|Eu_a2;uwEabehkhbzYxR>QV#yc;gd?dz% zhctd$(!M}m03{J(pD0Vd#A8D`Opl`}+;GzGeek}-+y9aEZ|U>U2`S&n`aoZlT$J>2 zrr+ZGtOSiv2U1VkGAXWj}M?5T>kME=P(smtLGT*F!UA<2(@v~4K z@0lM6%3ErFv0hMr3)hqQGYCC3p~rpy@HXtH_#5cM_Z?|_YaQj~eR0GGzU-!STb|JWce6h!1{K9nnsEj|$gT83}SZ2JyAC*1r>fh`49*$q) zcptazg{}X9;XSI~doQQeDp|RqXJCDHmi$9H1w570@$qc_1(2ijFV8j^pHnJ!2WiIm zL}__{W^(FS7^dP@C`zc|U2oo#|Z*FQG4J60M;A2L7HdIQfTs@$aEPAb!4w^|Lk| zEHl|vlJ7I?7wwaOP#mm||D(irwRrgp@CVdaN@ru+{BRZAs@r>YhS>zO%&s1Xx8VgLoleruKao%@4?*SBY=p@4L{n zIDj5Mko@tDHmpy|hlf-;PyY{F5Z}WNJ)5r6lPdhvl51;Vx zhIIKqOrIoP1&^5T&FAMFzJKv>Q2x$zXz>dCBYglpSLL}L{u1j&@cM5RUOzE=lKeo{ z)3>l+`?=X!i+|$l+1a@Td@uRfKbD^Zo^fU->x=8}FAbid_jCO{o5S<7jd=FQ2lyN2 z@Q8m0+tc_MA-~6ZDW^I5Exy5TkniDJ{5|sbg~N0vV*TT{|4)tYxvp)b&%gDf7V?`g zneLhK+fQfCu>72sHxB<^doOGLh5oa>H&NcK7xZV`_J{SSbA0e6IHvij>EC%>|A)mt z=_eLs{4gHiUuW2#`FC*)kM2rc-HcNXS{c#^s0wfV7yQJ@_F<5cxSw0{-aOK&RY2{c%E~3=6d|I*^*i>|D^m4o}G?~Z;{uGH}##l zM@arm8}{9T@8wyaUzDGlp5}vLf`8z><1bfcDbMGMz(2}I&n}BRw({!P6-m!{^87aH zH{%1m$Z!o>e9k;Vd=6=Rc5Ezbd2ZJ4ijn6Q?>DpciG9Q2eddIZcd1Y0xmRBf&vCZC z3dh5%4-a%X{vq{!j`G*5Z&!RRi+Bv^-~Uz0+slg>i#a223u`fSIs8tQvQ`1JjZvn@Hw@= zH2Qvn{=T8w{}jq*>sQ}jb^Ig9<}3QOKC!EO=XiW)PW1J8>g&K0HH|C%gJ+W zH;{&YE_j7Jn&)zHc$uH4em>3p0NQWV&*%GDU)A!5X{DcA{($;2ct(9MXX|?%-+TO~ zYU#sx?V_IxJs(y+XXG#SqjY|r!zKG&>SNrWfM3kB|CrCakjJ~~=aj#YysE$NDgNN= z<98u%WqC@AB zeR?K~*O{3-Ui132?T^Cik6oXhM}KE_)Tc3CyU6<}QT#8a{saH&>ucce{8{Sv*^olPG6p#+g)Fto1?xQTYVYoI>yWC%X53^%X2avPG6qR>C0%p?#oxS z2R!@oHLEYri35|v^K?#MMtvFiiu!W$H3t1=eL$YdcFU_Tr!S+vjJ}NefFGf+iTpG8 zvGzf29}xc698ZfD4?E#0BOmj4T5P}*D)jIa_r*vGo}LP`=SA?(fjue?TI&j5PmN+f z+eai}Qw)5;{+cFaZN85Qj8!#=a4{*3cjt?$mDIcxv^4Qubp z*}qYq_Acb#&f-n$&$;@X{yf9=iu3wC?BA=({*C>BFQ0&C^}QE=Hjj6qzozKhJXp-y z$G+IV9ix3~@4j(P^ye9U{uQ;3W%S|lulM%{?Vdh;a5TGrzR`b<`gA|-sno|_neJEk z)$+TwDCZBNPjf%rUMy0ci+!B(wWT;SinN^1ApUp9D>MDX_kgxgz4qe(mj#V{blSzXHK*PrnbHjB0%vr_fm69UId#3h(NELB|H}K8AcXzM4MaAD~b4>6tMO*MOP74U9kd ziO}1GpESzf;-32SO?Hs-PvmdE@`a*&MSn`^XpUcu23!wL{`Q|@x}Sej^0z-|t>as) zZ*8wud0PJ7xLbR*!UyrY<*gT|Pp{_e)qk6{w|}xZK6kcP<9;6a#pX~Bk8eZ{k6h2u zKo)<$8=WNnBF+!yYjdb8i@&c$B7Y^H_Uf-iVy~7o@%Z)ONZ}Fljq#46lPB3-Sr62w zzdjNXZ)L7ev>)~tMc=mg>@9XJnDVq=_w^TPzn1mF_0>Bp>r>Vn>F*tp^niy)pMT+e zdDyOZ;y+RT8zWrbsIQ#n=-&YSnC|V+;0g2spF*$3XUUttFdd0l|M>0yM&t8j7y0e^ zMTO5W8R;28+VX?6DEjqDjjxW4;gKwUM@ER>qKDr%@x8-uG;aID@k>wU^lR0>^A^AA z{M?*(^E{mUJBQy$&eJ1{-*bXzgJ04gvAnr&oBjx>@Gw62^yy*^eVa4(v}XEr$PVv_=Lq%b??s=E0@CZ_ndzPJT-JF8&*d`e!xu5= zXFL(*A5%8#3;K0)`}EHER{FKWw@TwY8slT_?T_t@Z-2cx{aT$rZ=Nh< z{+$yiGV=5!_`!2q>O30yO;jw1{Z-^8Jy{>`6AuF=E|H8}SzC-zL7+r%H0Z0sf-= zWv>36>`$=%MPGORYI%P&*uRYb6#Z-0J^!>DzuKffk=$?P5Qu(|9vA;6<)7Kyo)Ye7 zVd!%hPx#9nkCD>;O1KZH`90~UewKEMKiYBaj~1rI<6eJ}U+J{`>MdDs$Jf5c9%M||((L88`cQmJtLn)L(v#GVfN9-x0&e=qCdCYWVREjg!uoC_9s~T>qI5v~xkSH0`>5}N63{5r`wO72c#!Mc=>wfT)Q|Oj zV|>3L`pkfi&k!b2kL(Y$e_E6diN3G&Kh{4rj0K~9;!n0D-w*MAG{!$lS0ufl&mUGG zEdBj8#`gfj5v|s!-_A+AjGR1H^HYQWCFc+4MN)qJZ#jSB52Dg(*8l6b;m^YT^#J4v z8K&mfD}R9fxR*wKx_+f!v%D`aqV=4;I-NVTh1#^f1^zRA-1>u1e@>_6LXFt3Rr&zS zTl-R~{DbE7`jGR9P1F~v_d4V};tR5WlJk1*AK&)q-Fyk##~NznBI*UdSf6qH6Y)Pb zUz*P91MB?|xZB&}ugd*%+TVW`pBniQCH>P}|FZw4etr%6&wqjTH9w6KW&alXG5+v> z5`O5PCs#cBVE@+sSNi_CKVFar#{UBQ(Fc^iKAj(*IaVj_WBtnb)N|u=Jv%;cqP&@3 z^iRkczx_X&{q+Fxd;W``7yn1pr}x)(yv_dFj`s_!&dPV=PlEn@YtGUSeO%F>Obb4} z`4xLbhJMkfZF|~Y4ZLGK8ujTomgcSeuhl?{mH(Obit%ZtUyH(|`78My+3o6hx}W@r z{vW7N=?mZU_|tE%3V+I+Pwj9%J%!J)={Ec6oc~w9&I4Bx|1at@brge*ZXH^VTErUh>jz{9u3Qe)``1zZ~AVpKkOA zarozY*Zv?De?QmY4>FCNtK#3NFM>Y^@hJR3`Gbf*;lr9A!+%WsgWM4LBK{!1;`@Wl z8-EZvKQ;bfc71ApFdx6S(Vn;7v9M{M`mVvx!^F?z8=rUnOm*TB?W2Fr|Lcf7Klb@2 z_`x~WH}2{af7|nZeNg2y^}Q_kw)MsM-lK0cSKpA}+pkaX=Ftaz8}_KXJm0Nl^zCN& zdVvZp@%3H~Prz3OKeB&q^q*{wAFO||NA+d#^G)AAt?+ZR#f=Bna|3=#*?cW8?;byQ zCoeT#fj57?o5{-<6Lv51lI87sZIG9jwg04<-^cZNu3LX^a)D_6E%IU@)dO9mFr)P;z<&Q1$ays}`Ew708J7mX8>QnY< z$V=ysnH`^;yu|p_eLP`&u4nP&&llQ{NREfkl`Ni6Uk0D3Z+Cpkds<$7OAYm9@QM0% z#pmVAAkW(m*9I}SbH=`OH~v~T4PO7c5wDH@TEoM!G>HF!yaJxlzHaZHXN*+QVu4nPufafrqf6sV++gopxhg@H1)%b@v{aVXUe|DDU`NlkuqM#^XBuliYZ`iSNz)!QV^NDTlXdrSCd;UxoHC9(SSdQeU+AZYF>4kiZWve`UYg zsJ|M#=JeNZHtMfA`PzV2U;aQo-!ooUz4cDK`tstw=&x-WuY2jQn1A?VIQO-=OKRSuAoM-6xivibLnCtrRLPZbYe4o@FKpKaS+{!!jK zem|4b*JgA2tnp8D>*=OPZ=?Ln+kYDMS?aGAueiU}ApbJ@tA{@=e|`Q#eU;PUmow@pQ`YP(n;1l&h zU!C4zKbgU2Q~#(%>VLb+H>wRZ^ zRh^fT9-n_l>%-eIS{M5|?UiZS>0?NjuMHpP`ROq2o1(7{i@nB6i#>AK*xS<)xeq;J z?X|^WCC|+L){$YJZ;ljSmHBDZS9AUv>mxaPZ8@i}Dt{-p|IGP2CB-uFEB1G>*A5qH zuNC?*p0MxBepBez`1Sc+m=0IT?&bb2@-yQj-z)zMxgU!(?vw959(Cf^8;|SR@yP0{ zBl^7bkF5q; zyMKylG-B+p+Mfw{5c^Rr>;G`8Rzq7T9IO52j`mlLC*aqYmrj4Zd;HdO_$_(qyu96f zGKY`1JpV%Ccd_j7Lj3-5zu;HSE2zId33s69w$ypZFXH~~H~R(8#-A|!!;${O=)GO< zi#dE<&f%-pKWybc1&?`XX)-mbbaK7>{xNTQ^lrZ7;k$Ae=aZcduk?3V_we`@`1ks8hj-u!=lxlK-=wqC;#1^b zXD98iO1}lYiSjRU@tKr=k;G>L{lrJ;(FgwmEf3+}i+uFgjTif$92a>C`>XaZ?A&{N z>cpovKG(D3yM=LS?50#DSX=cqTT(GIx)b+yRA>@v#!2Qg-=^wC*_^Y zUsHV2{(+x8kBl<IL&!-X#6+2N?KnnI(aDiYNzwx6?xV<)rs#T{L}uqok43I z-(r1>JUfTAh@ZJ1bK@M~jC?K6aK4F)&-C{|d8`-X&vTCQ`Oh%lz+?QsJAb2${}lR* z?;HJ@{x?^?eeGy)7WIo$6wce>KXcZ`XOs1EMB?9Re-8L3g&i#@9@0Mv^@kgsNBF*& z_|w53BHZXd!uJ|P9!Yxeh`a~Kc<;bxxN$rTK81YckBRaFA>V7*eiv4B_;(Dg7ke4c zO`QBVJ{v<}@bgk${6`QUu3+QCp+5LCb=F9~_&e=G{Engos1+X}e2@Ho@>yflCN)*#cROH;L`U=^2Y~M#bue9SVMpMUQ`MQD!>TEvzRS=;N6Dav_k=|zn|8_r-Jex~@ESp|`!ue-m{`3A{5#lLwy*@#G z0rL~BKk3Q~zw49rqx`wX5MQgmgXLA4>pPh|_$a;?|6z=0IjKA<`NTKYE8-_!%$C1&a2(~2YJ8Lv?Vo7N7aq%& zKYEb#Uex8I^fB>&n>6Xai==^drHRboGoX$%Ag!w)#PO?4IAH09k!L;}X2|Y(8o}i1j)*<9)uai8x-&qv>K=>EdYj?V|eFnLU z6o5D%DW{7oG1FX6T+ivsp)F)te}{Cjlj}qBMc-aL!2CtKK9-ia9#;50@QZjRi%P%7 z`&_86V`FKN`t?%rRqLO2haYJAHeXtF{(x^%zg~9w^*hk7lf^}jkN6Y6bp`TfC8u96 zE>eC=|IiN(KG(D3^ES$x@yXC5^S3PXx5W8-_ecnOrl|ic z-Tq%?yu)Pa=sBd9-}sUC7sPzXd5_oL%h~o`K>3~9TgkUq&9zr#dnVvq9L`!(Gj z=x?+~Eed~I=6Vu)6#ez_v-+33M zecp?gBl`U1;IheogYn^(YfLZmZ*N=$e|X&S3+&g(4<1LB;2rz|_jQ+p);j7&yojqG zLwg@n-)eg__{k^tv;6oEv-{<5{4k(?UwZFj>>oZZZm#j`=|NOO|u3ybhVvj!5@A!$}*WFT*b|{vVECRC4V-*3e#tU!c8R_{H_Lyg$_^p52Wuyh(cBl& z`-i{F-Z%J*=K2Qur^@sGjn;2`d70_I<`=JndKvHcfp>rX1218^BKtpcAEt>ulII^Q zR{zla<7w2M=O0(@8~<2x`i1ZhPanBE{;|yUkl`Qez_Zb>w14G&5j6LsJr_aCn0~#RA{lq7qqwb;rNY zxb=O%{1Z>)%0H1WAA056*N!`TA>=9SHO^j0{BGbm&KKA|?9F2T!$r_vV)}1%Iyw?u zW!l&SvEBb?NLzd0u`u{$rne=Yez;K%gMTjhqOZdK*V)p_v4A}k^D(sE*Gqe$IOSse zVBaf1Vbb=#{Y)3ZFtvSfKlpVY4?N`gAdWZkBMh+0|GwmRGGA=6e2-+kU+VAUATgbE z_Hn(jOmH=l{p1V$Z_1B5vyZoCiXyF2g%w4E6^{L zJ&@o|`G|pWlK0qwi;S zkRQE!1@93QM4n0dE!LlXKLGZ9_r3t;yRg=)-gabt;D_M<`hF(tUCO>B_Lf!33$%}T z22nejm;EHtu=n`)J(0fb-{&l5{F&eR67nB+?-OAEm3e>i#-BFne>G!Yh|(uz|F7?( zhGF_d_C9L*wCo?uebvVO#iug%xWZaBpuNV7C-K*Yq}cP&Kk6HAQsL)%k^T;ged|eU zPaJ%b^C9@fd6BU(}Nzg;COn^@{O-TE?IEVNqWh{t_~Ny1b+3b21-juUF0?7=4Ug&ldzf5_$Q#7oE90%~bA!6Q{$#ew@8!q)q)Gol>i5Q;0{h(v z>$CR0MA`4ezXS7Q-up22xhVO#yx$=9S>TKJX{A242l`--6nmZU3#PSw&)M&O_ET)n z*b8A_7kwep`Uu|hkO#VC{-nP@BmP3?c;6NDMCr%J`2EL)Uoibiu}^-|ravY1oBM*i zzn0TS571t(-b=v!*slN|tWev3?0WL-V^V$`_HeDgs&w8yhV?~#vpZ|Q;d}K#)B2Tv z$mU7tbG0ojd6esge7hC*Q6AcOqhD6{LrwoTPp-KABlP$3t@tuOjoE+j-;UQl9jpDS zj^F#*^D*sR5|5MXqqwxp`|fhy0RNt_Yk5hnAKJ?$-|3qi|HASL@wF`TGlusM5byVz zr#}`x?d&C-pThH!UeW81_N-lfc`rAZ~dP@|8=2X@WA@s z20doJqV@T0;pb-kU5ktKM>FpQgh?C={-_UNd`!I3i)~+$`lLPCUmE`kw1@pA#>=+% z!jA3DVL#s3p74iUdyo0;W&ESi9`={g9>zOwkGj70=}$}Z*8a4xfWFV+3!#tewSWR* zkHPrmv(X+KWbU$RUm_) zKi*+#cEZ-PJCqi@8I zTRf`tff)2#e7<7vsn^>pn16*&@z>it7(0Fdd`GQuOuRlV_#Q*Nw)r@N*VZ_T*OvJO zt_NBFxSvyQi{}|1O4=u$TNGX;ekbwTqVPKJ;kDw85AZ7S)kME0el%VY&p`Wc#M%B? z{2G4<^zS;?Hxy8;&pdv4--gRGvi=ndpQQXNYyS%1w`U${+kQHKhU6`c71(D%TqJo zKd8H`YZtvSy@cpOhuH?zr+NWoc1XD2b zwHCD2L7TzrqR!LuH5Wf>XZ;r6YkApRzePUyzr$x?@zHDSg(;%Nph70`)V{zj?6c zYrMb(dZ6zTUoEu->bKG!{U6(EHR`u=eoXqbysS|^dh&9? zlb0oLJi_$(an)bLe^h)t-1ju{>iI0bo`0V5v9^PJB>%|jx3yyMP+j3)_}B9_rQhoI z(%J&ax#+i-!5`WK{`~e{KzW0|yJ=79x7qd{^V`ed6YT+?(jLZhZ~gXT)E_NAu|A*L z26d~?Lf>S6fxnND+^&+0XEVH33|>WEE<1TC`18(FBA%zzVl=o5{+`L<&$o}_eol9z zJp9S(tF`SI{W12s&4b=~K_B(i+S6P=vff2Mt%*GJ(xT6OApD8Gs_^FY)dhz)%m?u3 z(Am(@fWAB*0TNE0Dr0b^6B{+@wl)99)a%) z>)%;leZB|orJg=f%j>JpXXWAUctm@nx%P7U>Rq(=q3|g2do3QD;Y}0@%J26SK9|sc zgHOD_=kWKZlz;b%zmMhc=lLf%;1M&zHEqojzL2>7$?CQ(oT8);FESOD(65qP{)kVVtdRDpy}l zA4Pp13SZAI`tq&-d{EwrJs3ezR6GY(ItmR zk%x7!NAN9BEI;IreES~aVWE>wxXNvn_I`b%v~*>go7 zoy_j{TC3u(Ci^|cPid)6vj0-Q=$|ltC!*8n6AE$rT z7J|Aj?_f`aysPdY@1pg|oc>uY28Zf__yY^STBv6A&#L(6I{g#vW$=dfUe31n0{U;( z%iXk>)jw5xPX9!E89bsr=%3O*%x_-*j1o0I!mps8Wb{qyD~VbU!oOgjyuQZsDg5ky za_Jc#zs>M!_0gvC@zbbJ>$@T!8}^43pu6C4Z~ZjR;W4kD=JtmV-K#xy)yLl-fLJe0 zd{e(O_S@)-)tr9n`NN5RT78=9OYk82X;t)7FD?4p2g0N1r;~y|(NB3FwYBQ>QQ6;3 zE|FeY-(o+lPEsFL_@q9%Hy*S4Xth6!N41`uK3dK8X9N7Dp2268_?+AUpJBRCVf{`Y zoy^%!7kUAT9GJ}eYIrT-$6d+@%SX>Z`C{BQ0blRr+GYvyWp|Wern{Sksn4L8hzEnqwxP)i44)L zuSwBY-TJC(`;F08C&hl_ujgkx`ZizkZ{KPRWN_{i&@s4pWAQ6J=?ufNBj z$D?m5S6@#5M12`Np}t-1EqVEs)jylzB`?2xeY2D<=H%C+@+YG{s`N=X{O=~emUH{N z?D^qOzkRdX*M|Q6B=t$c$DSXwD?B*+=Ka?%ReueC_z3jN!#`&IGS}WumwqYs#$D|% zvDpu5c?N~l?g#GzpYiVaT*={c1;>$fG!Vo7`qOCt%YPu^$!vMTY~ zo&8hko5sH^qidc`ck&O%>J*LzS(TOy7T(`uW!EK(f2|0&5XQFbMp2B=%4KW{nS6R zc=_=9XRf~ctbdBWx2t@6CWoJ8jF+)@meQpL{d39W=k1vizt8hOSMQs;^LB~f=h-)5 z56_?PXWwrcllKww_7&Nmi9ZbFBmC8J`#Eio#Cc}M-np9dFU9*gkPr6!-FyGcU%z{u zzi%EKboNN>r@|Y zejn{+t%HNy-a37BaIjC>Gw1DtL$r4e8h_F@#6yI=^E}hEN4#?0#s7nUebh28_Dk_+ z7W>S3Ne}I4{~R1w{WJQhD(~!{Zc>(zwPXw z=wD_(i2h+eIKuWYzm4`!^g}s*n58}^;6&-=MS4Fvv`bt z%Zty4`6>TS|I?gr8;|c~E*{^le$iJYpLi`kEqGJ*Ostn%gJMrK--lgKKW*_xd=|a; zO!)!gKej0n}{P{$qe%hzyrI9D+WW1ez+9!CF`zm4&9V#ij>GElx*h8f}<=e*K zki{3~w_{^yhqx5Z}TO%v(~ok{g7zg!>{<0A{^y&Iv@HztMg=RO0$~`fFeA{2u+S`}R}x z7x?x2dlTO~{0>cL@zj?)zejx;d5ZcVPyPDhY<*L?`f~a!>dW8{^+8@reNFIpeJwBl z`WG!eFg}gmHsK)m=~#BH2Vvj)o;O{N*(ER(ll|OdnyI%w`{E;Z=k62&ZPvJjZ{5BQe-1wVyzsS+X zub2N&UcYx|^1}^WSL1l|zOLNIn-V;keB6&cwa|)h887dheYoF?^~w2G_j!ZpT6vrE zv#t3j%Acs2^6&0L{<&?ghwZj6$$dQJcP*NH)E8}_Zs6-d%CmPFAM-)){%W)MP{V=l zk<4G=#fgCUGX5DR{+z1s2=1>A$#!4TvK}6k`>fXfvwqaIC;6i;J{{7y4>wdo^>QB$ z>B5@kx2Nz|;2Zo($7{oV*0)%GP|6FQQ6BU8AlbQ&=Z5vD-Y0eO?M6pMztr-4V0~i3 z`irzPo)zQAwkxOT%d<`Hvvvj4-{pt)qV$;DS3RohL;SU)WM8Jg&CU~U^FV|CA>c2C zwJ!BOF8hb|g8R6~IKJ{d^279m+*dtj@2j5D?}K9fp#ON^`$U(Nm;2s9NAie?pCM`G9G7ezw}i0esA)Kyf5zF3q9R)R_I53IMiQGPMoy#qW_uusL{tT z-jB$8@v45vkED2Fkl)i^U*@A*?n8E)`AAOooRIqeLB^{iIdNi$^l5n$rRPQe>E`>3 z_};Fs!X0_P73~jWgROqOv&_c>!90)D@4KcY`5yZ#xzCFHW82Kv@4JFt$$vz@SK5(u zo$g1zyw8dIqi%nj$b9uD7php0>WBNPn6J|VNR^65Bpzo+QabB@A11v$Cy~E>+r-y9 zdzR&~pOgOJKIyR-=}|o%m~Xj1zIqk!6;gjq=QMqae){v;^WpbpJPsVg_wt_VJ9C&{ zJZFZq#4E@AnD;kNaD6d8>hCpt|B!q?uHrB5`91WLH-*7~OR4tN_k7P4^8-AIc7V;0 zjMvhO4^VvL2R!{P+DGS~F=_R^nlJr*rhVWiPk-(AboHzc?Xf>4p$BQyH;?wzPoh(bVC41hC>nqQpMuLv=YWR`1BhjbOI(}+A!*pVt{9C^t zjP*I=#z*SADC-Y+)9<}bTouJ^IG%zLjGU(uJm@r68=@olOvO;1bpvLC@(O6RB0)||P2(@Z{KBosaGfxoX! z@TQL4kC^p(R`k;|sBa4O>-yfhV)0pGKIjS8rUEqR*%KzFE+8p9M(I}*L2DgY0>1S9 zIF(mX_JpsA|1-XbQ3m$B1G)G|kRKFhia*>xdUUN8tHw zfv{R{mY>)D(b^+5zq0m7mHwQJr{&jwvHpPEF9N>nUVTmM{~3O;Ih4cO8##UudGGI# zAN;Pz55TWChj2Ztwx#g;i?Bz2&EpTmNAL7B<&%n+0R66addlJx_KonXQxouHQSyT8 zqkls1Z1k1rYnLvvI}dAl*75b}DaB9zt-ME2?gPGmMaLT@zxn#i6#2`gBI3VNp7iGM z-mBhw^YQNUL*N~Phw;UUH_($@l=lhF`*^E2;@9VAF~0Zkdy@4j{7QYYAIsoZ_D>#u zU%p%X;(j;oCtAEIdBn!?3$;AL`ZD-MzPT@ans~(c5YI7-ca@}k2ESte+Xb(P?;9nT zg#UH1zHgslJR=Xkqo{vTW82_2yFVg+ONKtm$NP?7k3PY#ir*mp-vPfj?-9SgJiZ_J z_4&d5kmoS~bT9Ip<#(3nmvZuaeh+yL{_xz^J;?K^sb=zg%9rQA>dSLAzfPX3`StOQ z*74g(o?ptnhtMd`_Z*M9&kryj*EN2DH|jSrn|JN^=J>%}R-R*gGyDMc?ZOYte*O~i zC+7j=2l!cgW4c1!3j;z zP%<@5eL{2$rB6%+t#wbInALfPAI)-n0;^ASLqGQL-%MVs{eYF%Za+bJ{s-oJ471Yr z_uMZ$gVsTV-7kPLl~&(ph(5TC=2 zN6hAJ`}1<&(diRYx%~j*i)8i#cn=r*fhpF9{?5NBmD&2PujTp0WgOST(pI=_d>hr*7MxV!dHuwYHqtyDmiqCHG+Nl*Q=Fx zd3o!NkI3&vdAsL$)O~znJb-t9JYqI)+h6F-;XS9X*Ytf#qtC$KWmmi_{^jmtEB@u~ zGt&PKKdZmv(8t4j0rHmn1*gBycF|P&f%JE*FY432{2o{b|25|)qMui*BCFY^=;sX2 zVffD#=;zBN+dkz3;$y`uOMWBzxv&2tUT-oz!F(}7%KJdE#FrHM5&zKWUq+vYJz+X% zt!w?A_Jo@H)||I~tyTj)0VIylC-3EY^17LP&gc*DuhsT76`$u1{(qpqAFBUU>+gM- z&5u%l-;es8J>T2k?7&a9P~P#^`FW~ij=#oJTz<};kNphz$!_{P+xPT`|F`My)&HWu z^St$MKO%el2hiUQohHwM{nX!c`1}8w{=Nr3|BL>P%Ny4gR&-cJ48+SA3phW(t;zs0^5tNWnTx5d6T zU5!z{(XWj@t?c!DPhg>B+lRj1s9(oUzZU&n?N^lj9`xY-O#gcm|3UP1_-B;97Nhw( zD8T>me7+m0J@oO{v-u7BxcWZ$vDwo@kDk0ef&2Rk6+pc|boK-ID>U`5@$SEJy)^jO zRF4IRz5B0eRqW~ZK5SYQ`?16uqJElAiv4Vo=V4e69UD_R{*l>#PU`qaZhueyV(8s` zDSsX}nX{*R@gBsUJ~ed?Upsxg3WA{z+w(ZYFMvH==n?%{;X~-v_OmUNH|>XMb-WEJ zr+<6?M)JM7AM5PrchUd4&kxXl=--HEVeK0++H>tsR@lDNzpFX@drHS|u;VH58xXIk zsr}r!+Me6ZzXlqgqVGN8eaglE61-2t-A{l2f$ZtEoV~7ALw#s3R`|sE zduBiUW3bo7yWp$Ye%+VP4sSmx|Ck(}8|>*Go<$$`&Zoql?%`YP>C07XPe&U5E)uWH z*~b@_t$iHpA>&W;$7kU00(;RHw7-kwd*@wzzp%e5_!a#f^_TmAS7To%-g?z}u8n8b ztN6Vi&n#F4ElD(%f{_kL(T-ip|-cg1Jkp1z3wd-n7XiO+=`K6CfwfX~42hxh-BJ>B8|ZsqNK z&Yte!Q}l5Uk1BnD^3us$W$$tFb~Yz(=SAN7_MWUg{UeaK(8ry;Rr(K zYVFy1`Rk3(4)S-;@u>TF$9Mqm{&>V}-nKvAo5g!IuaD1X@s9Ir;C(Oo>-2GjcZs*( zR3675$I0U`?dl3a-ER80^`8@ce2S7&gclvW&bon`Z zH~3X4opJm`;(<;FGp4=#`MKPm_wK)_`}5Au4c{J}@Tw zx__SLMX72}WoyqNcgKaoApUw<^GuNU2Uz3A&FPV}QcPG2t;sjr`~ z`g)~EeO>4gyvMRWgtt}Jsx%P4{tn#f4K38QNQCK6}eA5di%eHe=hd3Nw?D97k?!8hu~jSQT{Jpeei$j zE~36B`a+}s3*zH>{GpjYd{$rA@BMX^Wd2HNF}B}}zFxuI6#SSk_^n*v`j$I9%0I0V zwAS%0)}#2lPpS29&bMySo`8J8r}B4iuCIS|__{lNUE}F1JNdIiUSoX$&w79VgPi?* zJ^LQ{Cx2kyZ>tOB!5@H6;<@Cd9e+^zz~)dXiw-WIt`uB+<@#yU5MY%8baNCz;y>xuNbk_0% zv|sK!af14Jx8WCGKYNz^p~&@%{HV7i_&QSO^RqBLdzkkn#|1B-KPf7G z-Qor9V|h9Jp*`SF+SB-t@x8;}$&;*4;ZN#Q`ns#{q>|qTe`ilpeoK8#@E0W&>5ts6 z5dNe1hup6a`CU=sz}nMF3l?9XuNgkG`g$oSk$i_w)aUP~Pvr1<;=&0Omv0n4PXw)X z51()owyd=L9l?Kfocg8<}netyHs+ot!y@V&lo zqP}N&UtYTUf!_>1-TP4Le0=BlH~#*7XL+mJNB{iw8Lbzy_)Jgd^mT|Y$XmIeDe|@` zc=Xbuugm>E%Cq$JX^zk_gP)DAqQV#MV&+6-4S^lx^@e8?s=J5xS zw_RP$TO`jReL@9w^$(jSj`_}v2iGQZ$=xPR;7=ZL)Z#z*QqrsXZT z64K?gxc7L}iFa>2u4l(1X7g5GKi#YF{+s$fOmS`-xnuTys;<)t@3y|v3hzgn%G)S8 zA@p_`{*|1RwA{xKyo3MoXYt-e{Z#GGG5?{tpKS4b3gvw~7lTv$p7|ngix((=yZASS z=VH)W2cEGWMc&RT{2M&q$oYeR7q$PPyMMp(CqeMS|KQT$M$3`l=g8mXJ?qwRqxA?M zl+yR(k#0K@e1>Vb^F5Nb3(pVo)zlc2fDgKdv|9Nmdh;SqJ<=_v||DMBge=e~4^BKHf zT`Z$_FK=%_eqlY~zIu_p75RlU{P_yo+yCk1)fW_=3++eCtZ#c->5EYdveCYYAHe%P zTf(w5KT89?%=>`(p8V*xM=$QHqrTFXm6wUCFS6?eaSa2wrg$M!N1YvvHrSW6k(4G{K)S=jPya4R`EH0iD`lpzh3;Kyx4e1 zD%?l;z<3wwzBZPS@j-oI+VYU3`5qei{l>wA0p`Ay<^On$_-kRl#0MciNec&U`9EiT zxL{w6NM`7^1`4arN%ep?U|Mgb4KG5Hmv=saZt092+kp8dlNB*5T zcRw9tfh?Ck{19ir+;1C7PavD+@e}zRZc9GbC+gpP3DRs~OZDfgY`=HAj`5ZHkRPTG z<07{nFOGkL#mY3l$NE4#3YSK{YA=XIXuZ>m`oe?!KGgch=1Z`4O}h5F(?jxp`VlfH zoR5~T^`fWspjVYge2Ug1w2#SnVgIoC5+>wl_4gdFq^*VWxQ*qpzubJOWnVC6>Td!4 zZEZc~ds!d*j;Qlm%se2QU0Ww-a^{fCH0Y?A-|CJ7i}8znU{~zdZ#QM zvmTBnm7s+B<;V4~ejNFFJtBQH8P3ID8F2kWdqe3du;+HQK6($gX5zZYk@{%v~d-)`7w|t@BE06S@IWLX+ zGHKM8NxOXXudsGX?Y~Zy5aiI%tIIz-3i*5{V7wMlD6hgFIqey0X|1UBiuEwCeoDrR zJUhVo+`%;HX=#m>zKQh?c@EO<%=Ivz^V6uG$b`#$Nc^9kVUDNN$Mv*6D&IT#-q|^d zsyGM%^$mbK=6_px-id%=TA#!FDlO@7P$B~%e+4~ZI?D0V`rVme5%PESAx&wzf&p8+l)$e;bhZ+~*?l=PLK z{CY3*2PL2JY9No;pF0Gs-j77-h{M;n{uRr&jUX5Aaj?BZHcfjm+SVLyfZ zR;~?s|3;NpX~xeXy^g-dc(027ee(T;qwjUjrKZn*ujQfax3l?*-kOq^n+Gwy&uw9f zQ3d2x`9{xRjQ=$JHoP&=@BiOW7Jy7+OKZ(4Diz)&JXBEd{{j0u%+tz+F`_R z9q6(4CGxM9;Ssc``Q;eWLkPHrr7rV(1?92mzYqjxim$5mabr~KSNj>*Tib_*&hmTe z6QpNzOytLK8|+zVzueX{#Q3pd565^#Eu)g(qvdZ)%UEy*-y8W(d-t2(_(VyMl(+h0 zaz@hK{2uj{Q#C%)U)bY1Hb#3OKJ|VU=iwV;J+xn)*2fe?h=|z9%t-h}G#p`RM?7p{uA9w_Pne+T#WVXTl zlzx{EJNgH!xuNWLdO`wuwZyY&di11-d;L)r6hd;AUGx1B+*&(9=n_}QOi`B}{$f7M^=tl${Qbm-#M9<@q$-}ZNuxje zIiEJ(_(mlcPy11cr!DcV_4vGr@`C608~FwK8{w?@8|nKA&~Nx1*Utv%2Y++%xn-~| z{nyv>=Mkd^EPp|NE&jEB1OBBeQ2dVkEffG~{m9pM@O`*88VCc`{0#i7V(Z6#kNhsr zzqp>{8|)vl{HX`!4>+1H+g;P z?)Z&5Z`?eY<2Sbyzmfek?e!-;esUH3q%h?83HDFrTS}jh_008N9LeZcQDJZpH7Gog z-@In@DP`{ty9NiXJ_P>K@!F8qpTOYAZ*C21egnK?e#@ObgA5QjLVg2$hF>1pCO_ML z_hrGqiQjGY2_3)tjMksXZ?-)AXYeBYW>EA;$8Sb@Ilk^axWTjhe8}<}#MiF-{08x^ zuOoi6$8VnT+QWV)r$1%!8m5CfJ}3H1JYm1E&GrvtJjm~op&r_cgr8%4s6UZDkN-T# zwD22@7vhaK)t@9E^>u8F?4dvPc=}T#fB8u0HT=ZW_cHWm^d}iy^w{W6jQ5J4J^vWQ z@v_sOGVxq7zR-76{LE*82jL%s0mskiL!}h*(R?rb12JVyzUV(aqW{P@ihuMd{RaCJ zIUngz{KlS-bdVm@5G(%C4SnSM5I{DbajC=}2|ri#mB`=yc*eK?FIS%LIglM1drNnE zROD4b+n*56wtb8FvOl3b>)uEC)82wsh^K3Ph2XPpy|g4_s0%;p7nJYU`U}A?>U`qk z+F&901y>&DDSeNyJkL|Uhy3)!zAYp*J*~*^KVb9W@0H?w5KS9;k06DLOy&!LoqJ4?y5%Pn+i1@~`|5fp7$FP4da-^L6 zOefo8(#P?V_D;F>FkTt^6ZA90$Cmx2#3Kg1z_*Kk4Er1SyNhqk@lH#}IR0inu>No$ z%K3%9&GAlqdTc(&J1y-aJ#xO!_S4fn6d&e%Ars#i=N-7;px&z_{cklJk5P5LhdMa_ zxKAPbhf{ieG?TZ_aDfqDnBT(M1tlwK-@*C@{g>2!;fKaPq5506)28hem$;rx{M>={ z3m35ZlsyJ`L44c`VtZi|Dm{z>>Zk27AqU9Qm$_aLuh-fuB+YoRv{!r==V3}7Tlsp4 z<*EN`dxfOO;V*;vwewTRozK&MhWJZ@eNuh`Y1&hO*DWp>O%L_?ikC+DHbsw-uh1-> z+fw@YS0O*YJb|?fe=^D=uCFhvcxeYrx|oX>d22$}i^PjX`OTA1XKK2>_pv{?HE}6M zeUcA)qr&JY+n4qA%_~e-NWY2~{3_&YB@=%x>>3@-%HMGpj}GmHw<;A`k365{`t6(; zrT^Ou*9+Eb_~n`Hakj_vSgxmn()VrryFz2U$UEM6MTr^@Iltz3Bx*d)Xnh*-a$Wx* zufk+zf@cL{PoX?aCnUb*0q!@@KJ@>YppJa&4>vPIc|1XT4Du=eSH1ROzY}?U$=Wk^ zp$Ff?e{YmWi_$*EyCWGLRq|QYUrr|WV}@M(Kjd3^&G|`Y9%R0W-wb+nygK;%U_7Jr zqVz|`SL8F|+rG?rc#i%z@x57pp#PHa19RTB+jxFd^ozV!{z{1Vd2t5R8Tr+*0s0}Y zg?{uue;>@uzw@6|^FPD+f1B@ zA243Fwy#?Lp!wC7@Tob2}=W8B5vA#BkFxrMc{Vw=jZ>8e+(HPUC?4Q^--?@VO zH=~*#>Gjh;UdiyIuLB=n(Cdf%=xaLOKi^M4dx&2Av*-KkBypX!IWWQDtX-g#NZ97oGi=dCfmR5I?HiBR~2G=r{amC;IP#AB`G$tmV-z{OD23PcT2b>Q7Di z5!QExA63-(8Tr*`6+fc9Q2c1L2|s!?$B$s|%JHMS)1RvY)X0AiX5_pL ze?mO)9rUMN_!arDug_sT$*=m+Rk5dlz7Fss#jjNT)Sq_eSC@9+SD@F!yTlg~{R#Ao z{^aO?6YT>dGM>=q?wMcRclw22?LxosE6|Ve%Ii-p$%N8xkS*&~kGI5wYpy?yS$-q) zaq1M|XY@7f=T7ZIdez!P^7hm`ztZlKGbNNU2@wi^w zJ6dsGu#b3B`8bc=KzQJv)9X>*Z&Loi`g`Q}bXb2>dAw$><{guO~$Jl%%XnzvHxjJ{5NKIv5!C! z;%Dq56Y6e~9v{$KQ}z+qcYt5WH`QOBhpKc<`p@%Cw3oSG2>kRX6BC_^8o?9N7erq0 zZ&xd_-;fS^_K_K6`RAXK_Rc>84hVnm3q7qh{HK53DQUOgF!b(t-YMn1^Um8`K*m1u zd%&}orhHfQK;O{*DK}YMmygn=_AQh*_P26c-N&@N=Zf)yeQT1{Epa}OMt&_uTH<{O zzhBn(i;eukef2NMeRn0F)8*wuC~xigI=*^U%VXLHZgN3udhnjM(?7m?82&#?flN2~ zEzd_@nsob}cd*}CuT~>u$^QMDS0MkYlN=wR@0+i}ehPXLM}L&4cmeMIv5NQT-#;e5 zGW6_pKYz^VtLaL9{Aw}2miE6b<0a$i?q{#8a6H}pY>ZzW<74IjirhzD*-`#iWxrCh z_7in~Sm>d?lrBoZ04MLORjzk;o>8r4?ITMME*g5l|1$mMd?(fYlCSMUne_ntbZmfr z*}s_i2mN5Zh<70P;{0aif3?Qp6@Ep$CqG8|v0lSua&pPEkNyh%Mjt?bJ2pW7uW9;` z&ddMnYYp*EvAy2iK2mQ*gIwS5q5ZXLCVputU0k-`i+yA<;CRbPc= zk4s`d7XAo-TkyLj%kMCrI8UuA`44^m>c`ODC4G0ZBKw;r{BX(gL+CH1TbI}$G!{eu zQT7$Zzd*m@Uy7f2{%d)Dr_N_lg(~05@%H(hr0;>>NqLXoy-5Ih{I2AsoAJ9ki|g`X zQXS{{gyl!+CV6J*_UqNIU+vxCeh*T+H$}wVr+cw(9Yd&6hBn&uzK=)p|ob zBgfys|DyH9#R&8${x(K@RyiJv!jG>g{9=+E#k(7y}+GW>nf+It(~%Ru3F{0w-S z6aJw5$#%E5fS;ng<0n`j;o7p}XGoXQ%MkFsJ@~TYhhl$Op16$p0aG;lnPtb%Xb+xJ zc|6}0d$51syg9#`Lsg!BruxJ88x_56l23gN{Ez#eEx{{3x;y@5#%D);EziGR_wc~; zGuaSm{zU$z=u!IG=D}KqUzBfD=c#X7|Bu!ccOH%YAm8yXjQ8e2@SEC};y1qwe$rB_ zv3_Nb1V3r1Et0;PtfwpRM_bbTPTPmu7i;7{dVhiZWv$=6s`R@XwI#*>w0*d(x)`hn zfviui*Ucs2H_NoofSb?|#nU%4B8CGCs8RjbBcdmZ4H+e};kkwvF(vHywUzpg(^4`PND zKNtVp>VBr3zUb-S!f$Iieueo$*LKsln(?cjDE%3J1^VxTU%B}6ir+5n$iHg1{_Xe| z;#bZRZnA!{UZ5|{ay*>9Wzof>6#j(uZN3+MY+3P}u9CJ7FHVp*0ab=SEoSX4$5fu- zPdAQ{9u$rt55b?hA&))#3eSh${7=sQ5^mr)`31dx#XfRW@Z#(vINtds<^ykX|8~41 zxXQG)hxqru(4TN)tPuP&*T3=)QSS?11;5Ali1(t-+qFD}f2Y__ z^n1}E)=NRw3-5zS`K-MoOfQN3#Jn$ENN3b}5A7ppzmU$2??+di|A^<0f%`Iz{xen2 ze+K@Mvg zN?yACfr`HXs`UA*q-(Ip{5j++*1Ov8gJdmVX}k3I2a+C7+sLmSy|DU#Ui*INZ?D?( z4k_>L59(YnW`FRNM)|7fG4gfV$yeyxke{P5zP9Iet+RRgI!yU1`va_p&4XC|wJjxI zzeo8xFYgJd@2@aDMf&DteZ30#Y2u&W5PM44K0n{b_NY&yza6h2e&!d1pSLg_-k6$F z`uBfU=dW$mdEQr%{U637+Enq6rrQon`KZNRye z?T0{r9rRjzg^Hi%%b#bw`VoIu>=mQdUZLclw1@F)NhSlauhPDQ_Pf(*@u!= zjNjZg{08~J=NRRK_|qZH_f$k4bd{vOQVM;=v?ubk=H#u|H{yvJzK`)w**6x%z9IZh z**6vx|AM}b`eEOQmApkfRk3f3sBbB6v461iIDfbWp^x@n+Be>Vzp#hIK+5X4 z#A}uNd6MRR5%RC^qM8;G8;Cum2LBiJ!+2r+qW#td{9#qShs^I)dVIs2->UH{tP1`u zKl_H`XY#$r&ocW3>`z2Mdiw=SAJ1>ekDlAI_66{>OXOE_pN0IQbw1C}7GmT(eg-rd zekS{csVUa)_6t+fq)*~0)1QR=YLoon70u74rn3AD@h87Pe)g*7XVcS)pZ$a3XH&e- zBKY+9*=*aFG(S`CAq(DtkCvACU=r<%K7#c?`$i!1f$@htF?gNJ?HA57jrw8Vas359 z2$T5;3lw-a_gkuRzh#p4Ak>fd;OBGvZa%+X@Z}Bp9q+f~`CU_bQ2&SG9~>`j4>040 z{>gn8$FDIzh99DQGyb=Q{tMnQetCN*`Qbj~=K0}Iv_FPln*LeyGlKHNOM@lk?o8 zK}`D1{^C1FNiY5oW4&U3aUgsD81%OZe;5~gMlcVRdvg!@vH$)yG6X34h<{W7^+jqB_d^F$RCpe{c0MDIbmJ^s(_q zeeBKyAW-vjvtFCxOYyIaJ_i2Po8w<{U&isTsXh7Es@Fd4v%GKY_?OZrgnx2;($Q)K z)b4DbooZ_DaQ&Ho(9VapcQ7sdUGy`|kKtFq6VGdiSK&Vf?>YVLP2`*L1N}Mu?Z-$z z=*#e9tS`|=KLEeFdwq`X=T4u?+^+yV*uNIZzgM3HzCaK85y#uzx7kHM+m#y7>{QEZGM-bMb?_ctJL2%o%cXYp4AT=sp(N*r>4*o z3&*GX#Skg{dhzeQ!?bVojgY_dzRf!apkH|YoWKL}`;XfEgUCNG_f^HeQ{@kK*!%}@ zUNgKuXszRpqv#_KL>r86W#a#hq5u6y`jI~TSHDSmTM$p_p}_Y43f5Oa>=C+up#OrR zzYNg4a|ZoCc<`Svd@a_VF?ggT^?if&wIbe3Ax7GK-;x}5_8r07xT^2J`n<9SG5!=>*ry!-%O`QSpRvQAEvzzb3TOM$@h=SeZO&)-wOS3n)Dqjf?ml# z_8`k&uY2U+Kzhd8ei|K0h z6A+P(9u;5iNZXg#ei%X@`~(0l_CcYiBlO2(e|iYDu|o7x@-00w-{9|~pE#@All)@Q z|2|Bnx3NP|_Cxi(s~__jB}X5OkT3f;(2ICf4-!fe-Cr|{QE_PfrXOYnGMhWkB(?=XqS zML+l}=qsQP`ocK(PuqW`*IQbfK~3g<4EW`^?_WmwfdFXS-z)hMrHkUfdj2r_kNFSN zCo}$L@J|qbw)2Ov9x*-{|1hKn)+-fkPSt%hME;7BIl;pPt)CarU*BFDC9{(M81wOc zw7x6`i*1wE{zRckuRreQ7w@y?=L7oi!Z18ZNE^4@*C7q~z* zJuS%-%AUjh6#5q>Ps@CXe*w~rXSC&&xAbd&bK_s$^nM=keQV-Lu4lP#NB#fS#7b<^ z)E8fSLf>am_J@wwE}Q!+Vn5hCiP?B=OW8wU-wkg)@r1QM;QQ#yir&lG-mrP{qT5fr z1AA^^VuIr3lQrY~|l)cwF$;jezt*;A+=cTG&#{R8U9{k;j^-xGgt^1H$lGCuZx zOhL8p`=8%L{bqc_WMXa@DdFd&H@zt5SyPJNL%&4-MPF9uwH+HzH{4%~S)HCQ)~DzL z{=NE+`t^yv>ecsa{(Ul8T(&;?LqEal?fk3zWKR>1vcJyXCwl^n!|AJe{E7Y1toQdY zo@-C3`nyW9zTiKA3Dw_=J#oVM54^$q8&8S9=2N6e-6wlW*$Z*rBl_y$K=RD~`4$;j z9ff1mulLW*)~k2_HIFyFzH@l9_QO_%w;$y2_PMP6@3F+3&+NR60Kjp%=O~@k0vHa-(|`p z;GujC^ZP4$eY3q6VShlrp%3>T1h1kmVZDXPZ?6B_@)vx6uj^m-YySF|`vAH1|8Q>oKTLW+ za%|VXmLGTR?{{19f-2ru_HS9gJnz%@zt#G`W9&y--r#%><7Mqf$5vbPd8A(dtM>j< z#lxe-$3s(QzM|x^@Kfhcq4BhJ39ja=+9p9+FO!N70<=$1IGoQL!4jeZ;0pK35qiD+@1ZC@!UsT{7GUZ7d(@6((3zl zhJ*L(&&P)!WI$9^KlcleXIuQ1{rPLgZ|C`S**JY# z$^R1adHzlOYy_u+o4NFFBE5`!oWJDbp|@m|MCVDQrPOa7U5S3e+>9F+L>(m%=XP~a!MXuo`|aL(3` z{+F*65BllrYe$s4r2O>KCs^p)v=_8UplS|_O z6+hI6^^N)5XWNJT!1x}r{rO(2e6LO**gpN)`E4Cr!gLw3CS_CJ96KgP6-zpRH7ecAFIZvDN} z!g$_j?(#yg^*7)TjNjkcXZwfmudh9FLdcW#hV`7b$^0J@{=$695By|(VSfKzi(6kf zAG!YT@LmyD6!ZI8{vn6A{s)jgDKz5%tw0^ z{JLFlhp@i>AKKnDMzZWW6MGdA85y}pMD9yfMr1}-MlMxZ-CdMOO6uC!Y*Lgui3Y4? zJR(~qiqqO_Ue*+%qir#(Bn?{jfJu|%8O}eUAqWkQA@HvO+e(Y&R=Z8pgg7vW`Nc^T zh;l=aYvgTUNlt&?ckcG0suyYrpqHC>JNr5J-t+G5sypZFjG#Z{8}erMVy{;JO4aU< zTxj7<3tX*yFjWifUoNApXvg6F+?j0a%T=*M|H6LV#+{Y3*XzaT&Ld})OI(R%9s9_FiQK7U_eJ71q$PsW3NF?Ld(0Dn7Q zX`8_TJh+b!`dZEY3L%oKujk9PVU8c*TU-hD5A^W-(fb*&_uy~2i0|SeX2Q?#MSIm( zNiXml-|G*j^aZ@@YrZ}BfA?T5p*P#Z9)SOXNA?{`%AepReb?7p`UCM{|JG8(2k}QA zuTFBhr5n3Tovy_i1mzuEXEVuK!=k2SgbFv;6!Ahk^U)QG z2iv#0>!ioC@{ef0lP@fADAA1dALjcLt{(E#dX4X?9iqim@N5tBualq{AO9d;M*kA~ ziU+UPvliZmfdt@pP5K9Vmr9kZ_j$A7*aU)Kf(9pUoPV=K>R2_w7+?!Y4HU5 zWB#4nOM-tv@V|g~SK-ywAa6akJ`Cj=&g1b1bOyuFzt)>agF}=Lb)HImIiK()yv;K9 z+xSBhz}L!$)-?mm(7#q*T8Z#bzOw0{-;h79XAjjM@`(MmW^ZW~%Nu+D?7?S|-?m`) zpL+es7YFXIB7N}z3gctUPy8OyL$N*NgYRj)Bw&v@eu?9Wej0BN<1bcf&AAXNX+bE!Q$!}THRqx|8#75cGY`hoGVp8&kx+Jz{%@6y@Q|1bYnm`oZP#Jh~U; zk>x}l&qaCsoa`;^4d3IyPw(|CC-(MP$lFr1x0LtylFzpwpO4Ao!k|3PNuN2N;=zSE z@>4&PN7d_ZlE*pOL&?Vz<#A&`9v7rw;`tNhF_9ncf8Dn6&E8V}HsBr)0nSy(y!`1> zu;-A!R&!$l3XUJ_rQ~sr0&Mmb@5{fpeZ2C6*+(ajbsFeI9pY^{QaOkJX^4b_1;RfcTbeR4n)O`FZo*< zu!jqLz%#LjiTyMAJ6Dvymh5AcKeJD|G|S|#CHV;U5HiE@8Go2PjPb=21=I=O)ZPc==1@`N{H^*h7=QXb)lU;7{Mr9)5`)G?Bk!1q5FH zeh~jG`2%Swe~5?apTCj%XQZlqV=1oZPq^PwPvegY{0DYFU3`oEwszi_j_W0?Ctg_v zu=us{&rRGn);r7g&q`k*Kj;tWT|A8V17&n)8T%8cUwoy--nM^={bbQo=|}lpP=0EFr^NNcmr=)hte^NktH{fLL30-IK645G ztNl&%@AOw&C}ykNAK`oHcppjiZojeh)1^CHH#qCeq%eGTrYSS0tUn9sS{tC7oAAAL5^{u5v2DdmroLS8R7p``PfH zwca#4z}{s1UZS%7CQb7pU_pM;8sejGjGC?1dZB{$ORoJP?+356@|hW1|3kk{rq0Ci z4t0LqLcC-9Z>WcTUU>^M;dkrNBdykSA>6bD(PQpDb1H{M7r{&%6!!ar-f?e12+R{zeO}BmLGI98YD^uiqF7;{pG5tOvOs zDc8W&Z^8yZsR0GZn_ic-U`WBzzg=0rq7b^26~xB8v60FTD&%y7JpjfeeRe6EiDL+yV+e_Hw3 zbF3G>8V}EZz834j-=;L~4DsCuzn8Hgj33JU(8qU&yHn3@9@?BNIR~_ z0AIb|9B2NH=Lg2)3pE^2@m0M)J(m4iq!;PI`P;1j);{pXeTw{feDnEv)E|2JSiijt z%X)ZalI;Oci~8o}0rYO==O)`4;2QC%t>^2@EU&P=_}iYKfjGzVH&%E2yoB#uGw|~b_}>HEPwDv&ek}IZwVyfX z_DdIg?K$eR^FI~f7v&G~g7&IkFP#xS^?XkIf#N6mpUK z>v3LY4uJeT0iW?6jyyW$>uvITwLsr`e{MYcbvGXNQ?UPfUih>9o0P}-vFtb8_|QMp zpELW1deOJjVR@DGdsE}b`9TlpC-=(^y*yD~EW)_vVKejzcZHo<4DhXer^q0HmFCw zo9I6`O!+Z=SCXI^_vV?nK@hudi0@3enfpEG@9d)kxL zmLUN7V7cE|4fY1*b;Ogbmp{;Wo0}$ZoS);*oHYTrax1S-ir&;`)UW3=3xsDz@J_*A zZH}_MN_&2v^|O4z3*WO?|Mh%pg7tNl&3;t{zmq@kvljWu^QnYhlK;&W!yoet{>>@E zzsd0^FZ8GXAf-S2+kfonkNWlg<|gqMJlxO8H!ER0^@qRseA*xW;vc#Gh=&1RRqcbm zoQv`y`5KA#;N&9pJMQO+p6AY*fC663zn-5{{BthQZ(~&YPx^_zTgxNBPx|}dsMgAB zlPpL5->QgSfghU_>|Yao1#dml)AXeX|8Rs~^sTuALQmh?N*GV{f&BkNM<4j(_5N^; z^c?1VqUT0s*u$sx(2t*U^aDQiKJ??|l)li9Uvl+m5Bkk5{qhIx{J`Z0u1!Ai{*g-zh`8VU zZ|ywf5kOJ-9p(?V7Q_BC=!f-L3uQa+KpFXi%fO_^a0){ zz^^(!sbu?@@J9?#cIWL1Bg+hghY$$6aSTUp_H zOyj$J!mo2IhhMkH{w|-diS_=$at4HL16KKi?EdJA_KV$k982R_d5QneHJQP~o}jn(&=2GfF4VtE zfkFP@JCElNzJLCoS!3n@L4HepsONv`;DP^Ge8sdQYvXUIU+fK8{u!;P>TS0o<_AjH zZ9nEF^5^;%&&B+}@>~U7b)E-#?euXU1Y|+^bj%OzWo6duJwwo^-W%5E%4(1Okb7gW z9~;NE-+}Y7I)YF7Gu2~#fbX>g@U5qB$sS?6VU0J3`?#KvFL>`&jJKDJ*L!R{xl83M zKCwU2;XdN}lYYHQ#`(lgoFCtN6`!NtaP`VB#C(3ghV;oxWdpZKVOPfa;=Nb5hQjwbD%Xax zpK|rUzuudg;)KE%`*ZbPbtII<|7P>5uZMhe@~J5zsQo<1PpP+Q40raglh4gDo>D#f zcW~a$s#ublk9CP zZ=afmT!Vc?yxQ9+|Ld=9UkUMFZ*=xwf9-3}TKNe3Yt_>j-yq)a)lr|c&)3`qR~Ya9 z)S30(P@DbrQ9JNy=fhQ-4@#r*;w<6y`vvR0DYW0dqId%M)brUb!te20&qq$#zDlJ- z|MlMZ8ru)Ce4p^ljVAC^TD=97J^ZN8mrhN9uDSVlHmq#p0X}^{?cr(lhCmP3pX2AF zr%8NMTF)0xxqe*?@Js=ouRS}(vhrgmwn#4ze;e`G2+Dr^_1^LZ;dSw0WxaO+<*z-v z;PAoz%qip57+XCmq&-^&)8|X=SAUu)>$j^Gd zDtaisM*CLpe7#7&7Ro98I;W;kM!#0CS_6CEHIa{iGUBZvYY%#We#qA45AID$sogdc&b+WAm5p*O}` z7Jak{t?@62eit15kZ)97_wWJ!;k+t(=}+J%)(>;5EGWKWKH2mZ@pb&IwR*#t-|2(; zk2MwVWrxzY^}H+n5WJ|b=Oak?bNxY|dcLE0-^&Z~8>@r-qsNN;n-f124`M%v{3X7( zn#eZ*yc>7UDL*ph|BmXxAMt-1i79b?g7u`WkAgf=9=`T$!Vk%Z;|I>8I`t0vi=V=` z-gF+7`c zd?J6Als}x(m-a;bvG4J;UmEqn@2>+t@qedAdie2x-@-1+Mi0|hu9w75(X-JsdxbwD zUzzeq`{3zEd1AfB6TL@mzt-qY`CW?gTb8_-JitFdUZ8)&f!}~H%9GdUZi)UV@_Wkh z6MsT`&~r5MYZd%ncKKr9Kl~r$u@UR1YNR*$BY1%y=}UY)J&+H)oU|7_Y#-#mcR}_i z(O-AIWAq))OHTd{2_N{qFf}-y(bw>!e4WSmp8nLwlt0jqVGA%cKID7c(HDK3eMsdQ z_6zjfz9M}={cwKP(L?aS9(Htpho>j`g9z5mUxvI5M|lH3$&Z9zq<1Oevr2hbxDfi& zJ`E-GCH#w&xLBPqX0&$Dqn@_Sh0Nxvn3LmCf5 zC_j(*rSb~+C%IoE{egTCeyv?(56XbIH4?^0`~vugW10E&D?_mi{CejUPwIRT_p@NU zmh3sl`#$>j78EbKdg+7g7waGD{VCgzR+;-l-MBw~vx5GXe|b*vCi8!j{or@_J%;Tc zXn(lN_;XduBb9IJdjNe8WA_Y8;>SE2mmJ+I|l5 zXBW>0{|NY6z2&8JzIA->*2ehToDbu#=R2q5XNZsT3#UBKQa$=Zej5C~M)UxG5q|=| z7!M#G0Y1^6QXVP)UO$oV0C;12;8(~eqdWzD`2HEdvwcc^*Zi9TeNm16$=fH6M+QfHVE;TmXit5jfA{vPop;Y|q3rd280U+u*H8X< z=alsAl78qw4<1vgsRTv-qCVoCX1HP*%JnOx!b@q4kS3DK?b3*)9 zQNN8lIDkLw5%a%O{93)8R)IggU6dpLv7dU{!u%%B#CLm*?GH|w2Z{VqUMXLaSH&|I&a%Du`2_iV zOdfg{7T8|$g7(At`6#a_W4`f}|Ik03$4I`Ne5L$t=UX~&_VV9=|DPay(m&#}2Kb_U zV|;z@XZDiu+e85$_~WzkCqZ62kne5WDdFX(Yw;z^PtYg$kC6bsqX*%+)x`Zvq8I7A z?ftj(U+}v8BfvKt`>)EMw$)$p1m$}r_!l>Rh~H6$d@luiit=zi;nxfDm+gFYLGhY{ zKiU)B4^;!bz#m61^dICO{N+%DkK=DT{v9G7jw+G_+9lss| zeDY_LJg+hSC>~wndRX=f_7>k4>ibe}-*JD~PJjpUf&0leise?jSYFcin4bT@Z#TrR z9KSa+=Z{)v4kB;nZEVty4W7+60`-*s@w-Vz6&|$)c4|~);we{CEt)Gw|acbkEOn=r}MteUV%NfS=^P!x#PR+hp|MlLawWo$bt?nD9r=g2f3lttf8j^?drPw4+JBM# zT~R#a>@oW5ISV@ve!%v-ve&X_Dz`9R^bgRldF_95evFUvVEG$Q5BgiyYZF=hXPWHq z@PWU`P~N`c_bXuUT>NeLBR{6fd=Rf+*pHF@bmL=xWnT8)mx(|9fx{2{TX6#H=$UV6 zKgIk1cD_`#_|M?S`g~sNQ%6sH4TF@XAZ7|NvAM*O}F@`Ll%MyPlD1Ht~u9wQ$!=@0**_`%T^{jr|$_0~U$ zpSd2JoEoUN^(^WAeH?Av!Fg`%Pk%JiCVx~31^!nU3#y@Vx{!NL_pje~R-mm397x^R9biCDb06GR`VIeA=H? zKCg#w@cxg*Ua3NeWrT4)cJEbu{(HlXr}HX&u3R{Ov-iw(J_L9>`S^_dDd}bRdnn(? z(HHsC**Hn3^#JHq&nZU87O!2+}bC(?d`@Am$`6!`1>|bwO=c|)WUX&mF znuDjyd`}#Y`SQbyjL+&J-&6IN&%=-X82GnY=|A&9-ekOn^F`ku@f`9w%Rul@^uc-B zMsIGO@~rtqk0c%hJ=*z{#mgM;ts{=VMA7&5i}}9Xe^CA_^6g9f9s%}G`k{Dy2^*ej zAblzI5zYOEtA~D|e?9RJCD{8F=Ie;QfDiBw%#YBAMy)-Fm!DCcOLnr$lnJ! zpY`zq=Tm-++rNT8z&n%ad@kKe@@DxDq7Sixezo%DlFw3BJlSP_U}A>knaO~KPP_49#g)O`)1zYeJaU*ALv`pWiI@E zIiMf#`HaH{=flW1jP#Q{PDXjd_as=4u7vhleX;_Z#8Qe;WvrJ`dMW zHhZbE#-EG)?~ax39*jl(?yjT#*(fh-4a{G!Fuzpt^yU=WSK@slI6sFz!|u9z&>Q(^ zar~D_pW&##H}|LyN&eEl%4R^kel(^+eEER!4N5>6(c>cqFq5r%&aP^10)k{%7 zXg}s<4@};ve|Eo#*Eh(U$q(flvm+y)){0;Og%U<&I~EL&B=QIQfc@Hx z`L9ksP>=jIFMlty{dly$DqH%M=y8+uoS5YPiRcCRQMPN&iboVBwGWlOMB|P%VB_-kNsbfb22(-*o#IXGDMA{~(88^^k{hlm6br zx1N_vX&K)a4d&aK10{XIpTT^)zioWhxpU@}@t5w`yZ?Cnh4|@I`LDb$5A&Ds>=o?? z1W537ZjTi2@4iz$Rer5&k9a9VkL=cqIRAq@^7}o}pZ$@q)OoE`VZG*OJo2Bzp6?yU z{H51MV!Xus(buvP^;_}^{$jr>8$nt5M=T>hiu!u%{FC#UI=xDq5BMy;V(!|c0n zVc(lzJiy;LMN#jUg8qxIm~`r+UfBD4uj2MbAD_Km6MmGJTQ50!=4Ih8e!xD#A67!X z720=t_3;wgD}M?5KmLB58ox(D{D${Al<@2IfAD_QPF~je;IQJM{WFWbx;{r%{0R7Y z|9;>f>C;=RaXx?l4*E|p08l&(df+{Q5>2PZW4TwUwnF_;1?_bo;E0nSoL5zKUfwnN z!~IYd+Hc*j4}9yr`N|>sE1wu;{~p6o^^00hp#3!MiQ0dg{$!Tm#`v<=XaxHXco0vE zKcWZ91^%!e@CzQdKikPGf_Gl<;(n!kUirB3eTpH~>ppwPC-_k({}=hb0LrkR71?{~ z_cgsIdsP5oz4Z?C{dWZ|{&mRmnNDvA2GG-!@pwh~xJJ)?j6XU`1Z6)(Uu7y}WqY3h z?I*+!x1UZ3VDYNzhoAtUKk>(Wx=#-L@%u%c zd|3Kw@(^zVMW0yz z?@T}Hy;`R0QpqpS8}Y|5=;Q(Vna_w{qfY)x`E1lL%!l;>6b$PUw>}^} zIKAZ0{Naq^P5HxXkheuMFfP8pdoCm7f0gn{di9zbPxrH7{CYka$AdgWJ}h5F`8a|DS~abW#5AOb*CrLQj(?%hwUS#D6~G z|N0By&+K%8KTh8x|LalSAJcd8JJEO1voRp=qlv!nVZNrlwY&Uzsn-i)KBWCxjQo5(;E-ge$6`KCN3-!H*l6zHe^b>|-l?;i1U_8#~d|Ll9Ss4tP;kRRmNC-O{q68zuV zN7>7(;RpB^mtGFk^kT6O*wfD@Fn-FUX%P=r8G^^{VK5P5MP?$NsO~-&~CUiv0Wb zX91r}7xeK3&PPwtU-66NGtmdbKgzqwr|y$9`DA=Co7h9jXT$EZWITrcp5ITDcheu+ zKNLP3FZo^$^uv2xdhZSP!RZgK_anR^o~lH7clJ8QQydTb)%-bpk$)KFANz-(r>&nk zKlbO|Z@v7tU;j>MDdgkd&Iefk$^d-e_3s20#NHm;`d9Mm;#sbLDL;Sn^{=rzS^si8 zi|?^N$@Q<|ao(2={)hE)86OKRizUyD< z59tYcd3^m_!@~`De^Bxj*T2=U{;lgi-E{r?B?eT^-(Wq83(Vbm^<;kp_ql3464$?t zf%WfvmGdR*Uwz-5u7A0H^YJ3qzoRXbRey2>|5Ud7Zio-<3-TFAAFYRBKm7Vv@7vM8 z^`_Nd@8eOwd$W~8w2$jyThC}cEPrV0)!DGV8N#>1_;Eh1kB6v^LBDX`qV==p)A-5v zK(H^!FV%T^Snu|xOC+C%2lCkr{6+i1`kMIRe2neqW4wS5pg2F{g%7YE&MW%f$JUSg zwMIUK3%7y)0^}9nyYqV}jAZLQ%-`va>-mc(u8#pvBOe(hDNeQDaD@GhO60HWPk1M| zo<@7@Hx<^)pw|fZC;a*v-vdT@;Ccb^5*=t*@Ak%Phn&ydpVPs9WLQt5J>siTt=HWC zM+fU;$ph^t<`4dc_urz-cs(*e$IaegeTVUJUKZmo$)CkT zk}uTL|A+Q2evkH>{&a-wi1Ov)YuSI3XZeRX-V72@oIE36pb+1IAF%i1aXq8>s<1w0 zJg@lG-@lQMy7O4#vx@O-J>vZt#+!`sx8lEeo+AG>rg%QW*TeuJ^+H zqF)lfBEOpcKhlTrj|{|z1^nTE6MxS0ShxQ3@D%Am_!kH0F_+*^f1covc*w8+lJOFH z5WeLCJ+MB|1qZS>#4p_+f&Sq=g!vSI;v3g^@# z{KfAAJqznI+F$Hn1bG!bll?HGXM(Tz{e#dG`jp_0{pJF{-x0qH^c$34$kTv)Civs~ z4an2%fIJQ8e{y~deJ#j0_)C69eG|P3_!ZW_;D14%C6D8deq0al71zU}?}*d)FZlJZ z9k9`#{RR9P?DJu={_S9YlKj;EEaDgVlgHM--&VwH_WW^sovwcwuTMIAjrAPp|G2%L z()xAC`48ClNs|X#UxGfP@3sDYe0|oy2hXs7Zof9#e;d!sgS|f@eM;`DkiHiDfnOg) z_`JRnAKI5>y;;!LFUTKKABy(7sIQOn)7wJ_?;R|M{QfZX0r?qD-op6FeiY$%$E{&K zvf%8Yhu7p+_{+a7I{l^pmOScvG+TdB9w!R=3w>A!`~f^gd8R&(Ee85Kd!=}o@}~WU z*#)pC@wc|$to=dr&&hi2aec>rQnVLO(1#FzJZZgK&<8{kP2zK$r(=9OpCc;=HHe2 zkUoFj3x1Z6Z>9wTgJhLUnamT*pf}Eo(c#doXJF6zsQx*w?+~AAeTH_~aXjDcm2@6# z`;EMRv!ZlBDCA1I_bX9VVvJmAAGsg$Lz@G(fZ{+=F77R>6xsDOWbXIxAWj; zKCJJ(b-oM!;(JKl|D^d*hCLn*=dHZoVqiaJ5$9vX->(N3Ur{uQw`%Z5tQ*AroV{fK3J&hn9C>%XS;iUP({zBlx( zRjz+0!udJogZ&^qY&}o?&4)=ITMxsZ0zV|ckzUx(Ree?8vul0w_7T<}Rofra`ePsc z$8{d;_E+(K5%MRn-mTgC4D%hU%?2T3rF}~I}ke3Gb2U;xa`$O`3qQv#E=Qr$` zz861r`%Rs^s`=b~7L{Oc+^-B`acU}Kf!g-+LpGn=fCiu1f8BX;7 zV$t3LADq`o{{4Ox{Uz6D(SDB<^c&x6$R5bvs{fq&`|~;UPtGG~e%T`y*H4iizlHwEd8PW#2_MTZV!ow)FYECGJ!ay1?k?#O{h|7s|2KU1pFj`8XF>9y z^}#}<2jN*R#Cym$i~JWo?7o*2p80k(F+Qh#ap}B_x5&Rci9HrPX5Z}mM*Ocu`J?}eIy_P;j zd#(Pdy{7!6@+FRw9PEh_-_-+Lfl)%tJBomcSvRyK(Fn36v9 zwf=~YXE-VP6%UsK3aL%^*&jl_<5;Tio!j+zK0$iA{L2ZR!cac)@+9*Wbw3`?^E&yE-ec5w$Ol6{ zYPE%W`TP4vXm96D6-VzzK2zm_!OlbA5AWc35AnW_X9xL%^QY1w+cTd<^Uv#kTgC5M zkI(5oIOS_`y_jQphW0v-f<5#3pL(BL=TXJ;UYvi;Fh24Asc=6X*B9Zwli&9FDg)3^#^_6U&TMk1Nt|5 z<*^oq^7(+6Pw!0*ksmWe`4W93 zuTwE!594va)btPXZTras`;8+p9>w^GKa_9o{b$Ut`J(uT`~7)Er`H$kpU(Nn7&t0Jj3{~_&pT(t9)pkmr6gD zlz%LGVLZrFq!;Qj9xiOcPvbGZ({+^=4VK4v0(dl+wS zfS*$_zt8X=kN7iQPS$&px1qA^sr)JBX(5p((i7=LUjA&nWc^2ajz#%GK3Au=81r+* zpYeqvye5CLm&X6a0eaSp_$T`XC)AIb$Zw2~_-&A$1%8sAF+L}M68B)l-;Ljt&#@S9Oa2Gtb0P9y@`-e!K+iqkvpAT4g%9{CKTs>}mlxlI0saX+2l3bW zYs?omekJ%5-jTxo3)YVb{v59^dPe*w-UEN~KRMrmK6!mH{%U=coF`MB)BI!bvp1{_ z9q->B*Y6R>Z=P@MGaeddyr}i9?BAHapE`XI&bK1Ie{omwOPb$_?-6vqHB5hJ=Ue(d zAzkkl&$mWnex})Lg{yJDzv=8X_uC;qslAqd`+Q)iiS%Jc-@E(o4IrO`_B!t8K%TsO zTfPwW)8_+!LHpgX*N%VgyeQ?L+3UnUQU8nQ<^FtK`EP=6)Y)r)eqi>>^ONW2rVp6k z81pmDOc_#h6zY6dr_!GV&{+@sGpXQ&F{7|+(TUg&BAG2WJ2K6DtBjJ2&7!O9! zUvoV~_`E)xdj3qN_MiGg^YU)_oE_Zvi=LL>W&1k=^d3*-9rV6~;~sC%%$`U737$!Z z5Ba^P^C1Bs`=<4IfHc7Hbg5?Pu8g?qU4L@<$8# zwb)Nkf34^5D_)52PrO6;lKnVazuS8c9RKfO{r>*RGm9rb8m=K3-4 ztB>6|tT(k@fPKaLvJ zFl{n`-;2FzmGxdc_5Tj8H-S9*d^f!B(bV^!wqC&dR>}DR>=WKkX|lcIN6Kq|Y&yKJ z0(kL#^Elt1w|I{2N2cxl8)ymOE9B$rd+?#CFWoZgYgA9`zjh{T_7_ew@FSe>^%oY% zKj9C5(d>=tsao3~*u#9du7Uh;`pxq(t`Bd08vMlk_ z57D3M`+W4r_uRZt;85RVBfkLts;)0YWzWule`8U;Ait1@McPy8H}GlaqgBO^{JtCZ z3G%!I`W=d2kQa>41b7?&WVHnS5x!%@7y0syQ7k_I|7rc6(QkBG?+s1Q9MS&b{@c;9 zfG_5wKP|$yWE=jZ=Nq^$qKx-z_+$AYzrU|X`0+ANr$4qV`J=q?{Ep*eKT-4pzi=Oe z?(bFqU6vF4*UFGz@O9(ZUm^Beo#7 zGVWKvgGK}vW%zT(n^Wkm^~DM9OU8L0_eY~XTRv~q?YB{%gZ_#hOY$F{9;JLf>hpcj z5AVNoIPLE~AwQuYuV|0=-JP=_=k30;)2WY2mP_%rl(*${Me7H zQa*jYcfF72>1jX6U-6?+QanU{0UzZHK;G3J`;oBM6;Q|I74PRFp0Cp$sb2bBl6`XH zqrJijYyW+S;vLv?KOXXf?;ha%$dC6%P4N%+Uu}Iy|A6+s{`C^*F&_05_vHXS`6tbX z_!0h3`a16HUt<*d5%hHr`it~$*t=%X*KwVvIC!BiP)DyXphqWP)B&{1X8=8ymdHO( zPrM)8r2e@03i36(KzTCxg*@Z_3FR-6p5LA-LB3*s&_md(@8HiuPb^NoA@S<*T&7{Le$tNBUeUh5j5b zAF&NBCx4_L1i-gPeaS9-puVd8@OYpv@~>F0^Ci|({`-(muRoISlD?-l{_uVk-B)p_ z_YxkEUP$+k`cbR*VXuAsg?OsoThM&~j{mryZ`j^jlYNuE)`LD_e(<}Z1%cvW-aiQb zdifXq@%}7-Zq` zet|!A+@Fx@3-~)6?9*G+j}Z&FqP>ap!{35_$$lF3MavPR7uFl_caeT4un&+w>c{d! zvu6eTI;21BiPsmSS3U3p{uS%fXm7ftx315y`PPU}v#E68=ntDgpTHmFKPlc*JO+DI z!~4%c{y`7=KWzv)e_8Mk=-)S2VDf?ZF|-f* zQRVl5R&V+;yaM{T`;IVPRqIi&4=7i){$zj92k+TbLC?eR{tmu>3jDW`C5j(=#6@(}NDL_Q|Hn<57wd<6ufjfIeWx)H&+ER%pLO`79`MZ2-ud-A z&XcROziPjR_AWovoyS6dhlUuh8U9Bo4-c>UGREuVHGR*fd`iVL*q-@SM_<_sY|s6A zTE_YnsEhvK&-1^Fd`4MRlfM$*X9Rqnf7MqJeGv2 zB{*#SR$4%k_uXNQ%`*Rmcz)|P(^(%~;h(b4wP0V8^G5i?65@qZ)=_={fAyeg`M>|X zrTMpA{%>}I_3{fBvwFBs>yn$VY47!MzO{2%>ot<^5QVF{j|lIL4#}Qn*UaDcrkl{` zDZ!8LzlRUXczYDTPeTE4U*+(@yp_L%GVmF~d_3>Y9-$2Ww({A!X$-~#{J3As_QyFs z;+-LXpWDAjd+-4yUr}qtw zK8WAzuO;W{HonfQZ@q;3<57?PWzO&Qss4JS0s8s=S^bS_^$hC8-}{=6^~k6A4_XgG zA5V$Ttrsyr>GR>@e9eAI_1fQI{g;O${RrHabNWytn_mgJwMpBNwZvmDxEJe=P(xu2tYt#1~W(AVsf?mLBkz2xfAAMtc4 zwAcD2x$p4%jGwR`_?&C6dVLOJn|H*zpm-bxG%Ul07;NQo7 z7VL@S4fdf5eULwQ_9WOt=I=v3@LsLk;D!D?V0=8o`_&IE{@$;1zXPi6%13qh`$@(h z;lA;FR`)B&|KCS^k}uDN^*HYLT+f#$d48z-$}u1Jt3FKu3HN_s^p_kxY<*o4h@ljd;Jb&i`g8exZNuRj_aA*z6AdBRq8R&zTl{oe2Qw_3b0}ckwasc*uA;*`Im9`%aVnhPRGD?*IEAFGc)BZgMI2pXXL9{sYF-{h7#@1UxmOZt?2l^m)H{ z@%`gJLr?cJbe|Oe+4?1k|FnL8_xO*#3cnEll`8}BUzzcr_yu`We8u)5-b&)Hhm5~q z&p06KVNXhZ=vNPAjt_fS>SJ|C{<92yU&Q_&6-?&|pg-cP$qe=_RUbJ)Mtef=8WzRc91^f9peT=<=pY{at1@YJV+3=6~hEK4! z?`Kbb(Dms1*&m%({TkpSkbr0L6#|Rj2L4&&c_^&$ui*b#4}D+6{gXkz)t)8%+V}_U z5l=KoPuVB4@=gc zd(iKZ8YIc|9rNRTU2b<>k^Y?QBfhEF{yF0ttRJceRm(SF`6ky3W0sIfeZ=>4b+l)^ zoGqXp@V9ysP**n|@NMPeZo>=hv7V@7Jbf?0_SkC_WOH)4?nDj z7GI&_^Z)S=;2F!au~U|>{(Hq=_g-y}M*BDne~I(PKRHH_46K1~{h$`-ze#>cy6pTK z^jz;Ro@Q^y_FK8G8?m5d?K7xfIL-d&SYPTRdhqyevs@Nae}?A;XP#0mu1v%fuHRIXn(P7`}b#RxG%Lh|B${9R)36- z^GDqmqw{*4kJJy&8Exv9z>_bceo_X{)n|qEF5pKzJr?IDypxllOpr(M+rta~;(pR{ zE2)P+YOkQI^Zf@?GkD*;O@E;>#>e{&!e^EEK%UVa3~~9}cn=ov0KG%hVLf+~>+iGt z1L9Y}kNI$ajM}^JCo0r0>65=-re9knzwLV)o%gR&|4Jp!2YG*u?@?m>>?+EKeeTb}u-r^7RxAoPtXTx~+_prZ|>`!6+iS^A2?Yr$q@%~-pU`=M@*_yEzU}Xye$Vb-L_Wksa{i9?V-q1ig69eSi3#qPpE5rW^u_u@ zsw8;2@~6?iJ!JgWf<3~I@f+Z6=bdvj?Y4f|NBnWVll?cxC|@JImG%B+C+IuiU+?2N z%s)9c`=k2q`Cvb+UiQJi*Mn7$5CX|GymD z`;|8SX7=A7hxeWYpSL#}|NQx2@6;aiqyHxDmCD_2cASoXUiQnqM~V41H?wb~^P&Em z$4Cc4e~sVmB=)Y->UTQXe;eq9{#)m>KT5|3{OBL?1ARe{`2OPB*)>pG^uK>Ze7o5n zA7}o(EYbV^G2E|*AN_%kdp`~Q+3Ik7_uf1B*I7&WM|{p_Z>ID||HwbWyOsS91^C3j zNRRGXk^i6v;7{sR7Jj17&iNw$FrW7?qW|_<@DD0uJn%1$2YPyc-oqwBBbu$}Qa2&iB)7J;eGt9wf^S&0b+X ze4oJxO5>A$y$zbPKhpfRe^Qfu3;RVye**ff7026JqyM$>_Awsx3*$*2ZM;#@>s`ld z5&pvn-(;&e9_$Oo)B9*P-niu9N#lL)Om+?a%zp4^@IP3uHiLhJKfZgg8Q0@~sPoKd z|7GuS-cZ2^ZoR(P+h~_ilz&3JGw44TdkxjkIR7ty$`0I*gMY>Opj*F^KSy}qV$>xJ ziC;KB932%t;vf7;kNaKjy$$$x_*by&(EKa(8~0U|$RGJX@DKU5W%6JC80$~&2VV8_ z%l~c?8^cHI&$UXx5B{vtA79B{LjRDTHnGC|igo6vX@4Wh7g-}dEz?KI<37rXJ$`UR zd)i9vDg5JreTBXHlVk4>p}+7yzASx%eR(VDoBSclQD0FHd+PNO{acB>t;0SK*kAY) zw3k0KeIBsKTPjEY0smdFheiL_>bF|KK7k*t{#wCa$$xw!^`Gz;C`bE*{(#5%Gr)`f zu?%{k{>?)FHI@aR^u5)RJ_UW>Y-O+yQQs#wsXtDiuwT4YXL*yWKBqtLs*lPCO!VUk z`h@)e$R~cYy48n+M7U3@gCAJm6WOT)ZAY`G8Y0nhz?yq^W=UUu=R@EhNQ9&PVWK}bsekni4xso{`q*f2c*K`Ze>P}tojo}Ne9lMxd2^rkD8`qsb3Y65 zp^qmqp5hzt-&KY`g}?RkME};&1fUo6Z@phVAN(=w5Acckk0;P;`v1fqxB5HXFdyU@ z{Z(Hjy`?Y1+eLlY*(t^w)hgv%`^W0PBlw~}A3mSz3-q-c;M4eM4|sfg)T=alukot`_%*f$=BpAP!3+6n^s6g8Kl1s@ zpm&T1-()?~Uw*;)6SObLpUJc0OW}w1*w3s=oXH>P7vifeQy}t}<$7Fyp$z$r_E+V# zdZ3@ihkY&32l7*pr!~>Xy$?_L6dy+VL4OPJE!v~M+JjzzZ#&py%&+wt>f`zY^ho#x zeeD+8Z*8Rfg8W4L@D}2M{zjAs;e&Y1<6~vP@8@gvH|s_IV*QxFgLrhnUeq^>^uT)3 z!wdZ2&mupueib}EJ~w*D_3snujrAnv-;{oGyvOLR^^c(a@ z^b7tt+E4Lgdo$ppGVt;AQyJ&U=pW@D@oRzKm>=Z`f1)qwkM&F;-iN+N`)l(>{O=2Y z#RC!F!S(J|0bcNPz z{%o=A^#SWI2o!(NKk%3Fe~ee5e?90|mL=pr^ID|W8u>GNZiw(pKlYI?J9%y*lmTBK>HLX*Y4!2FbW&dL zkBo$PT=FtD7Rr*Z5yj^t8lUov?f18iv$0Ud`4GzPy>!I4NLPwwv`2r$yM_KJtG~vt zsJ;@$8&Y{FlmTC1zi50cEw}oRC$A5Hztx94__D!Y;eJD$ANf@%kB9NmKgQ#LAN^yQ z@Q-poAofQ+%7Rb&QT+a))dReR_`Eh^3r^`1;&c06Ql~N&pIiP7_2a?g>sj0%yGr>~ zJ_`3U^K6yub!Eu!itWcw;g9gQ%-1~r-*}+Qe9ga)^LI@j&byS4^sktYWcgF2KH&K0 z_{YJs_=-+P?Y!$e_xDReK>OWTUoXDGY#98`V!zTJ~R}J-=^!LVjkcw~hRwjLL9}D5vegxXzJ$M!!@T0xMdhOn;*RO-)$$4R8E}Vybo#%(= z=8&In^{_9Ue*HS(SH2$4=kii~-w5^#`JC9>@#ii3JZ~sxzwO||{5W5{uJz8pJ9Xbv zB7GjD68w-q$g9=6e1eTTAFuKJ+12BFlpiHJ2LI>zzU_FE=f$!9s+m{f_j%@%!8z@Z0xa!=b(M z%dW-!BEgII69c~cHN6+TcO2yX?!iYQexKv`_E!FGcln#+rTjehe(-blqyt`3 zKK*@Zjl84x-TnC^&i@)DnB<%C*c)1-H59zSr;hj~!1F-%!tAL(@5@Wq=}#TKDka>P zCx$xx1^#6c*wY{SqV>PeH!byl7{YvH~G5=!k>Fbhj5)Jb$_A-^1-F`0YK`nz1xFPxE zd|hG^_*2iXD;_p}VE(*WdRq1FK7c#p-Oyk8uK2#?5DjS0UdJhHK3zu1_KP47un*Tm zd%$=1;9@C!@7-m-(r&bG5AUJ8*9_ym!SBg-s-gUlr;ptAYpodeVOI_bTjR>#ugc zw^!Ey(5kn%p4#2p4do-0cXoF|nd_UKor|%I^OK#OOR=o_PYjfQA}P0e*#F56f6VWf zW4*@m6_s&*!u%x0Gd`cGoqy_6AM^cTKd_$u$?Zbm;LFf&e*g7JU)K09yzq=KW4zkIa3%u*H<7Kqp!QGsdbNN4h35<9D^(za zALyz2%g?mp|moXpjB%G0^Kbv+IBD z&bO{#f6muKK2VS8Sa11QJGZ$$eRQQtqlx@2)MI$o|7AJD_iQ_PR||Lv73y0rW4-Cu z&zQeeyUg*P6@OU%8OFD+jQP;NN&ytnZ`Sp_4hFD%^phdTqqu4E_$}m99ZV5Gt6#(S zJw07devN-3y#OB`D7Xq+gZLf#QaczYz;3+B%;N)9R=ig0jd22!9R6`1;|)Ur4l&+g z$hNg?R>!RKFh;Pp^W~Ey(@|bDlQ&a>^-CMwkwzNk7QT<_?quW z2&v7d@{eU7_hrn-{ggwN-FZ&4cah(7eZk*XQp$H@yasqm`32J_(hK9&dlz9&@WrCb ze=hZ|W_8x_ANaqIy^>{D*YW?n733Y<^_q7x*&o-xly7Bwtaj~-=g)hz?-C#L_mkQ7 zZL;#0u4c#oZ<%@arQTL1bExr)Rh;y>V$M z`%TK{U+X@S`gbmxzAUt$zg(|hiSZBUS?@np$>5sdpIvv@WcDBB`o(MqW!CF&pQ~g4>*BWH<9Rji+x7W= zf(rax?3J&i_%`}`+l22Kci#%ytKR49-96a86#OyhSI?i3ITSv^?{eAbfp`w%-#xfy z;1d20@rS=Q{3TEL-i7F!f7E{7)u+Sw4~hTB%p9}7%FkU6^@=B+zZlAEQ`z?a3e-!7 z;MHH1v$c!y`%m8g33*ugu4c<_J-P*Zy!u3c`v|NCkDa}~lHE`j{89ckyAu4H&RegU zzR`c+d!u%K?OO16(1&(@_1e|YU*)U8{#*Uk=ac$Y?>RJ2{VkiP{`P6pcgja+68`gP z(NF(so`d~;Dw98y|HJ*2y-Uvo{{{b1|BjOlm%q7l`y#qNx^js)*U!OzUZjGX&eFfU zhJq}{RnT;g_Wn|^_wfH{e~IlSr0jqDvc|i}@zB5h;w2ma@`pcsYpTTY$xsOe{7>t} z%*7+uq+hg8FR?l4|L43<>EbidK3#!5+BJa*_T+-$>&j2EPhX$LaL(S)KK&j<$=RoY z{qZZbHvrAqn{$vq+6(?De{bOY{yP^6_5=LB5%>-J5WY8d_su>jp0h9ZO}<*aYe3xj zXUIdVca>%MNBl?e)%F0tw>6#qMgDyEa>X|>niK7sP>O91WBmEAL_ubrbl zJ{|NC`!)6NTsQtv{{8^*L4N5H=hK{{=ZgA?`{q!;%R1RJ$rtRImsiOr{ly_#T!sAX zQ$BZte1aeC7k8ulk-jfp-!=UMeNkVK-=C<MyV!-pRLjStog{UQFZ-{s!^y&h1^zw@vw%e0~hk6nV~ z;fH@K9^c;PSeg&^@cCb|*7&!Vzr_AA9!u>X*RvnM{*ji6{Qce{=Rd~yd+5Jy_y>93 zd5`!E{`EFNb@uTyE}r6WvX9R`W*=LtN6d86R3OTABI6{5@Wp|2ZvF3s{h z;uBmiz&~u=ljJ~x8(jEYwU5AF+VefJrJZ%*Ft@56t~KAZf%bp(05?Bcr?67%T4yB41^9z;Ce z{nN|a7BB-p#H-yu?QR=EQ2x>v;jg=@*WbP*d)N)~_xcMMZ`;<+w17pl9nfn$JT_b`|g((LS=?_BTM^8up*?2m8Suv|h&dB}xCgYzi^-BU0>FHf2|km+pHA4;8!c( zdJYQV%6lm9?ihoh4-fWH-g(a8Wtr`}6Gl&#k5Ha??qj|`=EHd1Enil9zaQuOPfP+~ z{7?qGIIlS6d8W>PNsqkVO8Qq?`F2b8hV8K)ZRM9+p}*#vm`>nBeSI1Xu<@<^w8?{; zzyG0n`2Lsh^>17*maj~NGR9xeKh!2YK2$rS`PcIs?Makxgz}X(>2bx%(4SqMS4tm% z599f|6b}9j_M;dNuj+d$tjzF3J=_1+S@sg9QW^H(`A^DIg>t?3l zVEza8xZb}wM1A)6b3?zM3i^rh>;1h-_K&sx=6VGBsPHpcf7UK$gqQjbd8_9;i|Kw$ zz2DV+LveiMzj^(Kd?VlGlK98(A)tTl{F$v9hST@B(1&^-`LPFaethqL@fkJ<`8_+v zKKWDHi(14_>*J>i_Npc`6lVN6X}QgcK-ZFF#Ms`cUWHopKa{uC-^*L>P39SpM-wuzx7cV zJfn~3^~n!|em0)qN$3T6t#4n{_t+tSczdsu{S!w|$UElmelpC@^90x+xcYRkM`4RAJP6M=jVJrA5-wKTr+v)dfncf5}l~MP2ycCw@;o#qlo@KaH2QLOsgu z{G!%BalYrCyYBm|{ob^SVg9F|GKIx>7{8T2H*NqLy<7R-)4&fuU%uWd)=$ZQh5A0i z%cbMA{dAZgO>uw5wO_x@>%$JOG+7UQZQ*RZ z*#G&b&{6+9LQ&E0kpWC-DH307)d49BS<9=?&ql8EF-qn7L=m&fN&o~*h%lRSC_+DP` z33z>5?@#R#U)^s5`wo6p1OL^2s$$<8n>^S1yF>i`I?DTnO7@SOKA=7AyZ9;iY2QZ} zjyU_v?`vH6=H$PfZztzcd(f{+53Ry>Xuq90KT3#lMh0 z*txTZ28Xu3dz<+{$hY|EW6KA^`Uv@hsCVTx=0kP6q=4m9@%(UPn)X2OV?Pu2zZ>$? z$RD?VF8RXzxKE+`4Et+6dW8J5n(_^GKhfK~f9R>z7V2y6{0;opeL7y>kiYR%SkD@N zOCjEce}TVMzM+rLrEkBC`M&p;I)7U4U${tpz2Nktl|NGr^w)TZuRp`~INvdO*(SU( ze%0}`(?|NF!TWp?e=Yxvc>J>%kNynyrQV0W{|d{eCGLOUJ#gD8)aNeCiGHu~`=#xg z_$zsmf4(+Kcuc-fKmHL(sLDsMzqo&^a*PI$AKJ722;xImhCIQ)|Hy|?>-$50#_7Le z{xa}G+3cCxkC;N7asF*IwGSg$FWq4M(UHt1|ORMkxM9Z`qI9C4&d}L7vw0+BE4QdnEqBKL4uYH|pzs*xz4s^u~TI@U4;m z!uMp~>`Aho!g@H`JCm=t9svCm-@L@}As^5e*prL$Ujbg+SL*Yr-r#-WSp5)S@>k{L zd*Tz`r;d2&=LsL=1M&;|Gl|yLew$^ty}|x#`H4WUF69Z&F;yJ>AWwMTM)yTW`P)k5kNbmZ z{+Q$sA6Vc=`Jul}wU^E zzMnx^@+A4I3=@0+;OtSenfOb@k3%0~z56}{@>k*Z%wd$jA^6@<5Bt$jKCt3fvqxYE zevbZ(7aF0=cx<@DVwAtiC4=Xhvqu$OAgb?GAU{~Yt|EXB;Ezx) z^+vS41A{AkkdHjWYRDJb^F4u;6_tZO#P{-h$A=@lUmf(RM`JWG0#XtHR+aD>ZO!}Ra zEg$FK5W**aZ}PkU2dX$eR%p~eoWCHvfAodyk3p}sN$#hC(fn~d-cNJ}2lOmsKkeVz z{#(dr!2RRR-sKAz(eiyDFZJHuWzHV<6MEU+>FNLe1-(Cv?=hOSr=V_+zToc@E|riA z$KlBj%*Xw`uL}aq_m1+RFQa(I_vd}n-(!2igL=$|@mj~4kNnLq4V*t+w6hGyZ{{=X zu{+PO5MLs{;3CgYV!pyEHRdl|zQpn+{G)t^+n3ayKv{mnrOT{i83KPQh18_7Jwg3-Fyz77W+DQnmzIldr*I6`RJs#a3Ouc|7(yJ z`x$?Do^zFd5dCq!)04GzW%BEy;ja2Ul=m`4{3=gnpME9Vee^a3>Kn@6AbtKW@3()y z`v~9f{=snH;CbK({VDZf4L=_!rDuw z;(Kk-N8FEHqJ9>>C-e9LKIXHoa(<2vdqn*V_CoqORF*yT^W**$ju*d|OWp?qJf+@j zCi_nQzs>leI>!AieV>B&ukId{KoI4d+CA)@VD~`&Ua|>+dj%u zd3dlJApOsbC0#EbN{~^9D%!ls-lKF7opx%EIzMvo8Pa1=~9GZOK zy@fm*#e9K(yx)%6Wc6&1?=M4p>SMwWqhA6q={GzX;QyxJSHNlX68yE{aZKpoCw_Xs zDVA%Y?EF=xgiG^R`2MLv3nKVHFMJQ9`$oO}|4GP~{ha-$zNGNu{Rgs7_D1qkLh&#g z()xFg{HRi%R7QT2;xo1n@`Uw5LSNuJ9PoW0`5`?6{}A8meJLAX@>5g5Bz&!0lpoyJ z;>Ul3@g(kZ!FwK>AMy+NiS&m2;J)mM;(X&(%2P7mr~;};-%)M&sLcHq+#lrUQ+!$< z5A&@-zk2pwW=-_r`ZwY4gCmq@>tX(HYX5ya;&+DfIzCGYjrdC5k}~me^}~cG%Ja)w z&qsQ{F8rf>DIb1%D$Ec1`}b4z{*>u!E#hzVj`%BnoDBFg-|nD3S;XJov$glniSHo4 z#|H7A9Ke5aEZ|Ri<9@^sN^j&p;{HiIpyTxM%_-8mAYb7B;QZt9eLd;hc*IxulYW8T z5Ur4`)#+p8U5#^b<{(^q!`&2LgkVpT1y7(vf zCh?$E3SS~WZ|(!0sqzHtx&9aY^D_b7w~i>!qtX8A{`pZp7~tg@^qUOuY5x*I8GmlS zprB9UZ(YaLqL=ua(o6c)4D*|QO-B1E`b^Fy^Ao<)Aa9P}p-lQUqkhT0;5lf|-!+~; zH%_^}68^N0?tSRU-+JUP^b76X{brtC(-B_iBlIQG@0;3BsNqKYKrit-z{mY1U4Q5J zdy)LE2l&8W__J|#7riw9*lFOG;I;RFrTods096 z{RHn9KmTp(-#`8a0{m^@AIP`vJNO*_pYbE;vG|IGYgyas5l<-oDa5nC=-Puni?5iu z(fPyY^`5HY>svpChlO-M0;6U8d_0fwD6hAE>XyFO)%>5wA2>hccM<#~1n&C}$j68R z$ar7E$ViLzE-@f`zR)dN1>Cvi(4Sp0MERoL&JKDP4%;E(SsM$`EU z_Z5R4oqT+Z_1gc({u=E4IOWIgFXn!gtc~gC>pYJ@d`$VKj$nLz|399+^y<@El+BE!B2g?Q<`MF<;REo+Ixl4uWOhuc@GBjA>N;)|51C44|_k({W@Pp|7yH{ z{|5RmQrZK&IIoyweB|51zKxMTvTqm<{U<>}rytLu|1zzs^*_Pk)s#zuY7^KK?A?OZ-!O1b->wPxuv$B>hu- z*+0cc@F(wq68?$EKf#~k%l;`og5UDp0{)F3fPaF&8TS`Ce{$cE=1=go{k8bs!Gqs< z?EVqyM?wF}iT>?lJ!{w9d3%KW3AEmh`iJ{8pnsAN<%`IB8a-d9KI0oTu*aPrLLaLG z`iT4YUUL0$es=FwG~PQleZ9&1)T^=|nh)nOxUV7$_5}Bh;C=?d6Xf;IWSRQv;i0}v zV@Q)%>TA(HVEt33zM6c4Uw5!Q34Qft^iSTKpuQ&Z4*akl(|azyJ>-oGw(wpy`q!eq zQ(v)vE_kr3Dt?WteWEWao4!b1a3F!7`?l_C_GWqZL?eX>a7(K+l ziafmdw~zkG`LFtyBED`voUZr(XYbwPqq?qp@uSfLA%rwwAwUvvB#l5k^*~^ONh~3- zu}zF(EB51n*Psrw%2$SW83S0#NElZKSMECFOK@EH0Up2tLeRWHqQ#qziHxn zgT_Wml=k~L=WESz#gaam@0;5g)E|(K{zD_rZ0mmY7z_-28@H|HlopV{19W$Is?|AYJO=COV?{>=0? z%;WmGFpSr8Iq|7!LHsG6kI~RTcGA9Xp9*=?rZppI`*Zi+Ict_zI-&J7%Hx671&+R0 zzgQEN*PT4SC>hF=^^F~MWH0>Xe5Uye9QmN1mI~vU9&A6~ZSBwUv?^>rxAQ!s`bNG_ z68(_>$xLHosSP84F@8fv;bDGl$9WUDe^?Zx|05p#OUXZ}e@<1;!TYi)9KM+J9s>Q+ zu)hKOrg)zk^4H*Rf&Vwje)MYHkB;@5t)aY9@UIj8Gw2_f?}R)#k6Y>s_){v4JzF4< z_)`l?W@Ij#Ta55z68NVMA%3pV+w+JL;|s#_OaD$+U;;wZkMN9iT`>);_lMv-B^>_+ zedkiX_$Co6MwYeanyO z&se^{cY2O_1`V* z@7VG>H`5mOZ=lay>|ddNbEzNnZ8=c4Jiupv_5h9-cIcC7zphRAoB1f*uh@y8@z2k| zF6qYlWsKMP9<0v~%gY(A7r`b`i+`pZ;T3)me!Lv?E9E|J(VzFF9;jQ%^@OJUw^5&F zr@UeO-gp@_H|a(Fi23_Exo?i;rL_oQzmDg(N%@hm9FL~qV#K%Bh3D50e@UH}Rs1HN z4>Z4#>#;)l&?g9U{!))N$N* zQ!)WSuX(>dKChkY0p{uZfAGhFmDC8Se2(WUW4oFY5BrDu%K97F`!3~=^*7LeIs2DJ zf9mU3`iK^NG5?W3{V|7Otxp=$4LSFB-?MK)s4wi%i1l$xEIs_Oc^vgE^q2Kf@E3$z zsb2&2g+JZ1Z@yGllHMlNZ|S;CC_Tqd`MFY!=+7I*%p}ijWuwT0q(YpT${LA-M=>BGqpnZq`HG11Z`}yhl zrN$u0FP#78rz>U|{tUN)Km3mm^Y=8)Eln?|@DW@Pbr@> zIR3Tu8}_d)=X{h+kNAhJkEQ;1+9L_0{WO}OHCmQ0L z`HC<+Bf;^dhS5KnK3()<{=y$nUX}#q>+~Un=eJ4yCjPqxKGJ6x^5kA>NN_-pBKPRLsvVPRnvEV^f~5ls4X?GR4!rrtoV4pTD~M`&xHR1sSd@z1Rwe7@=q_k zj8%=T4{^VbSzki`6nvx~{x1BnKL`DLGv1JRj(?E;JvP3&2UA$?Q4uT9wg5%?`DVg85wmzGff@cxVGm=|>KUs|-xd)B=_rdsZk zl>NhEpAxxmNcU4wKa3+MuwEMWLjLBSFJbQMosbR>-oGQB{%!haz{mIo_lLRu4Sq{n z1OFELEOY%C=~*i2*Zn)7$8|=3Hh}`vtM&DA@n_pV6nvzADfJWmah}{?1pWhg*nbw< z7yPHm{hDeYgmIr}Xg{N0j=y7jmCbL%U-CPYzeMuK>I;3AGk?Wil0KwA^nd1;_;X0V zBJ^M3kK+Z9e<44l7y5_(g6-UY9;6Tau--i^FVNrI-xJDjTO7m-{}szw9+W@zSr(*E z^u_V8C?C3?oc!fJ+qR%QVf=>lh5EP2{j{O|mrkX>h4PnAqrcky>9}vMmg|>vJcavU zR@7GKgqPMX%?U5BU2enBAM+8W{xst;(6`mL*?8y={!14!tok;lmt(`F8*Xcp@rq4P zrkUthHjDop!hNAW#a-#!`0-^^>Hk4`GffnCWq2Ra^kyFbD^JcFKzhUc!~I5%|6qL+ zDxeS_>&2SH9)Uc}N5H;|HH`Jz3pfLOQXq_#u zjcKpR<=32^CJnr;pBi=kU*rq_#)ifme${0ke7))I-b9b+2mVtLeWm3OeuC}tGYz)U z&(C1Lm&F(U^Bd7J;W6>enKGC^`*w3*AL{Q6>}l~~kLJu&BscqZo1Yjj=ic|0DJ}`{ zQUCEgCGlrM(f@2tSCp0Er|1Xy&6yI2&%QlqpVGxsnV<^l^DOD78G67t9&1h)qru~z z2BR^?lcjarB3Gdd_{Y(`I_N!XCkWu+Dx&q@U+$Oa9Vn!QW38 zmm3d(J-)srQNFL(*o*NP5Arn5_|k1`%=n101)zZm!@&aX;|Kgf8A`PG2AJv{6s!9No|H^Vu8|HcT zQl6OK%#XD1OMV6T=6#;v!=F)qmWV$E@lCkZAms07(BG25BJ8jJBK8)4V)-m{@@E0^ zXKEyW%A~%q^_vfUg8YKLaGr+L7gAqAA0O`lg5s`bPSr;NP5XZfZijw2#0?`bECfpBx`#N=SaC^q=MZ%oI~!_<%k^d-DD{ zK1Ik#S^pB|Z_If`xUa;FZ_WEt)E_g#`M1+N?>uSdXM_3)b5&#?gcsr6oQC0lTp!va z8|2J>ns*#zBp*}X{G!*t1oLlnI`|X(KRka9_LKc<4`KT`sVPy7+GH{ zwXazZBlC6I+%i+P1HarWV|r!&3H)UK4q=&(!~5AJ)<5|<@yK3eh0O0^JdXJ{X)c5L zIqs+XnDT?ZSRY);40i4xD>?uDV?h2W{+K@ahs?))MCaq;?jIY+?AarVPy1w=jsIwV zV!hu?_D^Jf5A7r7H%h#F;g6heLHOP~VUNBEQ=cy3{uw>5hU4>{#fXRd+4;VwIsaGe z1?yc-alW&xl={kgiQ{trOQm<8@`wIdFNg(+cKzEHj&Du(g8aAh{WF#mVtz^Vk^5%q zO4;7)d`KnU$D6QO&y4i|#n_-{^Na6yYU=`e$ZI)JQ^xm)!cW5U%lQ7#^2hp6%tztj z_rt15kIpsxG(CghcMBo7w}_z zqYrjwzUvJ4_uze(4L4!^QMz(@;4hGe_irY@$PfMt{kxU}-ib!D9IH}>NC zrFqhytCjv7*29lC)OvSAU*4Ahd(9Z1SL=Pi^X9QX2YX}vRha(AsqeztfZy|N&}Ug_ z&&Lzse}(Yx3i^wfU$p$O--zoW7K?(Y^yL14#@5CldR<@;L9eM?DjZ9@KJR*V1nT0dfa5BTE|e?k6ank2rC@u0`~e{%x+ z%6)=sR|oi5FA0Awwg&i3^hdud@E_jK^$@O8E&&GZC-IG4ly^lSuQT-5CYEpbtF@Qt zqw6V1-^%*0Hq=kTZ)*zlll#K12-7F=GCyJDw>EU8e_b(%%kYzCg|+^sN8m z{cX3rza_r->)O!&Q6BNW-J$1rx?vskd%Ng|`WXCIaX=pOt6Q)vC%kT*Ti*Q4YWSo3 zzP=6%P+aw@ws{4XZ~9_mm3hW~y@{a4E4N?G3&#^e6FpuS>xTH;+!a+armWdF5W z7mOHwjp?PGYZ!0%!@nzy`pgfkkHdPUjzC}N;~%M?8{`l4@sG5@|24nFese*HN9aAs zo3}EUKLtMQZ!REFdzbHPH}@%Nd2dYDq5|b(^;@YY!(ZwjB-q#s<-^B)4ng`+pM##^ z;5=*2*9H3G{W9X=4y+IU74yf3Sbn;~{Ak1bzvbq9D^7txpVkl8)%ldi2kX1a_pLDc zt3AN4-SGQ&#h>pR0|S3M#$V-JFQWb=_Sfs%r94fcK3YG$F7&7$yTbCr{ySR#N5G5y zQsL9?8|I}w za39%e)IWcO`iBqow@-* z^xs|);)8#AW+?^qPzcw%G^W?AF%1Cx4fZR~_%^ zFJ$;??01U&#YKxeZ^HC1;SanIL+Ts)kIV4Iihx3Yl*T>GimF(xd_Qp7m&mM)b9Qr?L}(;pG{h+g+9R8U~r&5@KGU);Toc$TdfAlBiz60xj zG9P38U-~cbXFenFl2+1pr2>C$V*eAZN6UnO}FM1!s>eUiY z7ARlfce%80qL1je+SJdGPkruf;QDkUkM_Q|Zb1-6dyDa7a)FH({p;9%DL(nt)tmN) z>6LID@bQ>%b9yNp%F9Z7YVJoc8OZV(`@UiRWnuqq0Q0k*VR@myW$HqIk@A4@jrzdJ zKdB$WFy>Efe#(4`vp?rE%zyZ!rI&c8ygbSNYPU%q>ksL#Bl&c|AnfeV5dXk@L5ap= z>J|Pa=Xr(ttS;kvE*rjQ-&*5eO=9THDUP>f0~y>{~{~?!u>(x3%YaZQ`J}4_~U5L$LE8AuCD-n zGxwt)T&w-H=5gd7!gl`<^qcSWKasxHb#D5x|0Cu4E8F5dgV&muU7jP&FStM&d+o+4E-^mFi-5I`ZlK5u3U?FO~2PXR=W<#y|U4!Ctcr7 z{nxVmqJP{tRyh~(UkdQk^V%5SYWa_?6MAEB4@{Wxp+87|W5O;BW4}u+ z<8A-CIo(hPh8ToHKKx1c8-QOJ-!hl-?fN+Ehv{e_JLNC)&+iHS9p$ae+Zm3h&|a-> zA-c5J(ta(G`K+M*?h4DFwBKtDdzKezzt@=c64Vd&mGZXB%H#OBYo$pq?FawF{Ian( z(|-v4!z;u;yVSnT={0TiSFxwqC#3^e;v@a(wY8+bLgh85TPlg4(){w%YdZq|Vz0F= zwEtR-2miUmm;D>Ue^rQ&FxnqEKhM?=?9UM2u}@vDeKh&BhuEhptWTtUtDD3AgW*Se z%wGviJk}no9eT8V8 zP5sXP58Aip@h&MpcDx1ob4kBCpkEWxi+!+PGDwf~Po#e;=|lYud*z(Zk8moqUoq-) zvhJEVX38`6g#DLH zL(8XO)W_o(-rD*b=MglIw=7}(CFKq2#e9(2Pb2hO5Z3)r5H2jn zkWwFrzb~t&zlZUQ=aSy;SH=1WTu8*n_>a^NPJXgJ5P4eu5$+QENtpSE{=40uChy1a z{-GS~Xm1I(IPEX@Z(_cAcbH#N|7;7xczMGmhux zEDZgD;ma3>{=l$K*9ZB#3i*WuGK~Di{9YONJJ|9p?Z@^o4F53Qfq;H~Sid%5JT#8| zN*_W0-0UyJevMhPg7s9W?;6vyO@1+drGGRVFT5w9fU#F&dd?h~Ptx*?^-d)c?j`P~LG~5&UDet$)YotYTQ!zl*=jo->>Lg7Uv&1;W|TUm9J1fj`V{ zB7WFDRaTn!3r1hWi@%6Gl!xYY<+?`TS1SMJaqQ24zl8B~=aSy`XE5K=QHij~$ND7X zf9qTZwR|IN?k{5a6c(SQ%RHa)EOf9Z=VK;*NDKdB)(`#XpZ}Mj_Uu5(`#<>0rS(TF zFWa#{?9%$9OY4s=tv|Z7{^)MZ=UrNVbZPz3@k{HE?%8)~{gD~J6v=!G*0)?*e{Tlwf~S!dUN$ z^NwV@jI5vIdLXRtGEdg?{)zi*5ZaGFt6#<|=6X=k&+rTHi%0td{pEb=!u*hM>=zS$ z2ET>-KMJi!ntPDi;^89DCZsGct*6WRjm0{?Pi6dhobQnHNMJvl-&V}^kAe?++$S`h z>p#tWz#*)ktPuB*{ZH7BoXX6o$D2rRy2$7K6pQMo6F-oT*p_ zs*|`c2N%{L{HnD_)eJ{I?mN@%q~y0#?i-uo%Ex)u++Sn%d&zlDNx4r+^#grLRTw`N z`gg8$_`_c1%q~N}y%_eK?V|)`CB0bRfcx4m=x#a%@5p1Ig{#`{M*RDdi45U=uaK2Wn+&MEZw0DtBzR1g}!1^h0P{l(_K zGx|#{E~vBl(+2rvELo}_(wm+!mkKLB&g+_m4Ml1{@$bs{T#s+=E2I8X%=%o(Pxxng zrqE0J#Ge<1_Q!r++~0@;%b*|q7yg;bwA6_`m|mnWh5NXeA@)A9B=EDuf5qJ21$@a5 zk&peesZ6be<^D4X&yuk0_rw0_8R-Qzmyw?L4I-S%G)eua`HA=$HDXT_5B+Lu1O1@? zjP%T!MoWL3_OG5qRhXUReplKfQzIALn)-nIP3z?Ro)$fS3HRHz_*Q?UFENe~{Lj{> z$;_hKti=Dj=5O63%8%g>c{9cr%6({)$@_G_@!}eT&;6b}&(8PnBK=8YADkC9$19!C z@{4>NU*6&kV1H0eb&;u`kp0_2|4*jdCTEGfNojwQ>5h8*3j8;fUW&tYFy5;AkkBW` z8z+PPuHp}K=JLFMDNopMiSvZ&1N%w+gZl;(S&bKaHM#Mr^fKYUko7tJWgLy%kfsOw zOL6{}>CV!>9_N1NmTGSp@w7kenH;a3AK;@s#Q91osB8TB6wcEapS>U#zf10unmlRt z%O)}_d7Md@ALFaq48E}k&Wj4`qaXABx2`UtOL@lm9gttc`f%mR2kFm6kT;9xu}-G$ z#{OmM(^Bg(!PLKX2EwV3Un}dIRkgC8k?}Y=6X$(!zhzd|i{pGp>_5RNDR{WvT-L8Q zNA{bnXySTv*)JgWLn8_Qvi^YmbxWj4C;hXBpl@?^kblO0H32^IPxODk+86wA9=zOF zBj+0+4EwUBHR*YZ`!iS8Qd>#ile{l)S*_gX#`M5GIG?(!o%oaw`b4_c^BHD;0_V3U z(zCrr8~!W$hc6d?)UtjM`}sbjt-Ya7JJ;je^A>O(n7MF3?8Ey4nqv*(r9T1r@V^?~PqE76C&DeWykBwiv)TC9tIRLj2bX$4pYZ(a zcC-IU*5h-(P&*DJ=Y#Y=cL-s>-4DWeADUrM&)(apgVSn(O7VIaG@}=r9zaIAx-?c*gjr@V1 z9QWt5zA*d!=^u>?yg`J6^4Ct9FcLn8H@+XxD%h!CQw<{5pFPRT*Oz?b8W4{%U*W$Mbd+75l&ztiT zQo%`i`&q*LZk*-)D)bNQJD=$C z{sQ&2q{orxXS$kl{k_Q(`@=ohzfX=Q7O_4J@_)Q|snn<1-umgL%fJ9nul4_?W`xZC z*e&qimWcm?sm%{552*jFy^%lgPh&6o=RZaKQ|hypgova4PSZaVb3*?_c}N$}jrix{ zTzQRcfjrn#@-GXHudD^b&M}G6=o4l`A@QaNHqoiDPgo9?65HY4CCPs_iOkx>alSY59lM8 zZectIf2iU8KcT;&yu4Ta4dn&*4R(ruvV47={w~K~1n-wyeS{#|_=@&Dli(tk^3mM(=RUVYVv5=NiudN#$A|1fF#hnX7TS7XMPpkH3k z^L{{|kp05A{~JM1?@vX0)Vx9fOfS-xNb_uVJYq$%2l2Q=$;P8R z@w_p4s4x1{iFCq~^BW{=(jy(VAY5$Dv(xl(KU{loe;wve4jOjwIXSQBYJ}yuZSI$w z_{GmZr4AHL@<1}_zaTyT^(XLVs4&S>&6xfJ_=*0E?cd^=e68>Cye>-2{V2g<@tEX;6V+aWw<;%U%Q>>GsD~M zd{R5((R*)Edh6_p3bm$quHOw^Qultl8iqkGN$_~ z={xP1Wj*F`jB4oXO4{C0RE@9l)xY4KFrY@FyF}Yv5?$RBTwf4s2@E- z@G*Xl-fsZgT)vrLWGLx-kPuy-n5Eb&Rkv%IqW+wu$k8<0QQ2J)Mb`pNS1EWXlDSN^QO ze6g7Ezp^_)3Vz;U-_#GPk1bC!e~tLje)yA&XMoR#X28+TIDg;6{AabyU%{TGxPL_Q z^K7HoJC%kz0=1a)L2`Z*?h~Q@v?ug$NhgY#-wEmm{tT0~$Va?QzoAEXJb_Kj6JAp4 zk1$^F(f@K{$DDJmN%QeYRw;(w|=R@jQ_%apb*M~)FGDbxXcNUB3$Z(vj~?sVbsvxbSFF~5@!Fvjqi?x zH$}oXN5Z=zVVcC{2hF`{j{N%(o_qz+Q#ilw5tJu!c;g?bv69Il#!G%Kko0~xz-RuH zPO|B=`4d-vWv2mw{)6&gn<*TlZr1^g@#eHiaaJfo4HCAFC; z5|%!kgr`cF)wZQSjGtwip4v=>#G}{ ziawGhVlPkdNsjkBVy{2K&x$~wD#4c`1pkM<1Yhih_J{g>1^CH8pOP}Bk7dm0GgZRI zo<^T3PaCs}y}C z|5e@z#Lo!iRY|<$x61n@;zNI~mU!_`P0!yV-jpx$pCR$$kL;hof5#B->hl)}8~YaJ z+F#{;0r4jN%pb>}RNnK556g>dU*iwIhiGGe@^{l~@@E3^q5a(aHTm;x#2f!)dR+S( z{(p^lV^8w068nq2)Za!B@1_@3pq5vu55zv=pPHTr5g+=uV_&u3jtIYRA#C$2H8y1u zT|^^K?e}$rO@840)>!%EKoD=z_X&hU|90vR^@rn#5BwIBmGVt}$o8vb(nq|>f8#G7 zL)h9gHRj3vdqyAQj~_?8O&`k(x;Uz@$*+eH4)bfe$P@c%dj2QkOT+Rj@ost^MtqoG zPWvYItMI75*0+)$-vGX8Uzk4JL4$b7Kk-LzayQ~#|NaAnZTjNM+aDv|`XlTm`ETsS z`l@VlZ-n1R5jOrn`O`(do8I3>d{}=t^@EhZvdO^+zZVfU_F;LLI*IAq9Q!_pu&s|% zV-=H_Zqs;^f4`5gDWCKg$Dg%4Jc;5qtglj5(oerEgdyTCX0lKQ2B_BHJz z{ikAbt(7nRn{r9NY0p`odXqpm`XQeD{t97JUy;6YlKnH+zdnnwsV^8meUek0Cf@kh zqX9c4AT0T(;jbYq z_S5j+AT0LL@c%$q?63XfzeHI4^Gva%{|Lgi{lWd^iSHpic@p!97*Ea2OqSEvCMWKd z`7+j**D}ohC+AnvC1(6pR#oJEYm4+(lQN{S{Z(&L_z6Djmo5{0V?WL}n)~Zzyo3Da zd=tkXqe=Ad5r#e`WGDJ?yqYO3X1I*wVT1#Gj>k|xV!e_KrzcNh{`0tuH_FJ*8#M74 zKS($^!;C+yK4oR*eRY`L-;ngeKcwom{qdl`^~xywXV7nooR2NzKkBFUD5X8VzQDVB z4SYc+j6W#zBhm35{qKILC*v3N_ot-2a?zJMgZ~uVKj?<-_{SNqnRw3sAic>l5($p0uBu%WC8B4EB8t@d{*Yu zP~bJ(RK)S-o6eU_6oZ$JrxO{eDNvvRlKC>JSxi{w2lak-&X+wQ^GQ=L1FADWh6!Yy z-_rT9ZHB*{AHxOliXT5eRvys9pEzFkt$zO&Hy@_@fhXr*%QDh3AYkXi%1ztK`6itY zvlzUe1NJE=hj2a&AvlECTjs;2CK!L=^I_5wI`d%_6{h~+{0ry9rkl1BJgG0{!={!m zU;z4=`7pV<)eGjs*wc3B!>Xe5VO1A5A7ae~g(A z8x@noYd9aG^I5;V`LHQ@^I?*o!F-r`e-X}y;kwbpM9zE|)pzH^Xkp23ly^H{6rB%~ z`yHix8v6P_dve2XvhVN>38 zJ`6RbnQub<9=0FS9>vaw`M{U?D&WV>hqWVK=C=@U+XHt#j5U}$A2ufvZjFSy5w`6c z=bKJQXBGC4^ySYt;q|KG!(T8zFu<_dGdkbI{%J6NK>5mIZ)pJxBqneP$%IO8!Hk4y>Y$29#ngFdvEGykOh z^$my)?Ncf8#hxnvI>g)lIs4l_!lu43;{kLhg7G8A*SmuFHnIP&AZ*7Qx#Jg;zUvWh z#(PYkGk($W+(yLP@eTcNljSe|+t44C8&@%zapc#puImHPQd&eP$Bo zhk3tPiT8^OL?84|XCPkcvKM`Mzu1zllA!n>-!G=CE7{+yX8)A=nVvg|x*;q56ZD5t z>DkhhNIdd`^mBo4=ow!n`pNq^!~G!qpO%{;7oPr?Y!1?=x|qL`ynZ$#9jI zmG^_-Z{nF=^xqIao$`_%#_R0QWoB2?-ta$ZuafB*^_*Ka<9q6_@>6%4^*rfHMmzdW zpTYF%{t-zp4C17>mg<;zNpIzh-1OE;dTN98nf#LX#Rh+Nts@WVnZa;U(}(>9Cf>Y{ zEkXQj^2bgcxsM9#>u0d-59bGFOlNv$GreMuO1wbT^hkag|Cqt_N`7HE0^+Sc_IB|jK5pbmC|(y{ln;2RrVq4 z57oK$pI#~Hc?I;Mf3@V7`eQlkGl)0urx~9~BxsN7D)5u^%jG z1w+VhzR!hzSdUR@<9WO>FLv@z!IPOWsrAxpn|+V zoTBU9BnK#tgdeEmOM;kE2*Z5di7{};cl1%RP}4V&;| znLjizG`7qB+SMVEEkkSl+Xu(|9?Jn?;^zKc;U5^>ZI}%o7}+uG@7TL%-`L=uv36>Re=8R9fs(g|HUE3&nW#5 z3edmunxVU+`26%0uv3&LDQ-Sz=(5MmxBZObt}a0T;t_+H{C9Z+V9E1jEjBTu0fPQG zbI4eFmyFTFJT8eK-d=#d|6_*!X;qkJxD|g<`mdY#Jo(-uhQ7z4-xWjuAI5p|=zBhH z=E9PazsqD#p8VEN<lYgg`{xv86-XBB%Uen0s$$#+)Bmb;JpN^sboN2`K z=%4$Hq2HjD8|}9*hQ3XDE&2Xa`MZYxE=NAc$ID8u$Izn-l1IPL)bDxr-}d|Y^3f&9 zqyMV{^sg!X%b?-I{Nww|sQ$w>jLp~o#2*;>+Z_Af8AJb3=``lkw?A#@Z+7VKilP54 zcJgE7-~Ty7Z{8sq{n?a7^?y=E9r^N)eBRJwD~>!&|J^b43pj{~k>B&jhMw0Q_^8)lQEB$jM#zXon{-X5v)&UqJ|A{{_@^?A*yC;VJw)%Mb$}bxF`yBdvW9Wa@ z5Kn*je;E2NIQIKs4E=oz;^{X$lTUwN4E;-u@$~2Z+|c(s`u}Ft-{8usJZ%mq^w775>nzicqKDUA8g_Q%qjY70xtK^#Ya zR_P}kdbU4N`om~{;^?3Liota0S;<7{{~PQVM?d=2e0th1O8?UW^zFwL)A1j6HKO#q z1u;&3`?LA<>?%a*Hx;6P&S3V?@Ob!Dg1;#Jj{u{Kshap@p3%R~rMGZPZ^PWK5=Z~^ z*A1qNAJ>0;cLDk@Dm`AU2TvUR+o5=z{G%uG^Z<(OCL3N^ko=)H#m+$6y#I|K%5q{Ns-PasA(af>XxPANx)|eO&+d zH2S}B^g}P^)5rCHPr<3<=v%*+PaoI+y$fh@^gn*d(7X1I>;JNvj-x-T^jSvg6GwkL z3U3_!==byG$Mv7TU4VW}>7Q`q$I;)0`Y%rYoFC@Pr!TtpV6r}6fWATLGmiW?`j4UU zh?D>DNh5!g+Kyjw{r8s((7&wobDWAPj{f`T|HsLH?Ua#k=NTwJuK(YN{(l^O<=-p4 zBR`J*omKJlsedr^=9ALn#}B_I7hCFAKw zU(MG)Zv64d0`wWBf8LQFM}IBGA94C`_>qxs$4^W`-1y~O0s0A?Il{-Kj~l-{j`2&J z{B{4FpZ>V<%ZUQ?8M;I^lmD{PyX|Kj{Tz&c;^?1#&B%A#|G4qfj|LF!GN&^jTOU+Wwp^K>ynRG4wxn=jPw^xqpp ze>ui~ar9@D{-h&6j{g75i>H6C2n{Sc=@$}hN6}-*}EXLP=_q;_>`qglVIQiKjm2c)pMgE68&yUit(D6ew{a#w-JM@R* z=s_4K-}^wm{KGg2EGmDYjvu1(vk&CUe=tV=LR1rR^0SX9J=%9ZwBLvE+A7O{^ZcL? z{qL#%OAIpUABxGpa_xUd_4mG`^r?{kVH`)7HNoKX#RBx%pQ`@GLv1K}Ig2Cso_Mh|gzZxBTKCR}9>Hipxd&`<&@cFv-fAi?~8v3l6 z-xK*quyQ3z|BCj1qx9L|QhGH5vxX-(^ z|CdK!ih_YByUJiw{^Oqa&a4RrpXJ(riqdD-D!r;f`cKE`|4;#X?<%D?-55##6EXR} zMf*>A@~>BVC;xxj^SYz@FV+52l-~O_rH6m;q5hx2aZ*_ZoagR_0{Q=brFZJD-@y{L ztV7G6Q!sxX=Re*@^XZ?Ap+DRhPoMo$rFZJ@-;GKCg64R7?{Ad8#VE}5e>TScB~YIF zGv0l&|6=HQ{FVDeg5K+hWEMy1@BfLRcl&STqwc_;k!SNd&s*P}C@MO04u@n_6b-&Q zv*?u{)fL_Is#jEWt_kq+qQTdf0G=#*uVA3BYr*NTM>UP;@c4q9zW_v zd=KI_0S;lCL?G)^NyIN#9v1Cjg%1|)_@ae3njYCRw$tCff9KBOw7>VjaC+zNy?0(zt3dq(#e{Jy>E^#0K?KbLN3aBR?D?hkI?n;sk4b1Ukq7R~SL z_gd6l!-GS^>3#mrz5DkJ`B--}xO;b_)@nE&WO!_YtS{>0@}hSQ?%qEv0^4@%*w?me z@9o2FL&Jl6R(7mz>wS0sz>d8`!vllq9lJ&j47c4ny1#Akj?sa!y`y{iqitV$hkU

KKcE>L9rd>l@7$Xn_Dve7r7@MHBMyIXC$!B&&*48fGz8Pc zb9VVEUM$C*=^d~{sQ>;^&+%aI>XaIJS#Ni`1o_=CtbKy$o*d;e!=pkG?9E}ep8~TWy-Z!$Rph<-w9zWl-5xmjegL{V0$GH%G zK4+shGEI|evS#2tYXVUJbvtitA29#>ciz}BVE&J|PyclzBjhyjo{lc~ht+Rj$9`ae zXkg^Vf#^RH0KXIX#!iCWFZfnoAUO6%|Bwh3KAoNMc|+mRf1)|nh5XL0D4oso^HG8> zUS8&WROgjaGdO^+Vp&-k zr*+h7Hq4wJcuyDUE|v^*mz%1w^I}Mi)>6Qw(H-Pmu4qb=pCTA=yH_I6jic=j9V%SUz1lQ4nn^CHYho{-9N@DPf2J zPJvQGf%<^XRNq=M&qo%pll<=JblV@Rko5_ZGt_If$=`g05Vg>+AcG~DqA~nzCz?{j zEhilvmuo(4XNO@heQ-ds!17jHo9{Vs7RUV#@H;LK(kX2-T4p1i)u5^Sa_SS&)v<3! zySDvk`LEeLva)mI=8?{g8xMdMqFb{^iJpgQD*PL&c?+ zX6qa%^q=Z8qftL~IDMqRp11DayM1tXzw|=aODEJgvf%DCkj=w;ZXMfY;OSv_%gBzg z8}{!WX5Y-k>mN&F#ruv9V&c2gd}HCegonl$fraq9%=d<^CVqo7h(iNdsxI+Zu5P}^ z&9^LP9}uPjH(_BeVYB=_j5lE$zjp2Dz=2GMXFfg8gmGmYpu}PL4)h?+rw#9w@Lu7+ z6CKjMX>^?tqW&f5oX+iQ>of9LHZd))91<3t=9xM5rjAXMl3FyoWY zB+BpNcqr)=oqO;<8qc*CHNO60QRAy8FwQyW-Lqy>QBikyQPJyXy?f4`@m{&&r$zUi zIpaNct|C$N>Kx#n1a2bn*qL+Q;JLHjV0UX#@9RFsL+wSqYm$gRgZQ4J!8KcpiXPll z^yPDY(U-etg0`pVm2=%iuXL9K=PYn;DZ1zI%|(wLP8QwMJ*VigZr{7-^;Yo2n5^3? zx@V0CJp4GJ9?hR0}8V|UV%@#v2}Q(S(R?`5x-9K+Vdtc)Su z{0sBzP!>+MxDqol`1`Xf!28_$CmZ>STXfz9n{C6N z=Y0iZ;d}A-Eb#B^&aC{}U6?vpgSWxZ(Z{#91{e8sXX@|f>)C>|nV)?11BUiK@F9Ij zdx?%Vy<`{H*Dm>sw=J#=Ub4$2yIiV2!#3$ZvpldqB7e4ht==btwvYXTaygCYWVda* zT-@#mZpnFYeFv9q;`#WtUj*(Z2bcPuPlwGHfx9h&+j^d~^+#~er^De0?)ms`jo_Y- z??eRme09{>ksGS+kX+b*^9t^`XX>oUI4DCSDx*r&nFWmee|8Uw4vW9W#eJs znZDs~nZ!gW|dp_K5 zwJq)aW;(392;80sZYoCK(ICHi*3b@=Z}DiOus*vh7<+K+!102OJM5XU2*wsa!r0?qxre|LFc0y^x-o9*#$5|%k8G(3#w(D^ zaoDS^7?-tsjrWw7xU&8N^rw)1>Nn+e%D^xO-|O+cBpBoMt4#{p0&9y3KcRgxOMh3! z*g#*Css8}R1t%f*7{`9+XpeI5tA{J`m&BjveGq>WlBN=``9Y@L+Qm%|bt4~+A6vc2 z!!_Q5*BiWn*Hhk=560#jm|)k@mB07dC4Yu=BTsVwdJyaW5nV|1`*VHUud-o)!sqI~ zzO{bq)z{y&*k7|^B`(nm*VGk_-{6&GdW-6@N!AB^j#90o-L9%SRx+da?njFf_f~m* zWxYSd*{T2|Q{)-t=Y~g%wgT?sr=8O{A8m#-cwE{BgbxeUq|dv$%7@s#DsO#RFW{&L zy{9$)4SsK&+UtF?_*03Ej}~2B)eqF6D(@<&_k-_y#}WOq;%+F#k4;tCl24S**z|!u z5cM8T_C8p>{-No;4_Eemw4(3BRlOgX*88!keMicBADPnk$>Lth{m{(bLo@n5UeJL{vH2vYqk4*b$#mA-|DSu?j$ICuZdbEV9KUxGy&?>Rv z>)$x>&2N4Cg}?pI-@W+V@4fu}AN)|#>_hb@G&AM{&l2@BUy;v5GD&9KcZLG=?FR{Ut2F5?5@yks7S-Mi9Cyakt<6i?V z=qDJT*1|;kH#GhX<2O}3&G_9;d_xH%*5jb*bRAM>_$05iuXk_ zyQXRsVg^)<_~d;W|A4WF*i7uPHM9riJ#~S2FI*tr8yA2_{Zp(z@H9AfzRR(b)GvrH zWXB<;FBE^@o5VkHo_N;7$2EQ(mAtB|9rl&_`Q;cm?f9C)rLMh7>ezQyNP7CFq4I*G zn)1`23#rD)7j^9Vs`gE+Ji#9Y4VY*M7`H+3y6I0FKT-P0;`LRd{lMG+%zki21@!%w zdZ(>NO?|Wk_2|1_W<3cxy@>4l{!1ICZ8%z@b>TZJBy!`lYd&6f!}m76{DU9%f#y?* zzDJ9O4B4j=>wh5Wdq(9()BQpWd@EG@vBHm)BXAA$`}4$?ias*^qm@^GY}%2EN2YH2 zcsUgQ#FVR#mVL7HQzefUKU}rG>SR%IM-kL~M_F&*T~)tS@b7i2CeH_&Jt2mbSle;4zC>2sT%4QzKdvWo2k@zIivWY$;pbjhPddo+1& z;=cW@-f6dhjZa(Qd4^@>9pD+)q>W$LTiZ9yBd=Q&cgWNmho%0$-c%gSue&sU8QUqAESq1O+qxU2J0gab^ z8rPt`v-Y4lHY3$nvDncwd#UCpO4p;988xNf2JcoiZ>@;xiOQ<1H=uv_i+${{AsKz> zvaM&A4bj&a_M+acX7ZYXLg)Xz4)7#9nZ>o}hhpCzp>usI14NvWjBmShuZ=w$LZtIT!>gNe#2f$Dwen}c zI@&j6-PNt}qsDJ1iXNHriBb&1AfWGuFMW4|DWd2Jn6VSQ@Z)7yLyx^EnRcWkg^t)r zFw^_Mo5+0XKS8FP5f9mg(&_7(^Iv2-$CPIwnGgShWwKp3qdd3fmsz;E=|}7aUNVUf zJTgvXUxtI%K8{}d=v`Oa@hh_O6QxpyHnI$@$LQi#<6IjYPex_^&Aw^ZReA3$>y5%q zU6NIK_Zhv8u_S6;f-#fPi*?ZCpO zXNWn>m@{{5h*7Q4kE(4_ydHxt{o-2`=3i9(+*id$K5^}NlpZatH1qlemHULT>4alb zB-iLnyf-cYkG4JOKvVIY^XMH|?o@8KfUC{PY|Eb)#a?%b}p3(SCOegDhJAu$g zmox)Sv>d_I19_fRniOetOnkTYL3#j6UWN}mN5ppEX}e+@$UJN`Hkf7)q?_H!Q|hs; z%A=6pV;X;IUDsLHw!dma5H>BVwUj=g7mcAIix=9*9gvmezDc&o+_ z*?x^}2*Ls1dJbV_GK*cB>zrb-VOjz%>O!QP+@(CFAGr}DZ5T1JDeSu))p(hMycT8A z_T8k{D24ngQxdjApwm@bKW%?b82Yomow};0(Y3zwJXN0D8$YJ}A7I~<<33xEF+sbe^iHz^;y$dX5VM&paUxejLdv)HQ(1Nv(p_!N0z z{@P#vUEwyY=JVKpAij3x0!p**zdU&7Wa<7|@qLwN;XhD#YXtsp3TNMdkHw#c{ukwT z8!&v^Jk1L4(XhquQ1~W=Tl}>O-yDJWDV+5rAB+DEg>N7JzH!Mq-OSHF6$YjhP3}*XOGMB_ntY{$&C9X~3Jd z>Es~rMwRwgVc$4Dy8&<77S{6?|L+Un|DOWza=b5y<6mC@-c$g-ya2qb0DNr$`1%6y zYXNWC7Pcc#Xx1G9d?wnRq|OscKMJ<{n!@c|mW98e@P3^uu<#Bv?c_76BHmE`gBGq$ zl7)ZT!nH{{t@tMtzD=8?XB0lA-0=6c={c_OZiVw)B|Z-;e5b+>HyHSs!vCAXlUih? zFAJ2KPJg$uC<@I}fUNc{ExT(OK4B(8ydAtqbC!2HO%M^Yh zW#H^*@EKP4(+f>l-ZkLo0fmn)GVli!|0#ugi*w;86@GY0F1!{+h5Go*a^cr1{ORQe z-k|*VD*VI>1Gniqr0@yTF*9>yK>3{I)1Hg}O@$xp$c1yvKz$B(8u&W%<$V+R9ap}7 zV)cpOSHO?SC%MuvIIMi;0v^XFrTE7be@yW^3*cW-0M7YXv1gZIAn!Txb87+o5yjtj zxxu&T9as3V2>hV}d_J!DCl&t~{F2Wf6u|%E0`TVwz`vpVvpvGryuZZHQw8wuVN&b1wV`3h#-)UsZTE0_X7=w9iBY{)WQ6cjWS~#=Ji9dlYW#hm{KV zt~dC$U)HPer?(jRke2H|RJi|61DE%V`1w_Z_upvXw*G9vkcM(kY&Gz0+SIR5c>B8z zyhi!sC6(a!-)!Lae6?R!_{4h*{5A9Cea^yv)c|^w&leT$z1P6yT^N4ejCP3nBnJ$9 z)O>kQC_HQ7+V%K-g`eGS5H~CTHx%A8WZ?2X3P1bM-o^RnGyp00>754u7Ugrd!jroU zT;3_+=Wi-}+ikh{|E%zd_ZhhD|Ngtec;_Zs}eDz{7FPmdb7t)KTQ z{Mh>q-1dv_S9nqjqQ(ER!oB^u_%AAa^p0Hqmtn4y`fSVO;xAM9iSbeZ@vyT|KT?fZ`IpQBanv4IE!g+WWAB+E*<^Pz0TmCoAHhi*=8@R@Pfj7{?Nc}|Mrx^w|&mQk1GFn zqJKg=cz^A>@uv`8Ya3sP7CFYlMhnvPmb|3H38AkRZFr#Y;U zGnPivdq)jwXV(Dod}II*+1;RGdUu2Wz}1_#tnb|n1o*@?@QUso`wiRv>vm91XS<=g zYH+M?KOAb);GUt~!^Wk|$pSblW?=X59s#WmLB`pPsv#8j;-$w7b?!L@Oj38uQ3sM# zLvM~c;1LFb>;m=t1HjE0F*^r#juNX&4m;2vorJ97J%1eK+=`xD0vvc!E$HvVaYv?qL1ndT!Q1%X-EY`kpW8bQcBb^;ioH-VZv7Ma`xOZp>IlYf? zZ^hOveJecUQ2l#H`*6M)4l~<1a_j!|;MmAs`q2N2T1iUT=E41YcI>)N4n)h>ZqN!cn;A;AA5u{brI*0 z*(99zlqj&gkfV@*b|EKo@qnZJ1D^7ZJwn38e+QiNzaXK&nO<-43?neiJ%k6RSQR=Q z?L4QIIcH=A=kS?x_ToAX<^ZGfNQynWDWHl!h3&jF7jSY^f#bV`El(_Rl9+o8Sa5t- z0S<1wRXvx3Bco%r?T_4`#~ML2TbF*R%GfC~)gGFXy*r$kjeCY9bX9tI7!}~q-u(vA z&}pB^kPhFDy7a2_-rKb{#Q|+NLGJebyY)yo)|ac(d&hW+BRz1($mrniojdz?k}nR- z3{S>HV`fk0#KBosp{s|-Hu6}_8*wbto?E@0J9qEjx64DtKGd5|526;=##OW-*bSSu z`No52o6>vtjEoO^H|+^XskDoH)1K`PdEo;)bB^kyHLpV32lT$d9lM52i!91O^UZ_% zjP|zKhVJ?8cFtL!D5%?S-7&ah2bz7Hv1gAMqrbwGt9R_Zef0LRoiw10x^VyztG1{2 z?-|~?6F*n(9>GCZ_|bLiXh*yJx_meLHpA(W{-GNO@Sj-dnns2+Ic0Ywa^xuTHJ{=w z9d%|jKmTcHxksp(<4uvs?x@b@P`=pG8k$GWmUHdpM%mxAujDL`0fnfT#J<^iajpom zbMXfZ+kC6%9#3ajkeH{|i6-4^@)M1?_wR7U*;KsQckT&!KR*Xp>KAujpDhP8fBt~` z0@}>{^uUtHR(n=1&b<|ruFmtLw{oZnPr8if zXu1Ozr=x8c<2kC1rkGx!j_2oS4*nD!^J|kgKTXu;Nq&*mimKE2az`|aF6v;@!cs!H z$WL=tstD{}85Q^oIFa>2)Cd*gub?JFnfe7Npa*WNP4nFTEgV*RF-d}jQ8VP#N^j+8 z-HQ~<4z^_L%Dgnk4i182e>+y`ctVd2-W0^d)ZG^_kTK+89^3xMp72;=qi3G`ijy-cHRSmHyPnvxMZhpTz%nbj_pH9 z(k@(bP91u|Y5qk>cIw*8^ZH9a=fuQ?HuL5fULGkP9!M@-$$W(_d`ba1K>G*d0JnfZ zOmI%RbS*F$p4-%4{2A;Qd{#TU2%6mxoijBa&bvk67$%u{${h4}4Pr_<2Vw_hxzKf1HA2Uk687~aQe{R@`aaq%+k3#~WsW1|h= z8_NXc`6)gLx8W1|J`c-^ysHGmeAxHRoe1iZ5EG&A5!)m18ikY3CW9%TJqnNNvq9le zeUhqJRG)T*Q=e;G{tBl)E_|!Q$JHmR@Tfj^{c2R72OPQjQ>5EU|kF!3*TjeUP%Prs_@DP+}e4o!f9uh|F#I+@)?W3 zt=vomZuvi~aN6e`stdo4JMilrIPdr7WAn>|us1dW@6iZ*UI@d?M}G4;tN2m>shMKp zsm~VkQ$Bkfc)tVR>cHRWz>g@LdSYo*@YwS}dH`|ZdcC6f$qfNE&MU(DP(D$8HaT!t zpEC~Jjj0AKmCyW_?%QY z^U;N$cKEn{W!F(h%U8`bVdq85*E3k($A|2$l3(WIWrb6ptq%Oh3a36U+!h}4+2r8c z_1jT>x|kR|QGH%kr-|zGhQg`OO+sltDzR>k5A|{3c29g%AG>Zms?S#C6V>Onq_EGk zPYu?i@u5ENl3(T{rEu!w!n+k7)hAf54*ZP{pE1Rc>ht571}SQvN~|N}Lw(*YzsyI2 z!l{o7Z&!GpJ_?W8$L&(lZYdHN_ks?Up9 z=fx+g&pCxtpI;FS^HGj+o^Qm)(yL)hC7ZR(zuRjMf==RG-5Nr#`y$RS=IUocg%%FF1T$ee6Dns6MYL z{!hV&e$G0S&zuJH9o45>;ne3AgCd`s6i$6y_$>;L=9k@n@dohS^7XLdNA)?PTacpq zd{N=lN0$JLKF=wf`nd3y6&}^c?)!-9Q=|JqqWV%M?z1eoZtnAL|rOeO!3I z!^h1pyWb?L&wYv?)n}`3N_M;nZiF1>*ZThmUI?yT2x?&ufYw)#t7z!!)YTQH4{VK}YUW3a36U ze8Sap6xmd|Z9(KBlNXFDQOgpZ10E`t&QD`V2YxY*RS(ap7YQA6Fl{e=4fa z7Zg9LkGCjZA7A0rXV}rFUE$Qng>P{9xcbe>jg>Q5CxcbRpzIB-lA~oGvdH^ zE1dec@T|kf)yMA3i|X?Q#gFPUw899B>T{pMsn2bWJ`XFL`nd2X9X_r;c0XWLpBEHA zs!xAgygs7}r#|m<^vNom`nd3i9X_r;b{}F?pW})j)u)Gy@kH&jP2tpMw_uo$QHAr% zh2Q7!arJpx;Zc3Qpzx?Z?Hxu=RG)r@Q=i)nihOQUIN7;yxkL>x@^SUC`!1vUJfVD| z`uG%xC#p}6!uhpFFw954!l{o7A9DD(`q=%RQGFg({HQ)(boh)qa!)8c%IAdwe9jf% zWA}|l`P8g5!lL?YQaIU_;ICYD+8lu=72dCK+K2cSzBK~3d~Q}a?Y~cX@N3M0>y&`R z+I_51{hv_$sQynX-0H8x9PcTG_kb()wD2!P@I@#-o>90>mxVtU!MEvsKEmI^Pb!@0 z-EW!T+wU@gXu47gkEW|f;n8$$P&ox5eiKBi4BD*#(F)LjNIk(Ys?oY4 zaf>J?jhtwyvQ@oG;%uE*Udy|7qP1`ByBmeNiQ1}N1q4-zN>wV_TcV^2sNuF%sTm9? zR19KJL3G57htUhY&=iEP* z&P{f@UBjl2$732Xo@u(|54dmdnE4l2VcdMUy%VM!S7e_?FznM!8^Yv=g0Pbht$&z9^+qm`RzN2QP1(& zXL|Cv@6D#6j~)!?yR{~G_$yxqkN%868;e!*;X^I+A>Xd>IjZ2@e=V=+xkUw^sNk~| ze6@maSMZ|>-aYv2ItMHGcm^d9ZF&^T4&T%pYUKpPipD(1x zIL(SroSzr*z&v=2E9Hx(Z$ZCg{207xKGZK8r+yVY#?J+K#NwXtFACofUKhRv?)}*Y zFOpXK_CS2JKYQY%eK-L3{v3&3{g1&txAuLx=-6J(Z3mC~HMbMob9+RuxxL_?dm7wx z`^86d&w+dHkmxmc7~FG5!9Dk)_-O7pxaUraUUTczyBz&-cA=rwm8+;ca_`cUXKhcNE-nFNt1r$H6`KI=JW7#Yc0e zz&&?H^qM;h?z!{ep1UYMn%e~T+*Q$QZVTLV?}2;ny7*}BCb;MBh+cCafP3y9xaS^- zkLDhNd+v$oHJ5L!JhweSnmo6&C~^6^QFFV&J@=I8HTN`lER^?yd+s@Ke?BU}J$FR( z>OTq|3*{HVJ$D@3bFYJY?lkyG?aBXVoB@9aobMx+!NWfouM4?qeC6Hg!8ENE<)Zw5 z>d=$lH%^~zaQf%9({*G`PyPTr`taj~X?aw^J3p93uJ5bh1Hyko{CPbt?^^?U@7pvu zw~O0510MTD`#EcRM$eg^d=WghYlbi_mn(Ryg5R&;yq=hE?-BIAy*=Nbi{SRMq+W1t zFL}S|`TLaTOiw-t9^0$$*Cs3YQU%`xk2>}E+5#_(?}*PA(qo)<#V5`)-S5he?1S^T zBY$Z67K{#!^L74_`A~msoch{_vSIY+0=#3*M)2pMl=T`I`8@oU%D>h`;jDp{$5H z-=;V%$A!-dpB4Tk;fumme{w#H!e9R%Z4h^Y^Rtjp4ukvt9RV+rM*BY|K2P*ne4@|i zF#adN*=O=e)3?$(G1ZN8JU7gT`YGeoPlLzy>iC}%uH%1Ec)hG7&zj)gpJnhO$+SPK z;-mdp6Cdr*eQ@v3rs&mw3*2*ez+-zgcUOEgcOTqy`OEq~{@Xs1jML=fe;+*h^J1yU zvm@~ESKfxf7j^3R?-Q=$d{FqT_%FgVeBL8`13cI?AL-V5-K#fWe{jxGwXi+&v3`!fMvB(3&mQhc;O4e` zbC<+NbC<7fkVKaLJ0SNp~nH}2Dh7d`HC8a(P(p90){hAMonSNKd<_{>!J ztW@}{SNLpH_#9OD@IS+RyV^dQ8jz-^`UCz{f56>msKRGnd~hl)^IG6B&h_`2*1=<( zDBlquoa#y+{^zCF)Amw+_^IszkKDHO)1GCue&e0s1$fjGdh#LDLtYy;J^e?FQ$G$K zeZE7OmUZDB!WV?=`F0tc=MCnrfEUT*`Se4+CO)4N|8?<+?d`^68{(sU+w|K6?H+Ek4hs$1dXaRX=!tV#?2%zLg%2Y0&ti z^St>`KV+Qx5%8$q~n*r+z4lyq-mH&uxM~ zl?xvA>+7FR?9||TJoXBol{)u?e_8ke_}RpCe?0^*j30@Q?#C1HiT!vT$Hww{KHeJO z(T7ip{|tC+ukuCl(ecLXlY2co(0e@-AIo8$dl&qvTyP(6P2oDOHihdrd>~x)OCQhm zg#XXwo8^2NJnGbOxB^}nZ;6kN!+YWr<7XPA^u2+pGQq;GR1Q9=UqHtqa$2 zzF5J#UP%UN3ZI`ZZ{=CPaP?Ucu6lltfN$>x^zS6w_(&;U8^tv8!+9CG+W$%L=);vP zDd%^=qYujG#Yg+U4*pa<;9gJnr5xtDz2KfZ0`C2v6s~|mTlr|) zr?SZFT>NzA-nV<;QU6kwl=DsSs9*W6_-NnwJq}(^*X3;L_0++mo?pz8a?bC4aG#k9 zpUv^Sve&-_?)7(L5P1L33D^Gby_)^KPJR!C*LeiJZ|~;S$38l455S{-w6+u;gGc?! zJMf|{>e2oe;9k!VxYu(cKC@+Fo^{~Oq1V#|?)7woKh;m++RtI(n%flq1*vBhJnD(_ zIlnif1s?S%UlX5ZdW_S3@zH*6h>!A3@zL|-fpFcf{?~F+^x>BnnwA5?b$f?|>-MJW zf|e7vcl}-Y{uns7m;9pmG_$mv^ZQMFJghm=_251(e1mh*9N-!Bv3zF)>Z zn^z7W9VZR&s0UA#rEms3>QTNZKEtIl&-i^hUe5;fUeCqJyk69!eVZ1p{ht@E`iVCl z`+OzeEa#Kpv0eK5vkqPupAsM4U(@3ATw15V{+b2n{vw|@eJiaK(}Hon4qr4M>X(dD zzYHFIyHGmkSxdOSZoeAP`wQtM9_583UT=l!cRX=bi*BQCLns1i#u?l_({A^M^pME;A&Nz5s z{JQw)aa0$dIF3efo|yuV{wSX|eJed4(~NPRH)hR;`Z?p&FMvlME|kuB))cPinN{I+ z(XWAff9`=7NvnNZ7a#4ZUp9=XbQ#7B=){-=W1)AnXI^m40zE;8SgZnsK2QSjvI!-plN5{jq_{4bN z_xn8n=XfCBGkvS9vR2zS&g1UDe5ikDocbg1=;sA^my6HkJHhoh?GRoUeHXa*ryIOT zTJ2A-_-KDli;woFAKd#hD0=lTz&&>uJhn@7N5w~TFM@k6zgN+Ziw5+5TpUWS9;cmC zsgN{9-)@$-@~js;a+ME&NBw%7^7|aUo(br^o{rDw9MA0m_uM}4$kpR?Ot>C*6TqH3Z{<5tkMbUHABVl*MbhgyIW0aq9{R;6#=|V0PtSpKJdhWr zZ>4o&8Zv&Iac$Uqs2?#-{TO&`?*(|oVqCZ$r<20#qHlnEf2P2Tq}BdRi;wnaR(!NS z^Wff}CDE&Y6WnuGz+-zgw04!$ z>G#!*^SE0vAL>_)Q@;itebD1{UAP{nTf*z8B^Ep2-k%5HMbc=0_QXf~b09w2pF?o( z&xz>Op9i7mwj(UIS93dYC+gSSZg9`#_XwXPeH@RR2B7!jq7zMwTs= zJaUzfiH{zq{QhFEX90Szr+qqyd2T1T=T3r0{d%0v3D@JU{^LoQrqKVh@>ZTrgL|Db z;9lqaPvrHyZ!Pes{}bZB4j%O@-w_|}Tjx*amA#%WaIfb9xaS^%dv4E6_V>OG3fI1k z|I}msujiZPoZl<$bvB^)I`@A1v5$^7?!2gfP5e8tQ=@+6r@*6r?b|rG*E0d`^~{UU zZ%S^n!e_a{=V&&s?De03d;J|~uJ^xBxc0yGx3hofwN8E?w{PzT^uE1^f9J7}_P=xP zas6ZYW;yQ#kNTAlfJZ&re|`_R*VBOB>uLVo92P!W&pLSY^J7_3&bPs%9_9PuqxJOu zy}Yv5a|+z+IRuYf-QE*$@59K?WdEoiL!$(f!k^fW^N;nvoo|+NejmEmxdFY`S^Vr{ zAMM*Xc+`JY{OjORzw#OJ(Z2C}*u9=L=)In8$&J^5?a1CY-U3hrAO!_6t5DDj(_<-a&C%jtSTOH6{FCi2g44*~FetKdf^ayf8i|K6ne8 z6zTtC#V59_yQJy=Da1#4)Aa1yvgyfN;L!(s6qFOboEN@-+rWMQ-Us*NbQk<=vb&ru z%lSj_*e}ZY1?=IY%w)s9SPU*cJAl0WBB|_ny2L;cxe2cL&_}@900sYle@W-|FDehgWHymeb&|f0ZwYkB+x>aIa?r-0Rr` z_wjaQoP9U}k9wk?N(9dEP3{}s*C zat_?b+dO!YG&&BK#OHJ3(-a>aSIgp~yk&a!ZO!!L>)<}#Iu~;hzJI&GegB?-`*`d5 zh3pf3culse4?OmZ@&Y`3bi7T2dp$GYUQho&%we8efP3x)c;xEqkU8PH-a=r>4xyskYM~_qf@|oAu_Dk8+>uG^UuAT?h!6R4sK6uox$7#ne zXaC@O-1P|8<8DZ}>c@nu{#f`ob5uDWZst3Yt9%sP$Ke=wk@PxFE`f*77t#->iDteP zJ~1BlaGXwpb3BkYz^QMgbz+)omWxN%f#Gp?7o0xSPaCIx7Ch>_kbXEVH1nMmwng(=XQ~Ai(dVAz>C_Gxx3(=yASTU z55YaR^H-8_n*6xv0{7$M1Uz!}IPLkzrA@gXujiZPybnBbl^5XQGc5XPaIa?u-0K$8%!hjZauxllZ~tmGj6Pg|cPzSu z>v7sEye|6F;NG7;@FHooKLg^U{TUP=?avT6>t}yPMX&y2;GTO4JhoSJC&Wi{C&4{; z9^8+M1#mwu?tU!=rYUmuI9&pdzTF4`rd9CBRlY7hdYtl?x4fRVU(JSI&n9@}>T$XQ z9=XaNf=B&tXUlTlwUX}y*W>P#@LAE12v_|j;i^9t{_n(R`0I~zm5+k^I2;2n(rP+R zE{V?*<3W64JoMr?odoB2Aa9tymCLJ58Rv0#*L7Ef7ZlD`*UA>v_Bi*-k)vJtN#wT=k9{X_G<3F_-O7!aL?`hC&?g9eq3~c z`*G2QU(SeJJx&L}qi+|(5YrHN$Q>umg57R7e`d(lq`*ZOCLYn=<=th0_f z7r|L4`I7iFCHD~A_sbEu@0Xo#Gu?jSAO3Ujk>J7t!Z&@cv}?T>2rO5T9m_D(5r8wVp%a|3UOe!gaga zem#q#eyy_;oON!Z&Mxr&q>nnuyTzxOIHz%N@Bak2_kZ>`@|r##R=}g4kJCIY?}0}> z%D2Qv#{>T}((7sa&1~xR?1Fpl0l4S(tYx35U!UJk3D^FQ2-p31Nx15Z-+Ju-AM?#} zJ`5gp>hr<~cwu}@e00BG5}(+=$Jp-^;N0)zlcsN_bz-U;=kssFe5ju?PW?1^^z%aL zoM&^w_4#^HcwO{OaPQADc#*W)w^i}c{;Y|Q_UAsh_lG4sHQw-mkGFB~*xql&ZC(7I z_`F9AaQl5}`R??yhLCpQZ{c<up3omEV0= z7KP6f$92X}y*_CJ_da)lNACCHb}UZecH}BQ4IX-W2I{Nev3^XkRQ+H{^ZS?I#qC&( z;CA@OxN65rqr&z4HU=L4s^@E`;Hsa1zDP^0X9_&}`JZq*7Ch&$o&qb)K@G>1$|?(33U7ylS<)bn_Z zdQ?9Tz2`Q?KYYfKyDa=Q$z8Er>eqy;eiPhtABcbCE+ThV_^Xn;C;qB`C|vdB$uzC+ zxt(#6O%wavLT;Dv%UM#+`S-irzto?CKDg@7fqU+-_(%N@kUJv$s^pG}zv?duS3Unu z#dD{{KYR|6J0tvKlFQ$t=k`+1>s1F=J%69qbMJ|NBZ}%9pN`6_ksAUeqXri`8wLSm(Ty)-eKf+;CU(d8})Q@3k`V+}jeJ9SlzP-KR+`rxJIpmb^PfISJ z=b20W0QA9CKU|S}QT$_j3*=rB&ew_&&*ypOQa>rVs-LdNofrRdoFI2W_>~C6#McGP zoriu|a#eq?B6m~#%W(ytE#aSGXj*QIzv_2|tDeu3zJF^tA9Me1BezZXCndKXoZCx% zmvGhddD3&wiGS43i)0T9pOD-_{8c|9T=jfj_1wDnhfjewyA9zlO74{StA0kf>KDO1 zm(QQ<^F8FQO72G_w5szFv@cxWFCU1%>W_r0z8&Ww-`;L; zZtoOwdxT%hrId3%PjXyQ-v@ng)fW}H!{Q(H&m(tKe3Va$&wrMB8s@VCpS$KmzF6VY zG@o_&@OgmSOTJOzvt>Tp@Yw;U5BXt*&$0RJ!H2(KOds+doDV{#{W%5B{d)kPK5+Vw z4_Ek%n$ID8E}9Q{qr&H|`5eP%#(c<|6+SEGQ~P6iP_)d4e5=A|$9&r1vui%&#}z(2 zFS5^_@M*{SgMB7H1@8N+51c;T@EI^4^3e*Pi{{e{pKKn?Lmp#$gEO}Yf1dxySHO?VpL(93SP%8>SkH4i!Rg<^{cbGjLp~rr zdOjaCpLN_HG9U8s3ZLudvyJ<8^C6$B@L4dQJ=|Y1AM$$@KCGAhIfQQ0e8~4Jd>(?+ zr`C}N`;qyOcjEEbU)twxaQd|4elM2XU*v-oK11L|^2b}cvY=tn|Cf^F*(iAA#z#tg zKRgB=xymn!&+lc6ay}0ppL3rVz5xCXIBQx4kKADVoNfg?a+TjReR{Z@)=f{o1s;9= zuY_s2U%?-W|92!^FV;B{f91!bk2>e@xlBjAh)fgfCqE4y_3V_2JnIK%AJ*VAVm{=f zrswBV7r~2U8}*Q1GW`nt$4yT@Vfq&I*TK16Zqn!Qy_xr7|B&x}XXb_R?Ngcab4co2G2qiQYx??M%$%PSQeXQ^ne+2K z^7+4f#@&P|I{T?_!2cUks$Uc1kPR{R1 z<@$#5`=XKRLjPv^1 zd>uj`UgvrM&!^29yFWEBAKYDJ% z^9<|fb?#0X=k?~MjPrV1i^h4~tB1yU-JdQzSu&T`-)osx@BGQ!ms5B?qz|w2 zGGcuEZ5$WIo8S+O^Liz4=tF<$C8n^TEI&a;+HhJYtJM&0z=JG2q^iQPqe&p)qo7X<~;>eBn51b#laqj&2w??I=-vxw&at3dS9vRSFE{6{Ym--}F5jv*QgfavZS)6Td-?3; zs(-P)>UXDc<#yxEI?#=qHyW3(+`fI~^QyW0%1a-JUH9hgYcIYwa^r>bBQJc<)i)=u zjAeG=+Leiq-kP}9fByW3&Yr(<_62$D!#5@y*KWt7XU_`$;Kao3Yj^GhPeFOBuij}4 z=$#kdj~Z^i_2Dax@4s>L;pJ_*l_&Og=eJ1m5>IoF;Ga#m zq9?^8l5e!$la+gTgB$&em+pA^_~`mP?@KK5@wO`6%G1z4=dCA~q1CA`-3d=$e-!KU z|F5}@*Z)F#AUxABcyjvfe0TQ0lVqf1C3cVr7}Up5JA@tzSp}FxHLy zc&X$0?@#L`3%-noI(>eOd>g*ySPM~%xtKmwv3?WlbNjRU@n>+{j*nw~@BcQ|XP>w} z>*xI+O6xys{NKa&bN%~QbPAfiZ`?snmGA!$+7iOH=;DfsW~`)6A|}%oE3G7RNok#=sMz9rxUvEbq+m!GlSw;P zuoI=b#O1A2v-{8`4Jvl&KGww*SDs=siTEB_qn~kKRD8xQyDz(vC*6l`eA1Sfch0@% zaL*j(!VI-q_jNuY_uk+A{?GsaKmT+8_ul{g&z*6ETdW!r`klU0ImT+xYZ+UhwIKyoRU!8-j_zhK5A>hKCZ?h7*bL4JQ-v4NoSfHe5+0 zHf;RP^oHPfW;Qf@C;F!*zAy%I44Rx16&|MsJI)R{-E zO!AbrZ&GD28=Nu}WSdZ`{Ki)($H4PYj`Zu5zqkeboywn8S*hzXxk6orf1`EjRdJI# zPTJv6NYzHQP_Oj;wsKw^544OsF?#e=U!%3yXMBsf8y=d4qcH@>!>!S~O1k=J8xF=s zJWh;xeA}dXw9;#T^e%tbOjg6K<=K$_o;$kGM)dY|U1$?+7;`#k%nmp%HeW2yZU83K zWz0XpasK1-poy0o^BGwG94tQ!%kJ{%U9Ve8>z!u_*uZ19%`Ur>kCTT?pJf`$xg2nu zA2H_Ww(;yot^N(cBU!Ls4lyE*rFbVC`*J&`w!2}w%&wQ)U!;@97~id76MV!6$0V*t zV0|898rP$+9*6aAbK+E|c?kZnKiL3%Pvd3CANnE7UfyK#7X4}yFOD{zud;Eu5^2^CV!$pBv>U|GX1o3B zAfAG-K6cIKuBd4^VnQE%DDcbU7PPa?V0+g9vw@fhF$Nfj3!B0C2ni-kOycr!tFhII zl^GL!8e?Xbmh-gip=BQ|e}BWqi+68mxVRh61JT>B>Wbb|1;?a&OwE{w7FJ_s(_rR- z!Lnevb19awo-_9G;l%a0X!jYDUTiw?xIV${GP}lf^BJa-?TKxOZHnz^T^Xp9?TBrM zZHfDeU?0?fsr|6cunlqF{4WP82VouinF8oPaeW=Emt{R_t>*upH2mKu{12VhQok}R z{2vqk@5#^~?Ek(D(|P$Zx`H2TR`8=A_W8hfxsD&Lbr5s?5N9P&H`K2p9b*yoe5yaL zbDuv{aNNRm^nZWB@k(6JhV>G2ys{k5d!rjp&Zav5p#L~s1kM$wp^rcw&vU8x({TOw zlXqI%H$J?(>Cb9*b%nQvy28KQ(p6*a?rJu>UtJU0(uI8lo>NO~dqJ>==S1hcY0SNF z4&1YJ&hl+=;^}+4oOCs?&FghyT^`>H5EoqLVu-s&ioprUua(wEVIAv{st&nX4=v>l)gdgaT_dU7^;*QTx<6Dx=EEuFLZ`l4vPQ=U}$G($cyD0gWV zT(8420Lw7si*3)oC<6_T*K%0mu~`AjkYX&*Fh;6i*#muJ4)n#@a7`k88lruuV|uoa z_2l(xU~000VCTv5@~o5PrEu+IOg5bJa=~Xa<=Ee@6W1Mf9Wn1L=ocX7{8^7yp3mBN zYZTIDgP&9N(d?J=(0=K#cny{V*H&w}1{+=F8Z5p1Gru0gV+DQS75nI88P~rqKjyB{ zk6(I$`Y{YXcKWQh!ZD23W`8%EZ3f{wJH@sBuOUwJ*XZA`ykPwsyjYXf0LMP}0sjPj z_>Z9g>M7jd?u(ESM9s^4|2<)eePg zY=_AgY&-mB`sSiF`ti&Q)Q@-$#Oo}$PP6p&Rjz#e8{1lI9> z1+RPf8pXYK+0qp;8|{0N@9py2*PeL)kJq4hufpr{`les#I9{+|U;pp!;`@Oavk}G^ z{Lr_p7h??0wmZgv+s=La^Hnyy_fA#5*%wIp;2JVz`Q|e$A71C;eM?o=aqIc=NywNNq78*$CNWo2j`JEr|C&^tO=jZ;h3p5D z^Wl67Z6Sq*X|dmP$J5>PsdTiFO2_AE_>764_we(OzFcEJvn+%-zrnrs=%aOvw^mr^wo5X)yJ3mu5`zVvG3A$I>8PfN40Rgj3+;b zwe$M$znydZl$-0C?lCd$JR7!SwHA)eROP9F=Pqlpi}9anI@#Z+d#uGp9XP*C z+KAJn@8|V#d~SrtT0z!{Q&W(?^ZeZP)AN}>=Eu*ixa`koe%SxX`s$d*cOKSS z6*<1rFOPfd%i|&ac1xW;T|esU94>#l=UT7yJ!xK3KKJy?uSc-&t`dFsb1h5yzF561 z>Dx-(uIblhd07^+k6U=nd4aAyXJLu=HY0FNnL~4AMqz!1?rp|keFD}8V15c*SKISb zK2P&oa$&9m&vE%1HRt7T#he%HKXG2m+S27On+v!F=G}3Ortb^8442`W8_xsw^|v4D zegUp?xLgHk*Qf0iq=kNO!`v1)r=Txq*JNjXyawhPIey)@M*r-4N|puN6WYw47lCc( ztRLNG!F(5JS6j#Sb=Hq=D+V3f-qtY&ob{vI7GUlR`#Al6WNl+M7#o~d`h6a@rxP3C zf4Gjge!DY|wCxPe)q-=9-NwUkFIWxZv}`~9csaT>KdU+CxP`~aB=`rH<^~b+w*x7;4hf#vDx+;_{NSg^pUfEblWt< z9{A7J(T~ph(QRX(gO6<;eeJ9t-PQ+sqPh2{*niz*+Aq6pe)No^k(GtYhExd8p^#q*u>)AIuZPeC^|ST}+g# z?aa@z8!vPJl2LyNb}+45$MsXt*DUtc#bEAe<6@$4=X_s{Z_yo7h+Xb0Ft{%%jlVH= zxuz~zvu!kz4VZ_T%0?sj4f|R2-xfHY*njNTRDH}8v`?x&W(f3DeM}5=S-)0u0@~`K zDZ6f>TvH}EoiGj4Q+8W!g!PS6*tUF3ztH<9sM8r)PdG-C`lk^wcKAZB%P{n%nfrWw zd>F1B@E!r@JiD=G+_|%9UMH@7ob%uRbx>cLKBQ~07q5fhy!7k14w}uZU6!tcGE0~F zbx`{8^88!}rJuih&60ka^sj?5v6<<0kjeZ1<2s1y`Qmkuea(7w+i%l#P-gv%d!LqB zI;VenzOREaE7RKR@_bzfrCWZ!4jQIs)%ozejjzknzkhb`Nz=_2uO09@t^mdu@cEFu zrp4z(-SFMH%*(MJ`VD!{w0;Wj-PumMWn-Uky7{!vyKD1<9J5HbjLx-J{#+RP3A``H zxnTI*7{5OzzvC52v7g7;aIXDEJFOqS?-V>zV{NwQl;Qoi!|<4)`yH^%ed4qUr%OMk z+;esMX`FL4-nVjonfMdGqqmlHD}ARgRr|>A_dS>PSzDa$hB<@FV`JZaT#`Zxi*}6 zP29%m_t{5JIdiGl4{JN`lZ_=mWSYO1AJVh4y9@JoY$W?3lWPZO{@8Lqq;F$=oNO%l zA^o&RPhnawKcr`8cb99!@dI90@b{~6UU3~u~{WD1^J`d}T({YXEo z&%oUN0F-0p@8a+7Le6h<>CLCd`e6O!b(_2{@c!Qa?k-HLulZ&~zv!lQ&e^Hv^G~N) zFXWzUz2x<%TQ=wY25#9>*K0b%dL`1V7jn#4-CdR9#cBbm-_9c_a|&#ihJ2cF2~o4o0t6Pa_)7Y%e&9_ zv1~f_`JTkJA-=03e1&Os?DO|n+_cN{cVlqndb#nIUcFqqyWl&>nbph9YrUOzE%kC^ zaOHX>mVB6AyZ5ZKjxjA>*$i_$QuXuPKI$jELXtg@J$J|P7mx+I$TX|fcKezI@?eN^n%rzhK3>H66FnmE};ruQzH-LI^kmwTRA{(iJn zdCAyY>HL_gUNYX?w9ffARbDc#Tz>hvc%^voI<~#z#QQj2DQ3L#@s1_$d{&ApuYA1Y z%{!k|Z6y0l*XK?fdF7p|?PQjO9LQ`>Q4d}TXsT&K3<#_-B^R*u`$wpWhP z%=2^OGX4DA7|c9BH}2BU&yBH_^OOB&O`7-Jvj4<1ncQ!?@wD=FhZ~E#yWALC`5MDb zS{kfIPJq9u_*J|S@gV5i) z$Buhky2l0|cgfdbZv4Ax-1ttN#*JY&jT@t>)2tkauAPU{`J0INfqZ_ zc3q#WZrAn2>g9F)vAW%Kj~A~xq<0*7`zuxcsg9{k@}FM1?p<5`Qyq7i?X%YAyHw>& z?>O>~r&Q%k_n6AWpXnWI-sR-HaLxoj8;Zc(34ZQY1?&8*M3&zjV@aM1pq~rK^0{f8 zahX*2PMnu)Q#akpdC4|&)2yDCjB_{L%6Z8+cGGz0HE5qplHWrQ@0MPgQ#rfz?0)&U zDEmqKc6RApyL^m^(>Tx9)x4%PQ%I!xou<2&zsE57sY!;oJ^%6HzqH+$vZPD#HEB`{8j z^I7F@sW^Fhy$kQsDt?*w@Qa%+*)N($zm%-eFAb~sCH*pF?w7??{IcNT7dKt9Uo?+? z@vqS@jjQ-2{W4_km)Q-@{J?qp9SQ3b^R&G{+Y7X9vYmG^xv~5F9e1T`^kefXess&8 z+?KkpaDMCHg?HQq*65d(Rs8bXe%zI<(Jy;f@yqjh+|9x9g~uK|he}+6bv*8HeG%62 zn8S4gztJ_A7c7V0+narCU2Z4*=H5@>H}`%5zq$7l_|3ha_)P5Wz~Cn%fPBO!BQ0e|OXz4{G|0R2Xh53comFrUi6e8Lh~$9IZ-`y{I0^go$rX0fQIw@aLy~v=Ljs#xj%X;74KKPwZy|abJDOMTH>AW1*OWv zt4#PV9`q~J$G(5Zdf~eLdox##TTo|P$GYP>>IQW1i>=%KA^kkenF7CE#Pe{YaocEF zyJV$qmoHGe1fX3~wF#8#X>JGnE)1??{^5+;A+HO4q1z07Cff}BPVZ^TjiY~3)wkEf zKdqocS#3YmWbTI_&cg3U&g1V#l0U$giDuJ~Xf+Qd!sf|^sJY_lpHzOsSWcyvgO2S5 z?=7+Gi0cJ72T5$>oFsT}h`pcvJr4f99$1WRn2Sh$O7)$@-pk_qANKE2;&-_?E%@Ai z_YLNOK4u-}&p&6IrDQWzyH!E^SWu_rcWcaCsa~cT`2D(#bKobt?@2ce^7#D%OpEnG zyQt-wGjB=G6Mxt4HSl|L%ga);Of!pUBVX9fBptRZmj`X5twN9TgqGz!bES5f=9H&M z*v%weu}Fuuu{=JH@|4r}7x4El0{EL4^!sqQT`so$&~Gqn;5-5S$kO*7_;?%?$0HnP zaNhVwJa2r{J#S=ZK_{2$yzxUkCLf_=vIg?1gX6Luj!O~a@c?`$PHscYByE?gZSYyr z{xY=3U#{Jt=U#ovBR{!X%=-Y16p>%mqXw6pX6G5JoLnJc_+`TK5Smm#hF z?zt`IL{i@PK019YVgG^O3$9t}KXyTV9gXMRqaU0(mhSILf{&8UefTc(1f0wCxexUb z&~=}JdJpIrb72u*DPzmy+{ban*CaI%TeT2dHL4Bp`=O)R16C>>f14M-dul-)4a~E4 z{`kAi&bS8d%eC9sdq1Xg8SnHfF`U2iJu7b;$ayic99|5UftRVcknNA;GN9(gI<}Vc z*!Sx9ZlWFMm|4yjdhpn1rm};5Vk+I|p_h2*eh=L_CoV5%z=JRI(91paiWGXZ$b?j^ z!nMSUG0eX=Bag=yW7z4V@R)ib#qik6mc{UtM-1Ds{bE0yx=(+xA6}n8AN(fz;rW-Q z9m95PzZk<#3;TL1r`L1WGd%fR=d%B^# zWif1D_x7zYE)jWgTq5PYeX1DvZ5o$w-dW~c*JA9-ZR~gDHeUD2?dNmc!Q?KBQTw`f zaCwX_-LrMS7^D9#V>HzMO#~EZy;W)3{ zUd#BdO#kbQ(P5b5>J_6eK6h9?ww|i*`E5GCrz-zSeP=5EH!{3q3D1A0@VO{Ii%d5?&Wpgg0+9c* zXOWQ<^GxuWV-4s&H4g{%QqYZh7P-jvjNg|FSxbu4Q)%!}InuA0!6t}@sk zhy6ZSLf;jFbXd>VV)_KEV;c;B4t8uE?fJkywnroAklxnO&Q=&h#kT1YZF3W8{G9g| z*mj=t?(X8YfI7jv5@+7I`&`)BcApF5wsXGWeEKrXXK;=AfUjxZ%dU&w^})IJM^AB` z#zh*pPR@LMw@$e2_D%Q<9%BvL0BmimGsi2@@3>wK>*#A-hj+DBaz3MJ=96VCxQ5*I z$RM02(y(u3YCoIoTi*7q=TiQ4WPb+cOn8)E+RwQBIb=VUY#-;%{Yw0Q71{TtXFuce zUrqMmrb+romS6fO^BPgweY@P_D=}bxqb2XPcx05T(U3wS?ss?J(Do+?}+{0 z)@SwnkA@@D*hcW)y?WRO{g~ZPV}Ay7XO2wKK0oX;(D&BBJP_6A8ffz@Js%b3uEM;c zQ$GauhcnO*SJM2VFwFme_gTVk#y^zkG$#@ELf?x!dk<{ptBLFh6Y355E!itFj4g2Db1#oIEcG&yUG@C-2wujNo?z zlIH&4Z@QI3IU`VanB#TEt=oE-W4P}!)B%2fZ6BPA8`Qo$s9(bwzuA2m(gTaz8(@y# z+!a6k-kr1qzXxca%eTO9=D{4Zq*n7>#DX)s1H)-VR-ekVTBNBe}n>kP6OpN=ng zUv|o#2jy_%bnW#?<=fuhfM1WN$aCKc$4Iho?ca1%zl(PhwNoSb9Q;0o*VE8nUc~Dh z(CqC#+Q#;ai+Os`@8Wj|z6t&CH=!R+nhW}o)O|M0&p!1mUN^tw|2p3#2;^N^D9;Nf z@HVD`>jRyUA%9m+F>)x#r-@ zTYJpO+2}o0P`1}Cm1_#FZPCZ*ujpMjboJz&oLwrzJ-07$E87TOjO9H!8At zH5+f8fHFpJzq$*3x0HVdHpVdh8q>mk#G2E_pF`To71Fx#vdeBCi2XRX6W#+wq0QiX zpr>N?a@VQ7W*4-pziV&SROjBTi=BH-8*S%;wz+GsIZE3h*lvUE^$<(Q_rTwJ;HNtK z%43Ur%{5(pp+;EV+0|EP!SdlQyk1#q6A=?n*nP_5aIf?z94}4`LR-f7n!HYoZ^w2X z*j6?~yW;$8w6hNGxeDNz!u5Pu57;)Z-;T!%{^4&3d$lhFES#5I7UOuc8HD(cEj!NT zvE+3e53TVy{@L?<9LqZXw-x-+pLYdZf_(~pC-aHfb>N4dJoozm+=rb5f4gjI4r63^ zMStM;thcA^*A`as$Le{PKwp6ED!=dS?xSn0`!gBTJ$2r{n!3l*th?s0?qh4L`?DF=eRq&E+Ks8g5Sqa9=pJCA-2<)rkx^s zHketu-CZv4KKF9V>&Nn4#PZ^M`+g!a$cYTz@s(XO&zz zUJ31QkLP0?z_`tk_23hHj@d}h17_jHhZrW!gCd2BaU2O z3a$Wt6B5e-W5clDgiGo9oo4o?Bp@L^w;y-hcZA}?eYX*OaRBl;GKCFi}D(dd~X-Mj|2S7?|FCzo>d=%Hi5reKmT?EJ~t3= z$;bT`Xq!o~A7if|8^)sT_;mc(4|(@{_y@`rZzunxV%R^a_c{K-G2}4#25rIf3j3Jo z2Omh^a2rcawl$W4{e$Z~-p~%egU!cM%?kaIJeIIubMrY0&m`Qw5yn23o?)lzAKYVH z+GqnC*p{xH^!p0?_qEmYBx4^h15i)+TUJ)L?D)Ic%ll_M)&?Q1;NY0EKnuos>;#{) z=vYbB*Q2dbuoa>)9vs)H_;=~^^5s@*~G;y8S-JDxS|r;TRf+ zV~Ep-(~8so-N}4wTKtx-55wG#=v`a7qHnp_*=bJ3`|4tg?dGAltTWq8|5!P?RPIcU z3um5(JtlZ7j+a84K;Pj$vmAnF%=mlCGS0F8$7k$Z#&qi~=a+!b6Zn3fRJJ?eoRO*R z1U>iQbm_HS@|+he(`x7V)`iv2@#Vnac^a>o@H~&#N&Md9R=N(z1qRPQ*>HX3o`){Z zegI4{$k+q>b9$I)^7qwu%B6U(vJVGtgBpd-vDUyOoa6JPY@I8zA8P zxPJ5DH5>T&db%cc=kTrl9Y@YHI`NdNoqWd;+Q#yDz2gY?;kl~LStf9a{;h#H$)|fV)bJT4YDGfJ zCoM;4=nLcugof`UL9JM5SU1#ig@)xutx#w_(tM=haTpWN&{ukw5( z^0{LSS>Q8lQ}h>}L(zW_6HC8y3+-W_14h-mm>^!37<`u>o+o0!;CxNAgYAmz_B#wg z-vafL7L4{gM*Yf_YJ}6<^0pIPdP2e18sHXO< zKL1UDz%847dpi#L4z=C4zo}tQn^S6I?!aSa>yq3M`9QeExBu{=i0|GOU!c@?vkwy8 zc+*zq_ck4FkNCnJhuR`-9S5LssQ%3@_a43vj$!!!jhk+4-nuDJ*4%*qp_AbAfU~gu z*W%lR|7??O2ioueFtBVs7(Uq0+R?J_-h&+v9B627yRS83et6w33zL4Z@bho|#|OJ% zE((6;gWo!fp9{2IVtwk9_&F22+5Y^5biZZeW+v#Q9}DiaKmSVmw^F)`K_~rxB|XP7 zv9I1?Vs&?znHymF)hc72xgGvs84Je#tmrO>e?0hf_RDJE5608t!I5vg{>>)#l`3O> z1h}b6V-?>Cw_1>nKR(MT-!GheVtcKkH&)d?``Yyuq=&y5_=~}xsWisICHxKI(m3h9 z9{h(-{Kbyz|K#Cd-K}NYe{nb*oVw;m!AG8&*wMcJ-NEB8`R5%iub8v``&|!PZ@cHQ z)34olcjeEwe01k8uD-J4?lZr4`q1}Bt^aW1ZKvN*w65~U&)!{G|FQR4`}P%_zV?ZK zvEER0XJye1_d#B<9UU+I$Zel`pgVZm$M4!c{HBM4@0&OueDWP{+wrr%e_OEfr~hlm zYd2o0{HwNa2mkuv$4>vCBr@#2Y?8==p->TgF z)Jv?#Kk>TLAOGfM>(ua!)o{&w?fN+F@V(%Bzj7q_@%j&K|Md5IgRR$}4}LalV*BLI zR|gM%^j~*;>J{5|{(Z-jU;EOVA3OcC%9_f3pE|U&=0CkW_@1A>@$~=t?;p1g-}9!^ z<@cG&k^Sp;emDBbU}AF9>9^l|b>)VV@_5-x?zQuA;^chro%XtmSg-lL zkDtD#VSVL4)fMf`|HPRc`~GJs)FrPn{+=y|e>dFqo}{>A#!bI(@ZJbB~SN^8%YdiW>nDzAC6?DR)B{<-z%?>ey~`rx~Q(FZr} z*z?el;I;4ge(>dA{!aN_@4hAYAK#NzIsfpkCt81c;&kLocU6v@zjo*Lyzd8({Atap z_k7{U!NZ@p=hUB``=)i^v)`i9DDcYti##Azhl$Y zx1B!t(YI87y?G+O{~LcB{Nn#!cdGH9M|b44hASKYx$lX+|FUoA-LJ0+_W!{TPXE<2 zcUFF7-})UtD!FsV;^Sw6w|wjC!Ir({?yq&c*^?n>Cb_G@2PzHy1t!H4_*^|!{6qfzGgmd{XFlTr^DaQ zt~^?qIQhFj`%|m>&Hr$!-gn08cFO+>2?!)3-mwm@wLM?d|G1`!~|w!Z^yc~V*e7yUHG~C z7w>~@_*fsa-fx4~SVI7R|Fg5f&z)<%$C!LOZ<|@`e{a40_S<~^x4!*dn|Omx zfRupVWA6nU>tH2x?O+xFC$k=1cOn~d%RXlt^1-fA;_9Wp$o6E?V!9sOynw9sk*kt0q)5{z^*@*6Fy_Of7i8fEYH{0J&}Df>qHLL|J^oe z?6Ox8JN_zQL)Xs#F0ihr&R>l-v5xJ;^*D8mCD$>rRJLQp4PqU4UK@6tIk>ccY=!-m z*Fl>54jeXF*T6~+k+7;hxFg5>^oo-0O?%ig#g26b3%>lb4lJemtTX7m<)3xt>Sbas zC|SspDcr`-%i$08T+%r%ao;+#9v90#>kMB-CGT1XFLX)uS!dv>ruy6f+k9-uU2pWz zD?RiY4}Fh^j<+?b^8E^Xi`(qCt2B&QP{9#yukA1wrvLF6Z*?-JK|FVaU z9cC&!XFT+ThyGm;{YM`9xQG7F9{N)r`oDSTPkZPu1=pvl@AV#fz(e2Zq1Srodpz`3 z5B>cf`e6_KLmoPOXDMZUdp-0|fsXOXacQ3mz?Yx#;2$Tx;{5=@$38E>@{6Qb(T${i zJ^+2v!_FBG{o5Y;|M1Yi@1g$?bgWl-6iW%`DLi?==f|YSk2%}+c?4E3kzV#GN4L)( zuzJPAeh&2Usp4vbhh79amS^^aW8XgKz-qvQf3t^P<)K%5==XT&zweKB!LK^?wa=Zf`iH0+xK^PnH~U-(dLQXiryQPjLxWfi4SNqC*wfIk^~UnDTW&I9 zv%Ks^b12dbgIfm10NNVx4@Lv_H$2dBu)W#U_O^Gxh{h7qc3^Ku!-2!??XJ`jZrI-x zP2Pq9FTMreTKkUMx0*=PVHkbF@wA59F_(id5N2=LBLxjOrg7jtvo{Qj$X~D(fKiqz^*#jm!_LvAb;t-5`w3ve(5g4Ouz`E^e z3pcgH7}BA=1_q<{V%1tqd&hm?hOl{{1xGLrVa?FTk%mZ1G;;W0i@`CD278dhG(j?K z-HyXaO&9ST4+-0YoK(dFP3>(DwwU``A~>dH4jqEgNGQYu2iqboHnMY1)1e4f8OjG$ zg?)}o>?*+c4a5VqXVmOzZP~NW9*0?4Yj}W%Z0vwtg#Qbj(6#^PE30Qn=WXha%uS%< zRhEx-blRz)KTtY#Q%k&`c)T9K5A&=KIr0)8Abyy1=2<_h_;TVCif8?T;yK@0#k0=m z2d=M0_U(&eNWoczu6XtXJomFd zTprf@6kkX7k13w@LB(^uh7`~GsNx&R{+QxfpHX}(@fQ@&`n=*fUpznJhwIC_5BhEV zaC?QxehKN!vkr5vllU6qD-_Qp7pbe?<4yO#k0Pkct7!rif6ruZUxz&7V*WTb9=GwS3H-qRPn5rD?UW_ zD-_RqlytoFdzlj&_WyjnfcozVeOT~PKPz;+_vFtx(y_ks?sb}UOX;(Mx9@_f{BxwU ze+=oDG*1~XXrA;%#fL~|du*TeT*?RiP{b@Oi-j)zP)a)2H5t%7gywr)@r7xxTD-D<0kpW`BBU$vo@F6hBDY zY>#=?hZR3W+at7Op7n9XbNUIzvp%JGwtH6bto!XCbNf$jr&7|nJgiSDew6G^DW3Iw zYCJyP$A~W=o$a&UsCc&1ta#SzakvUT7!P!dWpBqk^dS$OhlI495*jMfdM66-;d-?? znVsSB|?1X9GsItTQxQ89H!AZ#F;p?*;(z!gW=aP=*UPF1}qC)5! zg&tP+$7x?g*=M~|*zpNF1IkXE_6;gKtPcr0vYfL*f32{eLql@xhiTfEOFH|3^?cH` zAI60p47~!fGeNoq+fqL(>|9T*z4#qx1MSQ6LaB#d z9d}{U*$>?BM>TI-H>Okbq{kE=BE4JjtoM?RekdXq7b8NK{+ST=vA(&KCQiBq+fttt zcI0{Ftm4UxnHIb}k6aMCJdZ4r&T%!*hOTv1*q^NDkgnsZQ0T8?8?X!sUHT#7q4#^} zgQV*?86w?+ykz{030}s@IO$w3j+40NsScBxCw)rs91mv|&-yvib(~xhy7W&DKDU4m z*O%iYmvjsE$vDX;9qr3FDO5b{wm&|>%Qz_&x{Q-5(m77}{xC#3`;+x*VMq3FjlvF= zpO2Yl(k;-W9uam*?2YlztdxX0`Nb^GwWrf>$s{Fy7W&o>0Doqt5(u2ur1@NUD%Ov6;V7S zvp+Gx%ed+lx{RwK(%GLpUNB600IXttSsxL0WL!-MJ2HOaq+4J^>XU*;`#p3YK1F%} zG^r;9k9KI&oTC*BG^x*!j_tAu{`gb)5@!u{*)Eoc-t3{blg{nP_QRxGAYgg;6B9hv zi{rDK^Z-aw@6|jR>eD>w#}v=;*{^uk2T9j)8yC9tPeRzodU4#IBi#Z`>eIrGjN2K- zQ}NB5;APw{2wlc)!AqT#9Jf3^RY*Gfll3CfvA!~HYlR&dKXs&Az)QVV*tx+eg8l!1 z(52s|JoGsa{SxUnQNEnT0_m30bAQ(%keBh3PdfX7EhPI6PEdD4p&&++3^JnMea zbzFsnF8xy{?92G6C*6W_NWD?mk#W_kcq+b$2wuijOz1MM`blShPEo%!Ksx)A^+91r z#?`3MU(bbsb2UB<}_=^Q5u z6ekx*XMeIjE9}TPSyXoXG``7$hHQuR92!hSzxlcFupFmKa(UndAogd1bhg8KoOHA! z%X3!Pk^W4OZUHa#bHWa-+WF3T@beygAvs;ge=+Gg&V8hFdF)K#zkuLnoR^W#e&9H- z&^#HkG*5b!;yIo}if6rsbRFmQq+4KD`m<5+(w|`uKH|Z5DxQjOdIV3a_O4?>mvMec z=r})*Kb-_|yzzKqjCA%h>*r_?jrll@8%&eVJnOR_{G12B=)v=#n6_U?gJoQvNh(hf z>CCfU>cIy*_$m)Rq_ZDb zul3;TJopP9{HzC`LxXNy9v*kjC7sK|dd!3G_TcB~CYJ4Uy)Kc?_E|6ABi`KLl#|QDdIjlR{%PVZ#k1b2`18ca6wi8G@oZ;O z@vP_4#gHyfKIvS3=BqvU8V~-M2jB0(Pb+?g>U&=CtPj#jm&+d@eu#7~KkIQim^D91 zy5`49ljDu;jFYbU>Nlq5Ye?68zXw0y!H<)U{n8tptnB~Kde}*L*qQO*FL>~ar0aa6 zTT|D!lXP9*W29?4joXs#%u+ixlg@TnZ$$w3n0Pb9=F$yGhse9q_QzTAu7Tj+1uM*$(UBTix==_$j+B+0H!0VL9n+hxM2T z-|fLqy(QWHDA_+tI@@P`u_Bod5O20SI`ga#??~p^&Iswuvp(;^U-IBfDpT9{ldkPI zS2;YkJ9Qzp5cbeJJ@i2jeZ)iWZ*|LgHLUuaO*25c1=~^|RD1#PLyBj8jC8CQb!m2r zgyMZ<=bX~n&IJ!Uxou8DwEuFlfr|pt@p!@V^QVw>3k0c`2>vRBbMQa7S0$a>i}ir! z9o&>@p7e6Xhe)qbJnL1YW4-uU2PUZ{-GX)5E_F(0zqJZG(*IG?*+02x96p`O4(l;t zN8aD{DBiJR%rU{gl0{e!3Y~7b?7gF;b9sD}W=z>w7U==tr5@5eWl*ho(rXmY@m8yN*6T^n zgY+^E+ex=TmvICYUcvzo z_7BI~h_b`_sIVjBa9r_JT{9_o8HWj>%Q!4(cT#eB{A8$*bPKkzzN{B1p6gqzc-Biv z*YOilJln5UI@_uDuoDxyjKdz%xn5K))2r;WJ|K7*Z-b-<0F?T$=E=~A=1Ct_e2DZh z#j`#^x{kxMq+5_)wo5|k?6(Fl3eD$gZlhxG+vN5-Mq?_;6dxk}tm0WeN4k!~3#40+UdG|9(%Ekd!j6o?+yhPl z*gv^co_x~TKI;XfV|ip87Ac<0m=eLuI1C6~#-T+zm&Z?rs+4`!LyG76Rx6(MdeU_q zMitNYJC)9MdOhrn3SGwGIO$w3_RoZ}&-z)x%XmwW9sp44)0!tk=QU6IjN(J2Ur;>j zbENAyTqNCs^fC@jhhva+_FDnz+W$V%*+02Xa#N!0u_ z40z~c9(v&+$No*Qz<67r3Kx;iamad!;+-Ic>lekd-l}-E)2?{dql#xcor-6Dl63UL z%}!P9|EE3l1)-M-K0o4YXglRXmwb)TWxmZGdXLbhodKasJ5xfJ{EW~gf5}5HI_%a< z+9?&fv{NT^$+rughKg;&okHIx{MqZF_Y3_^f*&1FZ^W=wa&67T)_yD!z zu;N*tRD2onQ;KK(g5t}GpH)2TxgT)+!1b*lKA&{1FYA8ATf~Kyrp>7YZc#4e4XN1Z&!Sn_^{$x?^b+-_#VZxKA`w0 z@q>zIeN6G4#E&bU^|OkP5uZ>z>lYN?P5i9lSzlCq5Ao)MPP=pavR+6!AHTiC7b%|g zQpNWXA5c8&Rf_i$A5uK)t%^TJe7oXV?@@d|@x6*?eOU1W#E&SR^|Oi}BtD^d*5?#I zMEtzsSuf~JJ|2gOFC?AYi}f%)qlC4NNltj85U zNBpGXS)W$?Jn`oh&-%RL7l^;4c-C`2lpGIz#OIUF@xXei;*Sv@P(16^inj-EAj=xX zv)-=w931R{PgwD+_bEP?_+yG^eN^%M{rNG)vwlwT{Jr{V#k0Pk_(CerqT*TiJ>=An z&tFBvmypi>XT41E#l)8@p7m#l;>(DiQatPD6<<#LjN)0pr1%Qr7ZlHWek{3tE#eDE=k{g2MDbO``xVc6 zh2lfRTZ(7BR`J!u*D0R$cE#5aA67i;-HNXzzDMz_4=BEl_(8?9KBo9a;>Q)w`dP(u zzn4%v>+_1|e(aLsSuZ$Z><=HmtyG>u(z$(E4=BE!_%g+_UaR;p@pX!4J)-ys@lnOI z-miGB*MQ<#pHO_1?8g<)`US;z5*o}ImiTGKvwlhO3E~$N&w5dJ za{HbmzL<1wU)IYNKTUjv;#sd(JojUbif28h`154HTk)(9D}ILf5yi7Uq4*2L#}&`| zImOQsKdpGy=M+Cj{Ji2>&v`i6|MSG>lFt5Ty;$*=i1#U;^)kgT5MQo%)~gl2NPLar zS#MUnxyGqatKwPjRD2HcF~zffO!2wI_bZr;xaCjPAAS)WmS z4e=Kg&-#MmYl&Y}JnIELj{ms5>WD8So!ggnzvAnOFI7D2mf{qUy^ey>>ZtXC+$o9tVPXT4tWe4W#%c-A`=-$V9eif4UL@x8-nU!|5*=cp2}0EdD5#C-%ol-@vPS?et`H!#j_q! z{2=jB#k1b4_#xu^6wmsQ;)jVJRy^wyiXS09u6WkZDSnjrX~nZXr}#1A=M~R-)gLFf z?>O-x(z$(EuUGs8@r{aSJ)-zH@lnOI-mCaY;`{$$;!__JicMDeUwDLz4bNb#&UEB+kut%_&8NAX<)J%_Y8&bZ%eP{ff^gzEtt7TZ%6rzDn_|*C{?s{ZGB(Sr03o`=yBD zSwE(DKJNMz&-$1LKkmVwQ+y%ScUtkRFDSl<_(jFDUi7i#_9`a6m~?J0)+-dx^|BPt zdZP#5?7{aa-bdx>RXpnhiZ3C4Q1PsfDc(=~xZ+tqtN2pl6N+d3g5m?j&nlkvMa7p9 zZ~B~eVgIvUNIKt7l@nj2c-E^GUqO70;#qH2yhVJg;#nV1d=>G7if4UH@gd^J70>!v z#a9!bP(14w6kkL9tm0W;RJ@=12lGg>|5-04o&8@+_I-+Hy+ZMI#9NAIyw}7KCVoiqtWPSwmG~*evp%c%cH-w0&w9bfllz}A@r9%ZVE0w<$9jq4 zBgFd^&w7R8qr_W^XT4VOoy6BEp7nOc$A}Lrp7n0UcN5>Ec-99L-$VSM;#nV4d@u3i zif8?-;`@kCD4z8Tia$pDtm0W;RD3`2<`c=s7wd(j-$d;`KzxznSua)mAn^gkvtFh6 zA>u=dXT4tW!^Af#p7n_0M~IIqp7mbEj}qUfc-BWq&jbH#aa?Hs&%gh-2wR0hpFHMl zJVQEnZzF%^=(YWwA%a?)x0J*2b!ajI7@>1?0%0ma9OA5=W+ zBZ{9QepK<1rD?2k(o*HF`^?Jq665ptJ*4q`&-`5B$p7kEZ&y)RL#j`%7_*wG9 zu;N)yD4y+{Q#|W)iVu+edBwAyGvKtZJ|2rm=XPhlm~?J;)&q)PAU~8Tp7nagoApjP z8WqoaRPnjQcPgIsUea~FhLxQHvNNLWus*5yBI2hM&-yg!I$v`<`8e{CogC8HpR5NI z&wegbJnJFSb-wi;b{akGL=?~M6;(Xzy^81Z_bHzB3B_~yjjEmpyQ=b@vH|F&*dyrJnJD3zS@KD_2BzF_#x7@f5tuROnBHi zt9WkTgyLDhpm=WIS;ezncp|x7*gr+2bGxu!O1iF>@_J^D_-9C`a5KGwcCw}SEBdK_=p&u|!}_@5TeF??6N+a& zuJ|zVlZt13igc`(5B~TwGw7`Gd4YeI@dD{wPS$5hM>|0$sr~=F&@G|oeA?MSUh00K zzg+ME(y=^O3%!hVv?28>!Q&-kE;T@ibS^*ZHHzmfY8B6Vo#I2Zqh9f>HqVzo6C)j2sdo!IuMl>670m|a@PGR2?y0l+UI@=%3b`mv`&h}Yv z6?S$C``tp9_WMa^`{UV8q5;y`KI=om&Q4)JE_7-C9O>HrH0j#@jIgs)*k2U7v|sR9 z2h#QnN!Rv^Nym1S_REDX?N=-N@oXo*8fBmLI$=lJZxnX$xWIDZroF-wM_tWlTBgY@cINw>hJ)T4sO zdW9(8PSQDF*1Jj9`SuAr(*7~hb-u%b$9!Xy?+EFfFYBYEW4^b;AAiP$Zm|fd! zbc>C{vP#&;dhz)pL^`rkuNHRX`Jz_wkj(xx3SOQs+J!F97ZK9g|L8ybM3sHkdjx+K zaHAAIy`;1MSwBX)_Ro;8gY_-IOyM(3x&`Y}9}{+}5TsASgFo-Vo5!4lSRNUNxumln z*nU3g76@1#{uB%TDiAr|e5A7^?>3z-pUludIjm)&()+`VEAhIV?Wmk zUi!0@boK+sXS=e)dRW+z@flS-*Q;CbGCuo+F5`2MbS@8RiOe&Bd$Rd!f!7j|TvL=?~UiV0rENw3gloD7i8<>B%VD*LRD2s^S~ zQy%;|4}L-DGEU5}Qxh%^*DHr~3j`S_g@TuHQbf9r6QAPQeu?5)_bWa`J4zMLdKu|D zPO3<^Aia!}8o^6{Hj>VM$fbOnl^xbwNymI;oP-rmW=yBxWt{W~UB*d2>0BO;hXG}u z^9^-*C*)+^z`pZDO+e{ss22MZY|xukP>9Lkt{(k&2VoD>UQ z#)*$~9VdRpv;9)VvmQ|VQamW0^$OClUNTNdd-pY^z~BkMKe!OwZ{1%Ks~SjR~b>0BPJS25}A zXVyyvFXJRYx{i}_#j~9X#j|cHekmRl&w4fKI!+o%=kl{Z+XXNE*-1M4f#V^j?6BS~ z?8rFjRXo?LU+^+chJ-HTWSn#^50`&J*=K!9*pc;`_24gg@I{|@O046=M>>~>>s3NJ z`Zx{i}p(z*QX&xqiqKf6h1KX5$sC_Ak8 z3Oh1Rjwzn&H7Ix)CnG|aaS|t;%fr`Klgd8p31LUpYuX57(=d zboMjr6@r&>Vv(-nB&2w@Q>}Q`YZSi}4~l2Ko^%~2VbZz$?9WcYOMmu~&VJx{=u>uB zKPK$RI2lkp*K1htGET;XF5_f|bSw}0nV-L3Af5fpx_{KkiTS{KXSt3LTbL9 zbj?@%O)}5(yDZX~XFaC)adKR@;#u!kJlh#iJnK`6FQ@vRRXpqGJ@^?9eqQkvWdD-l zSugxzvVT}FBAxxidO-30IZpaA#j{?kc#FzYr+C(z6(1tLRq?D(E1vy)Uh%9Kj3w8% zhU^!T&h=%z%!4oY;A<3LOZICO&w5Ppb;Nfop7mpjZzR57@vJW@p69oiFFAhT`m%13 zeiQ7L$8VM5`S|T49s99T$E5xLu(HGUN0c4b#}(g7^_oyT>r;vk6Mt6mtj{PuO8f=I zvwn$mtk)f)UO9j3Y_NY~WG9z&_9yFwis$kaDW3JP;@LkD#j`%9cy5<*#j~FCWvBeQ zy$VR@di7Af3Q6aBv0ke9KH>w4XWb$l^W7r+S*`5!lbsr6hxK~Jv)>vO&wAOoTi@G6 zzC)yQeMhMu8z!CW%lf#mbEmK~rR-qoHNzC~UQhf_Z=X_Z&Q9Sn>e#Nss zsQ4kWKcslpt*<1PXNsP~R*}x-VZEAkY{yp%Kh!BZvt*}U*-l>_q(1{}A^cG@ng!CiJUm}?k#sH(>$ww7X3X<^ z)O^yJXT4hSY^O%?tk)}^?KCQ$^J|2y^ItiwqrP3}#kBrPSklxe zTL~$heHND#y-MfbF&a}k|BlPF(&g`D;4Ur?e~+j*%SpgGfBz?>be^XhRyrU5 z{Yv+rbnK2Red?5>o2`dFus_mtFDxSmonLAwJ8!g z*mm#XNXsG0|2ZyvkRGdcwX$Q;cI#yF4(|V0eHE;rX0bra(EoH+25Ejc#y;l5aWCT; zb?VNYMDYKx%9nQ_D?fN`i8j}o{zgcPHf3zX=2HH{be=>FKU{ui%a|RolB)bQ-*yO# zL0ancw}PI^f3s1irg2J#{=+un^z6UeK|_*{Ygn~EeU$%J7HH{Mb<&_z4S%c=VlSSc z^isoh%{Gyy{THY736(&{Pd%hhRsZ1+I0=1}9_x?i5?%j&p#A*Hl@3@Wefkp4rtB+G zQN^*hb=i>{r1ZJh;Fi-zV;OY*7#=$IkRSd&{%_22WnAZveRit!Qx7`i2W>0ve>(mD E0~F>RK>z>% literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o.d b/release/src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o.d new file mode 100644 index 0000000..2da6d91 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o.d @@ -0,0 +1,68 @@ +src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/mesh.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/complex.h \ + /usr/include/bits/mathdef.h /usr/include/bits/cmathcalls.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/progress.make b/release/src/awp/CMakeFiles/lpmcl3d.dir/progress.make new file mode 100644 index 0000000..95deb5b --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/progress.make @@ -0,0 +1,14 @@ +CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_2 = 19 +CMAKE_PROGRESS_3 = 20 +CMAKE_PROGRESS_4 = 21 +CMAKE_PROGRESS_5 = +CMAKE_PROGRESS_6 = 22 +CMAKE_PROGRESS_7 = 23 +CMAKE_PROGRESS_8 = 24 +CMAKE_PROGRESS_9 = +CMAKE_PROGRESS_10 = 25 +CMAKE_PROGRESS_11 = 26 +CMAKE_PROGRESS_12 = 27 +CMAKE_PROGRESS_13 = + diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/source.c.o b/release/src/awp/CMakeFiles/lpmcl3d.dir/source.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ef64eaf5c79c2135d91d3ecf850c91c2d2f01e9d GIT binary patch literal 61160 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 PHp=dP(cjgn literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/source.c.o.d b/release/src/awp/CMakeFiles/lpmcl3d.dir/source.c.o.d new file mode 100644 index 0000000..acb4209 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/source.c.o.d @@ -0,0 +1,73 @@ +src/awp/CMakeFiles/lpmcl3d.dir/source.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/source.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-uintn.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o b/release/src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b92f87964d63e7bcb46f45c7273db6655dcffcbe GIT binary patch literal 53736 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 literal 0 HcmV?d00001 diff --git a/release/src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o.d b/release/src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o.d new file mode 100644 index 0000000..b91b2f8 --- /dev/null +++ b/release/src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o.d @@ -0,0 +1,28 @@ +src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp/utils.c \ + /usr/include/stdc-predef.h /usr/include/sys/time.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64-v2.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_timeval.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h /usr/include/time.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/include/bits/time.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/confname.h /usr/include/stdlib.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/stdlib-float.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/utils.h diff --git a/release/src/awp/CMakeFiles/progress.marks b/release/src/awp/CMakeFiles/progress.marks new file mode 100644 index 0000000..c3f407c --- /dev/null +++ b/release/src/awp/CMakeFiles/progress.marks @@ -0,0 +1 @@ +55 diff --git a/release/src/awp/CTestTestfile.cmake b/release/src/awp/CTestTestfile.cmake new file mode 100644 index 0000000..a6afa8e --- /dev/null +++ b/release/src/awp/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/release/src/awp/Makefile b/release/src/awp/Makefile new file mode 100644 index 0000000..0426cbb --- /dev/null +++ b/release/src/awp/Makefile @@ -0,0 +1,592 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp//CMakeFiles/progress.marks + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/awp/CMakeFiles/awp.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/awp.dir/rule +.PHONY : src/awp/CMakeFiles/awp.dir/rule + +# Convenience name for target. +awp: src/awp/CMakeFiles/awp.dir/rule +.PHONY : awp + +# fast build rule for target. +awp/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/build +.PHONY : awp/fast + +# Convenience name for target. +src/awp/CMakeFiles/error.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/error.dir/rule +.PHONY : src/awp/CMakeFiles/error.dir/rule + +# Convenience name for target. +error: src/awp/CMakeFiles/error.dir/rule +.PHONY : error + +# fast build rule for target. +error/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/build +.PHONY : error/fast + +# Convenience name for target. +src/awp/CMakeFiles/lpmcl3d.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/lpmcl3d.dir/rule +.PHONY : src/awp/CMakeFiles/lpmcl3d.dir/rule + +# Convenience name for target. +lpmcl3d: src/awp/CMakeFiles/lpmcl3d.dir/rule +.PHONY : lpmcl3d + +# fast build rule for target. +lpmcl3d/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/build +.PHONY : lpmcl3d/fast + +# Convenience name for target. +src/awp/CMakeFiles/pmcl3d.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/awp/CMakeFiles/pmcl3d.dir/rule +.PHONY : src/awp/CMakeFiles/pmcl3d.dir/rule + +# Convenience name for target. +pmcl3d: src/awp/CMakeFiles/pmcl3d.dir/rule +.PHONY : pmcl3d + +# fast build rule for target. +pmcl3d/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/build +.PHONY : pmcl3d/fast + +calc.o: calc.c.o +.PHONY : calc.o + +# target to build an object file +calc.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/calc.c.o +.PHONY : calc.c.o + +calc.i: calc.c.i +.PHONY : calc.i + +# target to preprocess a source file +calc.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/calc.c.i +.PHONY : calc.c.i + +calc.s: calc.c.s +.PHONY : calc.s + +# target to generate assembly for a file +calc.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/calc.c.s +.PHONY : calc.c.s + +cerjan.o: cerjan.c.o +.PHONY : cerjan.o + +# target to build an object file +cerjan.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.o +.PHONY : cerjan.c.o + +cerjan.i: cerjan.c.i +.PHONY : cerjan.i + +# target to preprocess a source file +cerjan.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.i +.PHONY : cerjan.c.i + +cerjan.s: cerjan.c.s +.PHONY : cerjan.s + +# target to generate assembly for a file +cerjan.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/cerjan.c.s +.PHONY : cerjan.c.s + +command.o: command.c.o +.PHONY : command.o + +# target to build an object file +command.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/command.c.o +.PHONY : command.c.o + +command.i: command.c.i +.PHONY : command.i + +# target to preprocess a source file +command.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/command.c.i +.PHONY : command.c.i + +command.s: command.c.s +.PHONY : command.s + +# target to generate assembly for a file +command.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/command.c.s +.PHONY : command.c.s + +dump.o: dump.c.o +.PHONY : dump.o + +# target to build an object file +dump.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/dump.c.o +.PHONY : dump.c.o + +dump.i: dump.c.i +.PHONY : dump.i + +# target to preprocess a source file +dump.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/dump.c.i +.PHONY : dump.c.i + +dump.s: dump.c.s +.PHONY : dump.s + +# target to generate assembly for a file +dump.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/dump.c.s +.PHONY : dump.c.s + +error.o: error.c.o +.PHONY : error.o + +# target to build an object file +error.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/error.c.o +.PHONY : error.c.o + +error.i: error.c.i +.PHONY : error.i + +# target to preprocess a source file +error.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/error.c.i +.PHONY : error.c.i + +error.s: error.c.s +.PHONY : error.s + +# target to generate assembly for a file +error.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/error.dir/build.make src/awp/CMakeFiles/error.dir/error.c.s +.PHONY : error.c.s + +grid.o: grid.c.o +.PHONY : grid.o + +# target to build an object file +grid.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/grid.c.o +.PHONY : grid.c.o + +grid.i: grid.c.i +.PHONY : grid.i + +# target to preprocess a source file +grid.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/grid.c.i +.PHONY : grid.c.i + +grid.s: grid.c.s +.PHONY : grid.s + +# target to generate assembly for a file +grid.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/grid.c.s +.PHONY : grid.c.s + +init.o: init.c.o +.PHONY : init.o + +# target to build an object file +init.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/init.c.o +.PHONY : init.c.o + +init.i: init.c.i +.PHONY : init.i + +# target to preprocess a source file +init.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/init.c.i +.PHONY : init.c.i + +init.s: init.c.s +.PHONY : init.s + +# target to generate assembly for a file +init.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/init.c.s +.PHONY : init.c.s + +io.o: io.c.o +.PHONY : io.o + +# target to build an object file +io.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/io.c.o +.PHONY : io.c.o + +io.i: io.c.i +.PHONY : io.i + +# target to preprocess a source file +io.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/io.c.i +.PHONY : io.c.i + +io.s: io.c.s +.PHONY : io.s + +# target to generate assembly for a file +io.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/io.c.s +.PHONY : io.c.s + +kernel.o: kernel.cu.o +.PHONY : kernel.o + +# target to build an object file +kernel.cu.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/kernel.cu.o + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.o +.PHONY : kernel.cu.o + +kernel.i: kernel.cu.i +.PHONY : kernel.i + +# target to preprocess a source file +kernel.cu.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/kernel.cu.i + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.i +.PHONY : kernel.cu.i + +kernel.s: kernel.cu.s +.PHONY : kernel.s + +# target to generate assembly for a file +kernel.cu.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/awp.dir/build.make src/awp/CMakeFiles/awp.dir/kernel.cu.s + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/kernel.cu.s +.PHONY : kernel.cu.s + +mesh.o: mesh.c.o +.PHONY : mesh.o + +# target to build an object file +mesh.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.o +.PHONY : mesh.c.o + +mesh.i: mesh.c.i +.PHONY : mesh.i + +# target to preprocess a source file +mesh.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.i +.PHONY : mesh.c.i + +mesh.s: mesh.c.s +.PHONY : mesh.s + +# target to generate assembly for a file +mesh.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/mesh.c.s +.PHONY : mesh.c.s + +pmcl3d.o: pmcl3d.c.o +.PHONY : pmcl3d.o + +# target to build an object file +pmcl3d.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/pmcl3d.c.o +.PHONY : pmcl3d.c.o + +pmcl3d.i: pmcl3d.c.i +.PHONY : pmcl3d.i + +# target to preprocess a source file +pmcl3d.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/pmcl3d.c.i +.PHONY : pmcl3d.c.i + +pmcl3d.s: pmcl3d.c.s +.PHONY : pmcl3d.s + +# target to generate assembly for a file +pmcl3d.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/pmcl3d.dir/build.make src/awp/CMakeFiles/pmcl3d.dir/pmcl3d.c.s +.PHONY : pmcl3d.c.s + +source.o: source.c.o +.PHONY : source.o + +# target to build an object file +source.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/source.c.o +.PHONY : source.c.o + +source.i: source.c.i +.PHONY : source.i + +# target to preprocess a source file +source.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/source.c.i +.PHONY : source.c.i + +source.s: source.c.s +.PHONY : source.s + +# target to generate assembly for a file +source.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/source.c.s +.PHONY : source.c.s + +swap.o: swap.c.o +.PHONY : swap.o + +# target to build an object file +swap.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/swap.c.o +.PHONY : swap.c.o + +swap.i: swap.c.i +.PHONY : swap.i + +# target to preprocess a source file +swap.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/swap.c.i +.PHONY : swap.c.i + +swap.s: swap.c.s +.PHONY : swap.s + +# target to generate assembly for a file +swap.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/swap.c.s +.PHONY : swap.c.s + +utils.o: utils.c.o +.PHONY : utils.o + +# target to build an object file +utils.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/utils.c.o +.PHONY : utils.c.o + +utils.i: utils.c.i +.PHONY : utils.i + +# target to preprocess a source file +utils.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/utils.c.i +.PHONY : utils.c.i + +utils.s: utils.c.s +.PHONY : utils.s + +# target to generate assembly for a file +utils.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/awp/CMakeFiles/lpmcl3d.dir/build.make src/awp/CMakeFiles/lpmcl3d.dir/utils.c.s +.PHONY : utils.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" + @echo "... awp" + @echo "... error" + @echo "... lpmcl3d" + @echo "... pmcl3d" + @echo "... calc.o" + @echo "... calc.i" + @echo "... calc.s" + @echo "... cerjan.o" + @echo "... cerjan.i" + @echo "... cerjan.s" + @echo "... command.o" + @echo "... command.i" + @echo "... command.s" + @echo "... dump.o" + @echo "... dump.i" + @echo "... dump.s" + @echo "... error.o" + @echo "... error.i" + @echo "... error.s" + @echo "... grid.o" + @echo "... grid.i" + @echo "... grid.s" + @echo "... init.o" + @echo "... init.i" + @echo "... init.s" + @echo "... io.o" + @echo "... io.i" + @echo "... io.s" + @echo "... kernel.o" + @echo "... kernel.i" + @echo "... kernel.s" + @echo "... mesh.o" + @echo "... mesh.i" + @echo "... mesh.s" + @echo "... pmcl3d.o" + @echo "... pmcl3d.i" + @echo "... pmcl3d.s" + @echo "... source.o" + @echo "... source.i" + @echo "... source.s" + @echo "... swap.o" + @echo "... swap.i" + @echo "... swap.s" + @echo "... utils.o" + @echo "... utils.i" + @echo "... utils.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/src/awp/cmake_install.cmake b/release/src/awp/cmake_install.cmake new file mode 100644 index 0000000..7a364d1 --- /dev/null +++ b/release/src/awp/cmake_install.cmake @@ -0,0 +1,44 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/awp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + diff --git a/release/src/awp/libawp.a b/release/src/awp/libawp.a new file mode 100644 index 0000000000000000000000000000000000000000..bb7db81f0f98fefb0fbf580b6add10820fde466e GIT binary patch literal 1102028 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∈;tQcfyC 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�Gvxnb(X&ul-$ve6&A+Mfyh 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 literal 0 HcmV?d00001 diff --git a/release/src/awp/liberror.a b/release/src/awp/liberror.a new file mode 100644 index 0000000000000000000000000000000000000000..3ac0cff7122ff5027b2291d4078e2e773dac891f GIT binary patch literal 5686 zcmbtYO>9(E6uvV>Q~9$Rjg4TuD43Ge=}c+qU=XGPf}tWIHK_>+^JeBw`($R`B6I+({>BW{A%JlbVGwF>Ptro)P8Cxg4P}pz*)WtD()|P3p#hyqr#EgK(0XvNKOR!&mmb?O z@^&(jfB|AlsOMG7V^*na&%_wh$we@yo>nUXjciuxt?c~6-|k<2xMse&Z0l5Wl{=-? z*3aNNK9D%sHHqgJ6xi+50WSQZc`g#p2HCI znIRrAk244u^TC`q5}u=2e}d0Bj6tjuq?-kP7vL+TJJE5nZ$Gsm?xp&C4}C)7HS&Zn z0>2mV4E6s6+Dg=hcqDNq%I6MX%qzS$Som8DpRw?)g-=+xY2k{6^A;YpFce{-4x25Uw(wdDcUyS5 zg`2xyJ(^Qn@wvIH)$|@kHl4u7FMg)JNp?gwHs+Ik1$L!e#wEH-zqJF3*jknV|W^N$~nArHgl@tTGlV2s<}baYO^ICn)p ziRmQf)3Uc6w_-{<^t5lBk}iW6HMaP}z8ji_h890=LVd{if$P8@)tqWH@s=*0x70;RE{f+=Dqhin z5?NAvyr{0xI5Y!YGC|RI>mgLm%Bxk6NNkH>yzQ81;2tr$+JKT3jIMiu8@h+$<+9?$ z^K<<129`^^HTZ{9jhFWQ+QFK4xTY7{%U+{ak}6!sLr%pl>5>akqBUL|Xiv1_xGq6x z>Vb9xUGt!x?jbjb*1j;Q3ypFa)&sNdEqh9~#IPckY;ISc3!N;+HANAe%agDcU9iJZq z3kbE078svDST9%X6eCk?jfxeUC9Uo<+LtaG#CeG#2QbkQqO%env$Etc)vw(Skw zvvbe;>vc9Ym`dyZbbls2m>JML`yjJjP8jpAXVUATTNiar9NDLqG=~$bmM7F|;NU$P z*=Pscwy(^6nHXO2a`IYQZ{}T24!!}K- zWAUqRLDB&&?W_YLwX+WOL^~RyJoy;@smJi5wxsG%osZ}-!n66-t2?S2a4*2cHMTpw z^cWt#WlHlX#BLe3#HSN&lSCGrwBsPm^8?J@Y+6e~I+HLeKnw(9e-REA-6ggua{VvR&wz z9})T->Gujf^J7BKTYtaMGhY&VI3GtgA@t1Gh5kJ0L!oDWO6aeV9?nyd@%l19BlNtV z;J3>nJ@cOnJ+JF&p=bUpq0f>3wa_zvPUxHDpBH-OzZ3dd@-GTK^FInb=XXWunZG9V zth+As%>OF%^W@(YdggBneU4u7_k^DLKZSmV^c;`ZmwEnV@bmr^>6g%*^~^6Pp7r06 z-zD_ScMJUu@>dHz^J|5Ej{F{>XFe_TUGyRz5PIhMdm-QFW2BewbFLH4*ZwM=B7IKq zXNboyqWx9;mUymP59N7|c&;<^7pyodA(ph)fPmj^3x;PAv=`x`EfD#eqrWYl=dV)1 zWHodOa1Z_XKEcR06(<#%W~fqlgjcCT5U7;z#ZKJn6;%p;A>q+nrQpPDQgD=dJqVrR zL6BkqGjX8o)2|Uq;(y#U^u4-4D`jA_S%B0c)#?DJUD;UplyMxUH)Sv zlzQoJg8uF5*G>Qb#&yE_VJW#k^V?{A+~>CCNtm)pz+6ARk64^7{gel?$u?StI9b10 z>OUs>i*l;{(B5wTX_`OJ3+Inpiqqox<2>ZpK&jg#oS=!W0IpqsJU7d|gZ=l?{>`Fe V8P|;|OtW48Jmr6og>;ww{|4;477_pe literal 0 HcmV?d00001 diff --git a/release/src/awp/liblpmcl3d.a b/release/src/awp/liblpmcl3d.a new file mode 100644 index 0000000000000000000000000000000000000000..132208fbf1b0652123c9bfd1eac3e5637d90352d GIT binary patch literal 1394008 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


-v^!871LVAJ}fz?WSlUu4G|9@fTUSVK_ZPE5{nM$iG9J+ z-v}galvC#gC+&)lg#@apt)pj_p$T$|(G~$slOGVfDZIX(Tg7jRDW$=Ak4_0x^hV~r zF3$T7`@=v~;x@pcw}_VM9>R2^Ub<#alrRtzxaJ}9 zQD(UaL&&hQfcK$lOM$XX=0f?;yiqP*c(v#ODJXCJ#V#eTClj%lC4PYuKvR477POcT zTLLXPRM3pBwp@AyCew5!f(qnilm4(kJ3k}hzaJz1Et=h90x#c&4Vq{%&O^YhXhSuA zATP7Uz}r~~gN`$*=t}AfQ5NF21PM7A#A=DAs?uEXaDQ1#R}BNb{tkisRtzLyp>n74 zi1WV9ePu)HfUr>K`*xJCslgH`Nqq-6RKEzvJ@H@+ikJN1^hHLMy+u*uh&eloLHC5g@BgW=sb5t( z-jRDN-|Z>rEq0@90kQ&R!Ch32@sHaNiw~l59SNMi`VdUq7vhQgh?*9wQywVu?pwI} z_SC(f`EkbIiOs}!|C8-!(kW`P*gQ8fOf7^s@~j19oGSIT z6>W5(s6a5Ye4NO~4pusjZ`bm1g5PT4Z6|*o%g4N$pk{`7QByn{yhi9m2hnfj5L>GV z4njWl7P`dS^Z9mG@}|R@jFJn%>@?X&lJag<|x~uWlixX=hF|D#2jWwLT6F7(qq6Zxt zWji68C7qadlUBKml{HXd6@h;)8%b{6L`<({rbB}a13|NzqJUZaOml^nv)D7IlC26y zbQmEl1}QDuIX*fpBMag7y@rp2qs`)s~l%Evi;II0!qDCYUk zWSIZCv^3t4>-Wp}%5@khNd)|d%B0#>!%LuOysA3`v=Tj*DIyO|f>v=@D$r@7<0+n- zi&;w3@<_gkKy~C*meYfgw$h5WFl!?pqFpjcJHV~84TkBD1QV7fbZITHG#{q9mDWn% zv7-z((>(N6nu{`~<8=}^2!&*Oth9heK|rqL)e%7PF4m-|5nVXeH+r*zshYxAOcK=!jwUVwfRRmQ3%?(ag%cRLIO*_C zmvbHNQxhB(NeVfjw1IJ9zmO#e3i9 zTjUYM`5o(k%vVwQ@((N-{sHUo4;WF12%25*&c)c#&8xUz$(Jy4Vie`_P#l;gVgak( z^;FrA7uVBYyJ;|O97aOS4iM$)3bVShYE6vlxbPy|s{8mNZT>VF4W&OgMgtQ7g7o19 z9T=BH8tx`Rzd==^<_eBfSzHNoKO9(p$3y6QDNW(+m_pJT27x}%cw3}nGV^)22TP*e zhzTKCVp^!vSGE1Z>rPNtM5T*QmLO=uue+fHHSaOW0#*?tM6aTjWJxBDE;Zfp^(&G& z+8HGUHE^n$X9U4zl;hsjr^6Pn@UQnf$gQpG!O_l>ULEz{utcEzP^FusO|>VNjx5L2|t&mA5Uxu`dC@K$5<1iMbxhi&ieFy5(7LPmChNN#T9SeenbA zdZ>(mH%!$MHtfi?JYnz(2a&vjTUf+x_=8iD#&m*j)JqHBiVz3tuDDV3{h;-Ct_QM9 zqkA7lrwH|Qbg@COzeabrMn?b@*qaUwL{InuSY~MPo*M_NDjr!FILcO!tX3M?cR-kO z-KRGy$V`xCph*(0cF}!4X6S3xr6`c}Wh!fg^8vCfuH}40aMDUf;p{TNM@TpRAU*Sk zW3uF33X+ReFeBM27(WIBicMMr*RER!Nm&}q`!N{Z?vYN@f`AS85hO%th7^_VVSnTR zn_?PwzyJt>>}z>Sz19_R1`86=bmb|#12lz=rQBSFNx378<6cf#1+RVlNb3)%B5C@R zfuzcNOVA{oo(4{;qc?_qbAavkN@Jz7-1RD*1(s-iF3kqj5PA$Dd2t$vJ%d3D=~O0Gu1X*1~3mlwu$!G{Cp!s{gFG z2DL4(L znXoM5XVn5wb4Lbu$p*314h%y{bbn3e3F1g5`#D33Y(hJxg?SCyNYl?}c;ZE|xmePga ziK70z*&9Ef{o^Q_kJFDNgCX%bNW7je$ki!EB#WV28+m$JA!;`Ed$aZ#Y&QsL|e^{4lSV7ThPHjV=~n4 z``Ir1jkm5t>Nhn-$VabE62g$c$nx9Pc^*PxP0pdWza~j#zA7?FFZqif8DPp^cBR zm%lIc;@TRJ@+Ct;lLEut#MJf4WE?6T(Ddm90OqSPCh0|E3uscgfTjT9p|`7{fTq7l znhy;LO`i(`Q1y=q32UVzXx<&C1*DdifTquL{C}(Qvrl4d0`7e!*`N?34zKnNiS?eFU2eY6BFw92+ZdN zj5-a#C^@hod+P${|IW_D6Uq&=w8T`^C$jP&FfW^u!>uaDGr_hcB9kiWBcS7l>?7?t zU_q&YI)&4au7*>zW9BuN!d2WK>k2Y;oYDwHqnylo;BJXqvD(9J6OfDCypWj&zebRU zx2^~7K8~?#Trt((#?+4qBP^g^n5Gw|kbYmYKE|4g2VDM2lFEElV3J<$TZ%voSbQB@ z7Z%lLNPR<+s$$*BLZ~`k;4Lk$;JyLcx+~r0;&PWe6;NjI zYSYl}dP$%4dizkL%vv>n65C6y+-umS($c&BZqSM~*cvoJ!fVC?!Run%E30c%T8@0J z|Kxtz#a_r|^oZWIF1hqUOEB%jp<8<0>C5A?41e*q!@$A(Z8cV~!!5g66l*6W*LJAQ zsg&7?N)knF$R`Zz;@(q zvE5oL(;(F)!QL@TuL2e22o~Q}mR-woiz|C1A5CZ_XQxAU36FV7od_x22t~R8d%Z#u zsjXwr0H&|pcrCO;%Qm6ULgTe{ojzzC^n%40^0e@Nu%`(1g?Eba;6O`%hcd{?!hxSR zqH?Df+N9qhRDB*>8OCEN`t+;#j;$~}-=O!;=p7M!cW`UL`&KTc1^!B;0-X@v8LA4d zr?C;Q0DW~@jR~B-W+Up}!XIy1=U>O`&nnh<*mc^(98I+r;F?mLuLncGL_^1+eyAdxoLW(#`obh!2d>kJa z@iETF1$cB&6>W2*z*5-T0{_|jmf76WtVn>wdt{U-0qjmAdYcfBJ3-Kz%5v0Lc)eTc zxV9W9ZD=rWQHtN+qjw2dwsnuHQz~>|R4A&~b5PcfqxIrH-mvErUFcl;^R zNXoZy>?vuF1puyE<2$C$yL7bYZ&>cwwJLE>e_KjTKsp49o4IFm-)!nJAvV*-J z$2X?6y_-bkABW)k@P(`#K`OVQ0)lbBlv+=~38K}vWc9nY<+PJc`h$HV?Hq1CrHQCu zq3e*>j2?+6ev{|2dQORVf|->_3FIi09_EH}jFK4yx}Zz%W!Cmsb zepsf`P9)d|dk{Q+5uqXd^Dm&$P~o>VB$Y$oO6g5?)#x`;O8FtP7Z%%5y=}^|ZmX8y%jo(JW6JK5XQ#RjTQ3J1E_ohRl zx4k^cTRenyrK+N5$|}%y#)%XJWMM#}dcVPXzn9kgn(A>ODdYxO+bH?V(7KP5U*t9$rY{WBAiD+amc2UW_vw0xX(gQ_pmxYn?SvokFXR5ppxCB z_Vi5_5E7(KShCSrT3KCc^csS`4}I5MY%N3YNop*iAez)I-_dW$Dn4UfM4NcgE8ief z(V{};O)<&jM{qqr%tT)h@&?(|m3)LZ)EXpoVO>w1v-OY=xJ;rR`jW z+(v{GK`5jpO;}WG;JIXV#^P38dXrApVnOzR-a?T8EjMaw+~mM-m6j5gR+p$I$St=> zF&{mR4|T;HFPtQ$^;65O*9wz95Rs;;@$*rq5f*6AVEx~fT65VmnV@lLB_`D(Et?MD zdKBp{`_glqMPr3WB#>{$&z?=AtJYe-6~Du>!hP3l;(e-y z<8A2glNv5%O$PxJwRO>jERnJk@eUhpg;pYpvtVkxK@d}bXqIsP0iPJKJ2Cp6deAxr zBSNc&i)(he+$20cD_H(iCBLe76Y8_s#V{WdgU7Jj?`k^Oo&+*Hm=y1QtX}*js&6Y_ z%mxxeRi7EsXQYCB^gARuXDyS_f&pq06&K@hBmUoMEaAVV&ws#`*g=pE7R**6$T8`W z!Vp}Gpv*>et48q4>ygw5_r&54txqoKgdtzy^&pw#BnQL`v#+o`K8j##g%+1TStTV# zyoAqIQgMENDSV0~Pz+k_vBRIdg3bMyHH`bP$ftWO=^5qzOXc1UtBEIk9#C%&sJ92y z+XLziLgNAT1|&S7-u~}aZ|{U3>^P`C1WY-alus?KY_%LMm)LdCvUWQ59Q9ATBu5y=(Ms-dO z}3agz+t1Y##i`5>`-5v?Y6U%}k znD+Ro@q}eZZ5_JhdQ-in>%FVwluQyka6q6n826|@!||NL-#%rARCLH6NXHL0=bUd1 z&}{)fRLR=;9fYLQ64K=RV@m`0Iu5-(_^R0LI?Edk(6~iwNIa|_eMz@&A=e+6P?}a+ zuA_ryE~#Cs*u#R8#x;M=32o@WaV7^o5Pl5IIZeQ=y*OX2U8li)2*0CoOy)ZpD2j8; zcVoQk*WY?b;!pYe0eaii*a-vCA1GUXwv+Jvimrx(^taLiM}w!}V-@d@6Tci1AC8he zBsyCQcz}jlU!gIMkYRYhFTtgtzcrnV{sWwt^!M5Y?vY-u34oa>+ikI!MU~XP`9>xpM^><=RI{tnVxL6mBE@MPMFF&A! zl`$G%pYaz}h;NAx&&$FM{DxHWt)vN7^yl5CE}w`$K7PS$_;>#7<_ouNnc7mD+ESm| zGBmYicxubY)RxhyEn`yyQ0!r3=H`cJB#qduDfqx9vC0@on;|tG8|4wr%^K zJ)37{S(*PM{U9$L&ukb?K5=$7KT42TvA`@aQA9?861R*`ZJEed+`J6{l-dUQqWOKN z+60fAx1E1JW;#3NW7~G`oZGno(2O#V8_kbiHGjjd?K4Ep@Q&FV^fGewT)n2Z@f|a> zI~KOj&u*T+bPE3;c*Pw91M3Hl8W@18{?SAEsWK>I{J?*Qug63G4jG8v^#b5_2wCk=N+H!c8ki&v773k&Upb&4F$@Jj7KnkH`8f=pW{Rjcr!iUyQIs~SfR{-7+GhV<4 z=Y82$zSxbfV2@RRb8O+1R?4?rXEhx4q~b!i>Vp0;+Qyz&TuHM z7kJaxcse*EwIs`ZzFqEl^m$J>C#xIh(f_W-c!1gAW<;w-uy<^0+#=Tlf^l5@aTIWx zoov#=Jz!lEU4iem5ES+g9HN)R;tTUZK*EwY$+nx2f|61^3R+vY)U!s!HAoJdd=CwC z-5Q4^Y0Pgjby&?{IUT8ScXlog)M2Pdl)Jp|`lSAE|2bf#{@W4VL&DXAQ+ zC$@+1#y(2B+3ND49U;^szjiw9?qaJAVd#C6p4ifk5=dGJJ4rzb3N%c%XyQ0B(-?Zq zqw&folW@RCgD0$RU3oXsq1I_FoWNHpFS#Qqa3rHzc4V+Gj8S1vk7gcm*SFwVjh^M) zO-Pf6hc}*dmwLU$X7XRN2^Ct_1aEjXcv2gjimH{oq_%6O+8XGjxRxd*SnU>epB}U> zx`bd*a$y^JGyZfsKL2?c)6c;JS4LgP_ZlBU*7115$#-qKNgy({Z*|PqM%N)+<9K(B zSqF|EvU```fs;Hw0(meOaIH-8U#IY!*Vce^0B9TAXN_(H%Iq*~h5>1$}Jsfl@H4)i(60 zB;oT=!m8|SzCE9h1wO{`Xo?#;@_GdW@I)jp>%gcLm#@@Xb!@G)5GkMs8m9VmL?+@J z^XM+2-stWxfrG#)oF$=LmkfdiZP{8d1kc3SY{bj7p~u#eugD#}NNlhX|&aXFHW4STu(f|JB0+c*6lAX+NS3w?>%rzcIxyVIAwKtSp>1Pyo^hI z2ud4*>X2X{fY$ll&UPz(NVB&w+tl#*tDN*lr=>e?09~$DTEG0(X=9_iz#?~*ZT{c= zPfW`&@lM?N<^fU{g6r^L(5yKG(uhLI7?q)=8G9kq&f{aAkE8fdAdb+#fj?yhlDk$c zyd`rV!yJm9Og)JsDVz~zknj4w_@giTC&NBj2~~Qpn1iL|9t`uqK)bes%E8J4hx*y>`x0nTTCEi_wW+XTor zLdXWcxB$$P~}^I|$R~@~3juc>+dv zDX33@lL96QbTlhTMknQ)Sca)V(Z;^DC7bAEwk6fCRVLe5?C(o!hHurO>k8=Kdjs08 znq+TJ<>QHbNRo~5jaPu#5PKZo*dF!|wP)2fw@5La%CfYoL9|>CI*jWgR^fte#S;1? z77z|(TuPTJTA7uiNj}6UB-o~dz+m&uqE>$ugf1X`&Pv!6zaYpKMBl~&Q*=)NS0Efg zp;{#_c9&sEs#URsnUpuJq1I|c>%?#oq-HcFMcY|QBm?3MALrPXy%a;kfpk|R)rx|` zBNkm1p9Kz^T(JTnt>CmPR?Eanr`1|)(W1_9-aU&uNVp2-O66T&2B1%& zokbuB$qFug!RsI&ish0NB;j?t{pdOR+tt6mq7d;apIVPc;V?~`CH06z3=zM{Ld!i5 zO5#&CiMT)m7gKN|yI$RFNotga?QH`YNYY^bkM!A=SGjwV9{GmP9;OuOO|k_C3?Ma)9O zvd2p_(*a9&Uo7)A7|sgTSd_+z+;5iU{$FBu53~$G?~~lOtH5)8zv~e+>ol zfY1j49(bWI#X^x4Y*n$d41^s>v^?j^B4_|ffJDs2!ryjl+Zst8RBANd99zpAyrNoy zMds9^5nF9CWu^KFfM*dav}*~M#I4?>V|OAA5}Qh;3qw_F)49+YyOaoFF0DnNy@3nw zy>PT9;|U+>+LjkPMgREwGYO3vZI{65Yh8*L2k6ev@A0c1N?fN`?NxS24?9)4;c1 zpmeY~A)=v?;0=_;ezz(Si>hp$iAxB@2p`f$>5^1~vu71C z1jzTPf-ma*Nlb7&yN@791Ij#<&OD9zSMqTNA2Jd2CLMQnlAD%G-_B*Oz|xyE`dLYh zH21kotMPFuADj5lGE2Hz@ff~u`%LCs#)njNDj!AWCo)5CTAumH$3JM4!lDSN@J1Zl zO=|4>tjE8p5>9Mk`kF@PAl`c_gDIz{msutNQ9-ZcEiN~pW~+%$RN9X4#ULo+FcpY@ z0_ZrRgXfWa$XK{rsX8v@4jVSdeYhh#i9Q=K&YHfyLB=zwFVcnKop3F|niPdE8=T@cxwj32Bz`{8l8SIOZ z5YDeG0W;cWM)+ITO_M5pQ!UOk9K{~BTuwNl+rpiap2B09`_pxNc3#P+I9#w_&Y$v+ zi*$&fuJ*>dBJsuOjq6!rRn;VGGy+=Z9a}>>Nk7Fx5~>=z)~m8`iG>C}Vnov{Y#K}Q zi0HKQs)vM?@Tf*~hJ{sEYhSbzs z>>;^^4Owr0ih2(LwoW7DQ+%Ax+Am_G9DEZwH5`bEK1Z{+1@%Z)3P+M&FDQM~=+%0^ zm1D-%=1)0T8j(NNaD4I&pPECf0F|mVY*zl6CLX{t%@18j^NU`P5Z+|{gbfK9-4B-< zq(pB77$0UB|2PNZ_tdq;3Y-pr`rU%j>F?otE7Dh=vWIE$d7Bf|Avm1=>Ow;Gx|$aGFFjPTi3-+8C+Nt$fH}Pj(+a=m?&bY z8Ho=Atz=2!aqKjmeTj(l=RFgHZxi}CrvFx_A9Fh3^J zbkc>vvw=YFebe$WT=#y;Tao6x8R<}0)jZ#ofGDq2^ph0A=f}V!2VidGBxm4>{zTLL zx2k}5(DLW?uBqSmd5&x$I20grVz3=aSi^spne!$tr#ZkAEk2KK(@-_(*w^_vXF7-1 zrn&!QOh05$6@P=LDNM}AV%<*kuj1Xz3BI3mvH_Bqh6*SaIlS2ko?Qn&En3IXDbNkK zbV=z+rK>7kXshr?fiS)#Y`tFu^KW{;gYS#h2okSUpN;6Bl=+9s#2(&poNOsVt!NTe z7v#z()u5=(PKYZ)WDZBzY|2-=cS?>m+82CxKDut;*1`%vScuX7n~?V4wg! z2jy=GKXKBQZ2sv$Db!+CHU-$e6<}+HQ@hG(1F}$ z^!uu0iTO>b98IfG){11u7N*liMKYHiP9;qY9{x<{u}(CmKleI`6`0w_S!?+KZ8KVP zs-X3NsuYk9YP|X_6DH)K%mz-=-e*Zi(+cRY`H)A)D4NQn<7<2AHm|s%FKUwhNEPr7 zM!i$-m>pQR_i}d3X$&#Q!?TamQ%$z}JUPEXZh=bLAG33x=cd`}Es;if#ypRNy-dnl z0)4ShiGCc3TURJiLc#k=qomyh15oDnvDpoZ!%mou1l@{;*v5g31Z=k#+qRVL6JB=w zjh2b0vGvRN(2AOEJ1kWz3~|!2B#Wy_*=I`jahVO$kV>H{^s=5s`&LX^^odBh!dgt@ zA6I$(5-MmkT5v0pQ|lm>H;_%M6|QL(yFLHlDh%&mCvj?XVt}C^t;AyWaS@<^>lpy& zmCP?-m5pQT8IF|Ah1EzrPl`^$iX%k)rK~HOMa*LeJ|pTOeB6?*pQ2_2#p;k3SCiJn zS`W5xObeqtg(%Y-Jwh-TzCsDyBzQlQ;3s%F<<${4V)>D9xLL|el{_@jN5!aVqRjsE zXE6LzaVOA{Z)5;8?K2s)e)KVE2P}kJk=Gi(xNfnRhwe>MM`h@ApF-NP^eAo-1P0Q? zi-?Q#C-0K!bh_AKwld&`0``$*!Dt0e10^PPD0{|_wL4hVAF88(4%2fVy0tI_#LIXP z2}?fsc*wk)57-75WbB9;sH9D1#Ynda!!~}n#p8u3R1=U^us&Oaw%t^ zr-E+K1!^sH-$;xadn&@XvMm4GLRZE!M;vS{Owy34W-S!nvcItjFsU0 z@Rw300`<_xCexo9^rNdaV>%6A6B%#-**TD7yC~IY$7MwGKM0ZPuV^fx)BTG1#EiU8 zhzHnt({0~T&tT&wuZapHzc-jC7gSk{_Y(JE>>x&=TBNpj)Tb(>8U43X_|JjpAaf2V zreprTPpFRmQKH5xCcHy`cr}3;SX&DuLMGgwmFfeU#_h;gHrvZD_PZ~F=bomeZxftL zSwJmwJS=51?>MfsC{ghaiRbU@{hfM0C?@S*h$b1yRnC~;ot6(pHZDzCyFU`YiY(^E zCCf${^oW*`4R2*+^C0?9?JT@eI}7sS$h6VcoD2$C9;+&J8w)jp7e@X*ZDAmE?Yqi< zJ2j@<=Bo&!Wslg9qCv8XzcTu@zP5gnwh@uu55s{HxRhq|LAqYM-f!x5B++2wp>7?~tBO^v9qHProNr$4NAW2_s6;lC{wVZm9zC z*RmkCyn-ts?dj}0hcsPpUUcYup#TLJQju&NT&ch&WN_Le9({!!H^U8UqD9%Pd_&~> z-QGz^BP*eki`#y=Sa8JDqRno1u zMYB_P7AGaun)a0Fw-(%a?OXv&VY)`ksJJkXila-I(1jI-A@rG@B3)!3iD|>+n8H`F znXJ=t56lc`;=gHTx(Ef07fn1nOI6!UrXk2bENd~FLGNqfh3m!uq(IUkeA;8NF-oWjIuFC|$%IZ0*YueI1RN<>=K?^skX+)053& zpP$~FzOuH7uRpR2-CrC1C*PaoD)a>B3uTO1&MfvI^vc=xAri!S$Q_2`lljym(F$Uq zWcW&nts0ABSxtt{*@yEW7_erUx#7zL8cuL>JHR3OI}PTe;`h(;9eV?x&@Y(QXu|KG zQ>l+B-FxJ}8jnQ+FID&drIHws9Lhj-3jsI8I7X8uF?by#xkWd|n#5`O$j{kc#RzHN zhK0ehjN!M?Fveb>e!PP}mgv?3iholkvodg(t9~ph<86BXge>{sP|MgQf34gH@#w6U zchoNca61QmNHLXOe0XAQrpF#WhLv*bfkfO8g#@Q0=Sk<0+Kc_AZi6R7z`m$$>%J@K zWV_Qrit7pBxke4&NcMMv>mw?YS%@y#ZsvgiDonT8#Q9zVpP&pcjyyud0mk8NUI!*P zB1|96X_mjB(~KO%=bc2yr62$ZQzFdaZ#u;e4+7@Q_Ep#`=V%|qR(sYMCDuzrz-NJg zj<<`F{$207^b3^fcr4tWg?yE2M!w*BS;cgFS#(!QnmM@tJdo!72KVm^2wa9%BNzFX zJm<^N2btCM&P?#Y8I>`KmUB`hSCDGhcG9&L>O$W6gjOBc zmn={eYSso1GNs*K#hyp>b-{#y4q%@;r5&Vnh|4v#QJ;j8?`KKKYl$WqUnS}#Re^}j z@L2emO68vh5{(K0i}NpNH@86h)s#N5v6OYB{+9}8d7C?Z^v>s4n~9V}ISUZmfY_2? zRuMMSm|&x*7Fc?`L4=iq4N)23zcTN9CZ@qe>g*LV3B9Sw3Q8 zhVeJ;c9-<^kLvBC8TyLsDE}Sm+J5w9<$sX*{!UOhyd!aS52UpkWS-Xm4%L)_4iq`k z77jIFLIl|4$1L%~vec2o2&@75U`A8r{U3qM3Tk?7<&EhCexQ~)>BNIo2}#ar66W3! z3oNl3Eoq*7ySto4(OWoYfIBPnRH_+ytH?sr0u+>JxFu>+DIQZ|47^-88D$+zkC3d> zX0iCb8_;Kzc2NTbDwBLm2vBskj5{R(dKCpKfT4n6-cX`I7!y@`I%a0$xQYflj{BCu zdIhJKR;t}W3bfbb5lrLOe9JbjwtrD1oRj zZ~7m5IMyKu&=#X;e+;Vx2|sGsMNp(`{k@Y%!jP}G*|X7;Rc(@Xct&Ez5YWC%VG2UDW1>7gZH>x z&mV8q1Y&yePWydT8_P=$*iZ=#^K``|nDliIN+MpHIBS?CF&;Urx_B-M%MQgikPI4VmNOwo4u5bW4bg z%#H>cmTZ;j!&9-1t3EI+QqfSJzv zTg&UlfA|bI`wXB5H>}{675GyRm+h`~gt&#Xj9WiC_|h@)?S;?Le9Z)N`n?qbv3=0P zQF=OVf%BpcF!9!gw=)#q+v8as3H#8T-eDGqD@EJnA+yL;d^?p7vTG9`^Pr)E=!kH} zK`eK!va+^sPtMhzPv<@Z*$p3KcNujgdu0c*BEj1Y(c0n$v9xIIz0#aN5lJYPXOK01 zD!eGfwi|x@Kt=vS8Goi#<7q58!N&!BIL<|~#5R<)-ePnzCi3Yc$4i&PiH`DcV*n{l^ zrpDnv>lA21!f4~JN1A3abd+r2+?ifEgA$@r6k4Z;H#GcGGJ2{@*6E{q)vdx<()A&G zYYgH|9D5ysKAw+!i*k5St~9Zwl{Ba-H?g!1G4sv0%B_0C>$pNg(WivE+a%v_(>sxxgQ(053J&|u} zExYv~c6HQ!^v43g7P0(RwWJER3xT3r*;6Aj1fC5O^tndRZ*fVG_R= z<$b|7C&RwvPL?^6k4N$$%Rxw`KD1Unk#A4o!<%oSFb#;}W>II=aaop!d=<+{ib+i# z!=I#?zBVG8tBxp?EKxU<{kCa1w_QtpQW5qwG$!J(C6UQ1GodXc$HtJl(&{fE2(alz zwQm8(9ikvIAc|3DcH(t?Bs4Jq5Rs*Zx$b0>yr!xn-PjdwU@Q>e9=G(r= z*K27j8D9%UgyAwyc=5WN`1*d%7|=>Qwz+M}K6<`*1~!PeS2h^OA4bbN-R?THbfwEz zo*1qw5K{|ZlD0$vHEX+ps6h;j){303m^s;Fq*Rzr{;YWTCOVPQ^TE5W4?5vyh9@Ag z6^T!vGarp#%cchfu89=IH`3aZ#2Cpb1dTohuhCXMyma*kt%jJei4PxS{jj)Ml#jT% zI8OyyVlE*=8dJ1>R#L`$xK@yFEL0Un9HFhIboSEMi3O%mvL0UU5b>ShPyIEuCRQ#K zYlgk+mn2ZAfYwDzzIcKbk!IJALH;Cv_#O`^{uH{;;~NE|e{$k|0nC|vlgJRC zv2fRA>dX;+3l$Vz zE@qKa@K`kODv@2<=u&BcmSC~xPp?XZ?qWe@lex8$vb!~$yYUG@3DxUZz+@%73gCGr zs;b14`XF~NNv5or49MlYWJyKHsw>NgF1eXi*|k67(d_d!Tn(7*E#aj3vf>n@7qXxR z{9L~Iysn5)IYRWg%+bSPmMZ>OCK{XR?_E6#JcD4!66%~B0iC&$mJQ#IGqnFwT`Dq462T$x0HPu%M9~z6d%u4>5Y875D(~= z5x%RR-Fy?KMYQMerwB{(QyJ-l2=?i9H6V=TbNd~vpc1@$-$whC`M56qlhA{ z@hs$YO$2y!lXMqn*)pdM35|6G$TvI{?4$+gCaWo&| zjC67(-PrR|=0nvYB+=xRtU_>FHoN!mx47h&_?E~vGu9DE^No{;zaaM^1oCP8(`k16 ziA+}L!z|GawgV+==k1TD(GMI7f>Th~&O@%o>E1vNsoI8|Fr=4ysRT<*6PVe@H|0aGS-&tbR&7$SP9yVzY^?e$>kKAKgD zmbUdDiQhZv-cGi_hjsWcLM!4vh2)MOhjM$IbOK)rEHgd4I}N2F5Fd)hxReUeNt67y z6b3Ai_H-xFl#QVlP3s3h2T3bG1$}9`W!fXyW&nZ?o0Gfvy!bHp7ycCDbWt4ybTl)g zBR-@k@vUuqkRkUeh96EI1cV`l#IfpH0*yePwLU)9x!4AMm@X|a#2O+NQiwM)d?Oku z(kl&|QDWg9D5*#*@X(Rm@o~^aprzATZh>o-+AEekLO5~lD@r9bRvWl{uFprO)o5V# zRLJk(_W64%fL>Ipx76-6NDpxFRZv4EaA}_*_4VmBItP31Vtnt#(wxnzzP>RHk1**iRB%y?*14<?&UbdjJ+Q+(R6>&yDe3-Ltfn{ z2vA59g1dmjY-Fpl2~WfA#V@!HM4uk_EeO`*TDg(e+ZjPEjVeS_Np-A09L1|S5W0mr zOKS<{t5DR@&)%=o^2N@AjxYS=Tr_&EMercCSg+sqSIi-C@tr0*y8A1w#rDb)*ipQ? z;_HW|PV?Zi`#9_-5loGoki2G8)LtvFVoL3Hl#tl>g~O^?a4mj0 z7+A34OD!K83E$e2eSISaZu4R`dApu(nq*m{*WxFX!ih}X#RoO7HOH}h=dXtRlnPhXaNqXjJ{oa5?kc3+P1v!4b<$4kekMbc>qy{s6X)P4&cnbD5 zb_`&a1n-ROyM*I|`<0%fC6874dJw#pWKBZ^M4xKQs|OCa?S3`vo%n5w5Xux+AR!t| zx0S*;Vk@||n}5QE!ZOj0!EbEyQO?=vC8P@Pl3vX3c&$z*%fRV%03q}eRqHb7SN32X zLg*k!($#9P^9X9wcBpii>_GL#8h{*1NYl0(KRaH^upa^F`{ordTmLqg{uJ~?=YOg`dc`&EZ4M?`FOq(&A8{E zJB7%lPVstch;P&s2pcQun9mH+wE-s~%+ytW<3T2ych|yQbR>Fv)-*SLe0{Ui=yb8K z;B_TFP~dqdC$u1;G-Wq%wW33>oZR5W*NhS+Hlfq0CVG8`S!`rszZ#>*K!}<64L|4k zQEec92*8GHyqbDzB*72%!WQm(DdDJ&t(O2xAkwo z2Y)T_)uC#F!9ojP|8b`!@+K2v;dnbP_=Bg!siT_}8vadnJ3LukGoJs-h8XEF>|6qY zB-u9RgcM1P9n2O9>8DVtp^8jNZ7sVBCRp$SJir(mfmkfiSR>3VOXpJJuM9Xp|4Td- zm*(oGg0Q}_(S+q?(>ObS4j$oa0x!aA&w_(Y+QzkyoUZ;d+|p!39+E~4$y*5rF(!>m z3p6drq(52R>%mL-Hp++mNSZWlbKq+u7crSm^ksjf<>~x=*8rd1IOXad@&W`V?pOOy zW}23oXYuWse5h49L{`Igti5R*o9~3y42b*4mBG0tIDF6gYIXw#2Xn}9ymz4%wx6gV zf?z&}4UF-@Lh$I2fAEK0;E&EjH&-ohB-+4y>^YFBQJ>I(M4r(nsci|AD*hnP(?Eptc`fxM^I zeYbVPqVq(i3i`|WMr3r_?H=R~*hSX|s4|Hd2^Q_7eEy)g>n^n-hl1j?4a5nKOtySs z_)~>)P0z_}T1&qzd{bI7L@S0u8gu=T8M{4PXLnLtUIf(O+oC)*YjBBd^{k$Ma4A!qK;_Wy9h~Y$Fr*f z@&t%wYABDnd;zNw$@ZFPzs@mSo0#ZbUiMqY^(aZQq zJG^5ZfB*8U`22~WSFCt9a=h3LOjpNG<=YeS=$ey+017r;xxQi%@NE3o?p_gk$o$oS;->dZyU=9GGSnrKQ(9Kf8u$?4rn@R!e~KTD5%{ra&x3@FxnKMZdj36^Dv8t;Ny#Hkc}3>SC`7EOm9!)!$2;Z(i} zN0WG44xtU^k{2?Mjr4-lA)SWrLeO@wVLQY(v7NYzd~2rESO~rip6mEV(Pky7H%V=c zo`_pDMb5K~h)5`tj6IEM7xE$DEo+G)-J9!wKo(o|of_CxbuSX|sw{STD40t`avstC zEL7-e>#5Ud^xKO|eONl)V2RWh*~q5>Te6e*sT6c4JgQ^;WKsKS?eY{KiT0>uTQ+6+ zTKOha@gt(W?otRHAR59IB@EEwdR#&tt06!wq)77G@9{jAPP%g+VsfE=2XoWTIlo4* zl%R42Z~AkTML6<|V}yL}RzxZi7fRDTHu=K1I7UPzsUeN17FFjJvSrmq=59aQD)2S7 zJPK8@g2QK;*R5;7A0`HXG8UC+9gxn!g8>^PpeFf9!bw7gCrM<*)K$2BWe;?_I5aL= z6oy%`Wsmt0Tx~LY7pxJZidJ z_*As)+*Uv-`Ul-691=eJ<}di|Lm#G1G7m5y;@8}Zhe{n`EGi<7a8OX(MG_Qbyav2e zHoT003wp^qA{bo>U|}^EE)@5mxybb3uZU2tE{hAbDb=t`f0!Lyzz2bIe3QRPXou^n zw-f9!GI+G27-sp(aY$ z(nG>t>+30&I|dJXAe(jq&=t~cthCS{B2*+9u4F;<`-Oo(MmI1)$YA4HzbNM}+(|~c z3}Z>fr1KN{_E$W6wxcw|0`$dfb%YP0*frCxgzx7udz=qtJU{vQEWT~zL)@sJD)(%r zjq-6(@)+aW1Re+rVqa3X2)GF!DFW0YM1t1TdJF4};8*mbE3V*JAdxON7DYPE6!2az z`u;6!Bt+C(hq7&S#yurn&WK}>Vrk;eY~a9_Z?kITcSRB6QiS)dLmEH6dJ^-d@o3tC zb}e3Uy|iR5X&22)YJ~tQ&cY%-G8WeH9GNu(!B}oO6#W_wK_-&!n%l)@uw!=={$dHs zI;25zE6zpsQ?Zw8iJh1Z#G%{pTPihA2gl9U<3z*CrB&$Q#!jM@=%GvbZ_bs|R~pMl?2b!pBksj7K8h1Q-> zC!7<{tyaIYzG6e+4^ItS`Wm(B2%ekSympPGg6QDlnuSUQgJ*cYW>Q3CnZ#ZZBuEbv z;M8Bfuk~N}Jb*q`Cljq_CgoINW;BR<(;R58>{9&D!?|XSSwxaZ%0`Bb3{oNJI`o-3 zJZ&&OnrWnh)OX+|4u!S972UVr)Nm6s-oKEkB=K<}(@x=o$gwH0JAUg}k&~T${DU(P zzIi5QawOkH%$I#7ExwIExir)VF&j3c)gx!Yab=tE7QS0g&X08UP&2Z3Nc{^ORnTPX z?PL~pbd%3c32^Z!IU^i|_6k_d3W;eWECkQGuzJ!uT#}7CFX7`9OaN}qTW+lMBa(Sn zXl?n-tmz2;TP{&nbOgX3mDA`w~{(N_oXY{~J~v`NX1n}%f3=0CRd zgf5}jAUf*U8y`BP+p+Z^bAfCmIjV_~U9VLUZ%;#)M2qGd9OwJ2bmI2Q07?iXg1D|UH^2@CC-Xi{{rxpBo|4HHYmU|Q8Wk;$t=fgt#|B@qVk zL$S?$&oJk5Wfe!-Shj8SNQkhvZUYC~#G#V6;v6}|ThY^z-Lfo^&--!w&F^8DNA!Id zhczmoxgXuFsW}tHqW{qRn97Hku&M;t8DYX!J~RZ1%$~VYOpdYTi^&gAf$B@vKbtT$;?@LBtw1M4-oy+Ze1R<@)POkK z%eL3pmh?Mr?&#uzuT{9(un@1(zHbBw=Mn_YZPwXFYJ>jQ=q0*Eexd+@BWK$&sM)jz z7I#rd*qM7J-^5&3;SKRqqNMAXsy7XHCw?}(V3F73p)4vU>ARHNG3?#Zsb1-aJp)ZQ z^I*^k6*NZM;eH1l-ZgWgM~Yb6(&K!~uq!|1y<{(RIF0OEg`@(O5J}Pw_vU*y)pv)! zb{$(Gun{Oa;4bJ^Z6!}SU@_Q-)GYNyI8=3Geakp#uJlN}nnIDO>e_!tcGn?RZM84e30spwz z7LA?AhcAYg%<>l^Zlk8`Mn6-FxYZwJ>{JyaT*Tk+ViD_q&H2Ur>Bx0op7IV=_K74} z@IWwz#{oyWaX#v+;eSy%wNXzSevk6rq&&m)S-pEtrlI$DtBg#YARcuJLzB-vRdhsn zaoL-Szmy3^m9EH+?@-FO^lYjX@-7aP zsFq-DWn_Tnl?B_2ku>o@p*RKnqxVHzlG*HA_TZFhD&91+({R^_| zq?@KuteNp5OGii?NnSn-*^9Dqg62~z8Y;dc7_Ua;7`{p^4dU5AAZ630*k=5U0OFZw zMNL!khgT7)I8psk`-W@WCDl)3RpJ+}K}%VxS>yUlytOi0a1?({Z1f7)YSLI zg-aH0qC<`#c+rGfAz5PX39K)f`MBhbX}xej(WZsemK27X%Un!hqzCP%(W$KP%z=0T zn4|^&<|)kC!G{V;HLA2U4Szat-Pz2+x4&r>^jEv7*Xo`st1;4qQEIkUUj)>*eT2)9 zI4qtdCl|;5snmC4KXP!63r-D4aM_o~1rhyw@N^Nk*{06GZ$-DjVIYY2-VQ0I3Bksw z1P;LG;$tsY3@53@QT0{MF1L}u=z$lY1p@lsLA-TcDNO07xU~HNt41o&eu4+A8fu0I ztQuTGBt`guRTDj6)x>A-9Xm8u^+xtOmDc|#@F-Bz87CpFv0}2sAY}d9%kAT5D%^` zJcNa>IJyCw3)dnGEVs7cdoz!L-5O<(c^;Y(cP10RY2G-@Gyu1$DhT^xL2V+aP( z;)=sYD~gfZ&4s+?>=10*u3O(MZ*Jl^kYZBg7tuPLxa)~7`(g{Pd&B07hA*~w7@b3C zo|qKX;`kW<`B0iJLGo>pU7SS3jUbtT zn~!lm#Qb98A^sGj(rIDZxs3Rg8;Fd95DQV~Da;oFFXx*mT#R-)i>t-W$nYt01syGe z=8+}lIF)r&Q9WMFpMvy6ydkDh^dVVs0<$y?qI9Kc3=)%>%AREqKYB2`j4@TL zE|-LOL6fK9oy}Z(M0^dgT@cR9FoAriHEZS8rb!+_Q6Pyf(0D>-6;e_C0&1_RQYAeQ<09 zH8ySAy=%|H;HIrRX0P5gI5D{ChOv>st9R_aYU_^8^Rv4aW}b4x%*^)r#}^8Ypy2S( z;9RE2Mca2>y>JZ*x^||?t0o4~>%#o(wuMV>*s*=j6%#M6D#o6(4Q^hj>UIX*PET#C zS3nf9hAOfE!t~Vi!ZlZn)Yx}!&=`wrPA^oo>Z;e&_geL7TPj*r&8Izcjf%?Mb<@IL zvtPFN?3?$Ry=TYlw(V1E0j~aCWN2?Nylltpu6t<3MdDWC`Cr(6)BN_C!MUj$Zz5hR zk~veQ`~5dW0|R|uBeZd=f7BLYh|f~N@jL$ zy>|E7lsU6=c2{M#Ai3n`D~89aC@|!13E44L%$9YH<56ItE5=7&Jotpcm)C2xvj^+7 zIv({2zKxzeI5`=ThKItBy7F1Fj{JIk4C&*1Q4)SBeG;XHnanmPhtD1yRf}-~YYwrY zTHKNAv-3%0j%BNljAYu<55VGv1pyyPI|;yhZ^GRT#W1tgkVL3Bs7w;OW76K6OomHL z)Lxk(xFW(IRlj0rGDW!t3_OgZpR^0WQ68&ih@jMKfOuaDv)l+KF<17UAso75e9RDf zUWFB6Ye=})PvJ~&m;us@;NG};djNE}uH_q;vy=uqy!A;wDEzG}caO(1U zU53Pz^!)5&2R6-Zo!`3CHcK&gN_kVYfinkQKCo$i`_+S+=H|Cg4<5c@?!4j2CqgzT z?W+11lIHiEHGL42k%)ggrVWowC}dHBU$GWg zP!+JNVn;xIb08T^3%kmkR<_){jDqE*F?bsdqpJ%0c3Ku;6UVHq&wi_2V-B2Hk zyWFD;fszFTVrIhvz_>Zz8wh*DE~Xct;7H@-90)^T3G~k9=7(5&erPn`BxuM@7DfzQ zt4Sv3n^Y@qmzC#-Cd#AopdZgE6m7{|=Imm)S6FFh&1OtqQqq$*KaD1?$eOvfn^7`@ zrx5@EoGK-d&oFQ?Jr#_xLKe^vmkv}q40sAjBN+KP^^xKFq-)1S&Z6gVqGAFXdfb3! zbI;gFJmb?s^vF1B-mqiSOJ}FIr#Zqt0Umk$0M-|qP)+ncEL2VtZs2Daxd|$0wgG9V zc?Gj*5aou7#^RyEM9ekH=|dGwP-Ua&PK|Pnk!uvfYkDe}#Q8=kfY>NXtN|&8!bY`t z$Tm6x+{KL+ARQ5@OtZuqjbaRHbf^I72#`HJg_S`8N+Eihxob2?F+wOuiVcc%cD=0F zpeJZ#?Fj-x)L?OfINN~m=3;}M9OkY8Aw{-Y=2@}=PA&$V3DH&nv`%83Q}wwz zMzJ=m^`Q!2bLB_TR#v`g8NYR5_s)2-$Mu%Q}_TbRy7^X;i1d=C|m>w0q zQ>pE_;i^Qqm=~NkjlA9So2~*8NbrmXM&WR$!${LiQ#;F?Gcq(eGC4LrG>Lu-Bvv<< zjiNMY3`({>oF6wt;lRNB_MHjoP73$a?i;;ACvUo8*KDenK>~@09eHK|bu(<#ptB;<3=Cy%(&YrCdRCGK5;Vt5VvtG6Nt7(2!^2{ofR2$o zI_jLd92rca3R`tz02}B8OnYD{Fo82aS>HH;xd&lFe;0G=W6Gl5Ddi1~tXXZC)CBcX zQ411$tRUnQT3=O|9u5p7=RcpdvRE=w5ZFEc;3=&ciLaZ^@99X?> zKqLSQFxH3GMo4|gpwu~ytT&NNSsgl?$l7CLGb=7eAuH*r5K(T8d7i#Knn_%j@DD~_ zB(cDlC=f`jVAs|)GwLcBIiN7CR83DA*r5Le8|FV-8tuaZFP9#5>DYV>Z9~UknNuzu z#*O*Twv91k;an~~?zS=7Y-tQ}5|dFtX`sJ76`f92f(Y$04Bjs^GwKQ5Q|@52?q<+I z78*+ZI)#3*AydsBPJgaEga8}|lZv_Hk8=E6mnVnM20I%#RFM@> zR;GuElxz!}G?BqrF)Je!idg|W6*D>!uv4DViGYbRfdoBUF`*MN>6B+^GG^*B_9g=& z$|#x)h^WBcWX!A;?WJ0*fQZQ$5fxnpL=l05E3(v84F383U zD-aYetUzFR2%KbPQy-2OL1`ygCs5U)a&|;v{WnS5rI1B`w-zq`1O1Y#$#Ei^rBE}& zZ?T3q_Ocin^V%QaBU}&Wmu#{9KLR2FOgrW@-8AsI?BgF`feT`EpKWTiytI^W+VwEL z94g0BvOJ?)v8r;ML;jMIb( z4)Y9rC4SPdzW`F=Qh96=9v|60@gzdf#at7T#(@z9I^_EpH_bAa4OR33dSD;0fbxBC zqZ18Y1MFpi9{1ERcZ~*7Kn)I~LHsNG`o=LY_w4KQ2E#N9W2m6jp?aS0X-DOn53UBF zGw&{|^6PmMV;E&C9A@5KU}o8~r#*)`Ri7gS1gzi^Sqm^scOEbxNNkz105kbi+ zurTY+Ec@|>Bq3FOZU`JhunKb0VCCp&9JThLCY*}b;KD#0HJI&I8R3-|fLQ$S~+F3-T{g%9Tv?CH$AF7x9cEP`o zQU$+V@c&crW*m3+-aBt3mPi?IC*upCk+Sl4i2E^F-kTHwaK{O($E8&YAN5;7!v-10 zN&zbcVLy!IyyDdMf0`O}B{(ox3rrvlOpXQL9hV>!ppsW1$G*E6p**KO#x@4mT~#f+ z?q-Peyv`Zh7+iN%wd^{XA=cPcywo4t7&`&VZmJ1LF1o26(ff z@GM}24%Z4~Mx~frq-xW==&2gp7_YtQ#mTN|>DMhTnNd2JY~0<*mBz%371lQ>9n3iT zfODlmVB;KA4o~rFoW9CjX;4jZ4U4ve-AkRED-AhPbZww?Fol_uD-CunIpoGR#;fz; z*kTE8Buc~LQWvFz$vh04XB$^cL1~!rB3`m7hk$qyUv#LUhhRh#?Rlid%k|>)Q6!Wc zSZFBB2-!XdDku@|+fwVn*d8g5B7^<{L>W})bK(^|v0BK9lX2L@Qr0nPAJ_^ZAs1w7j7g+tbyCp1Y?w8&Ssb2}h5itjJQA$UvPei5Ki=V* zp0M%~h7bl5FMc>^pbvk_iy!Tf&B=J1OC)A&H@hN1fq^t!wA(NjDPp*7MqT;vzJRi2cGYJ!C+F z{9%||FrF5W^h!jkm!rID(>HG4vF)a*-E#{UTr@j8bpA!NL+77=@3)qR?zfhQ@3)pm?zfgl@3)r6?zfi5 z@3)pG?zfgF@3)q*v3b8S;r+*j*e*?>hSu4SLJ3aI`>p9LBkpIYvz)k}n;xqQ`Yp%z z)`x3pI4>=M4fE%XrN!v#rtkB-`ba6lH)PSCWQgy6(=Tuu!KJ3q_#bYb7HsuwKL_G>SdJU_ahc^rg6HcBc zxheQALSccgN9@#ahM;Ej8r@t3j9aqFxd*VshIzVSiU%SX0ErxV%jLESCICYpD}v^^ z^-bh>ozB2Wh>~!&BmhY1&LWgE@(_e{VU0W0bO*^fa&>Y>NR#Ff&{@T8<1|x)MZa)x z<#vo&evX-QzyufPSw~WRidzkCDm{xN7*LN6h%9WHFp_DqgOzsgJUsz;4gz9zj&07N zJwTB24pc)RbPIdH9jfH^yF!&UsA|kE6vY>3JZwC)nVyQu(v|wsna(^RqI+O0+XQDd zoLtJF#hcyQn4hl$+-#O+j0M0Z`Tb<&OarLcK^iEEF#+-ElbCelEKR+l20%G<;TNfj zdzYjt#0#2;)AL>7Se2**UYaZsb2B|Ynp5o3JQ}v!E4xHxbxDy%zR7f{%Hbqe+_1?! zd(?{_RBoMz98E{aCvj%;L=oB##ZfinO&?o6}=XtSy;_J=^lFj{eFLPbPU~bR z4Vz?DU4(4qB8md2073Ijaw!hn^dJbQ$HAJFAP{3}pEOa?x``3bV(SzWII*SYIC!nP z^%$>I0Oi)bJx=l~v_2ucht?-B;nl4JEW$oP(=SJK+#^MXCt>ZeV|rAdMqR$XCoa@q zb96x}AS$$2-*|ETwc!ubkF6)vSIB|IgOAjtBA}$HC)6^F6%iM>-|ArkqNN&hsIQUB zddjkE@ZAUfvNr0_j~Wo!;<_QNbFbFPu42)L3aY7{s<=zRV-_a6B_qo{R-{m}Joy`5Uv8 z*C{?EWu3w;pscLc%&SAj!(?+b_1>4^-g!1lqQH9?kYl9*Xv!Fo7gq}^r5+zFg^|E0 z&0X8Cjy0Hri>RMUt>`0RA~sN zM;5@bAau;b48(gR5nMD_yBArJ~ZPaCPy1z{1=hyF8^JDaAUJM#`&B z5Vho?=9=RrG3X~e83L2bHWq!4jdq4JagiY?3snWlS|h2~#Kv%b7Kb7Zm{$Hhv|v4@ z$f7KGWHJI@%TawGMYMiSp3dm;aWpX&pInipgv*_D?5C>$?f$%=q9YQdDN^9Ba<-yC z3kC8N?_;h$0t*hyRuaKGzlyANAq~Jmu@YUYYE0J(ODPjJuZS_cMKMt``FKWjA})u| zI31-lBg!;B>0&~gd=$j417k^$z+3Ld2CuXgggNh0bTMQb6_vYK6(YRQ;nKS>5YGiI zC!d(-00ZGoaeC55)Vo|@JPxOCi(#Wqh;{^wS2Uh{>CC?G|&5(?z` z#cM1_X~*L;F*t(S`Bn3#dy6*Avsj6M&C4MSUFQ@-JVAYmf$UUV!J5%PXX=cT&7|Tt zP>W;$n@JW$AQk;(Qt{h`G3ZRPf|gMjqspY}J|?z|A?3xOkLCwMyG~oB+TO(2s1|Wr zlcsK#wQ$B)1YvcumnI;H+(gM*uZJ@afk_!fRRsk@a@@l3Mlf+15QE@paM*rjGbpBJ ze5VG;X=dT(cxI&dW(dfP;uj0Ko*?Cxgg!460*d19kzd(6D93|XbIr*0l#7gH$C-ta zJUF9e|BQ|~RQ8l0oXu#7!gYvrd^ViC+}WrpmkPH52?RvJu&_GR?V z$mp98#is8o15Q#Q+7~N`ZKcdW*FNzutqV_c_>DEY>i?h>Cl>-H~G<9AH)`mLLec$ zGbolhFcS+m_EUu(h`oTH;bb|TZN&4aH8rS#A~HXbQsXnUEC4Gy!DWe?=6B`b&?Fif zG3!jCv}5IF|7ao(*Wh8QZOO^G9c2%GXVq@r}I6B)qqZp22!`g zoZ)OroQ>L5D5Y)}oI_#RTyopd25<>3x(g$b;+>J1FvA6V#X!V+a$3)X(nUMls(Ct? zHImAepkgQnWXPvw@<^3Jrds3d^3YTTESg;-)y2oa?UjAS(>D}01IuW^q{Pr@$FP7I z`9x>rF`Z!md>Iq7AeV z`)Acl+`d2oN(zJ)^cBgFlm^Zz4puA`n;U4Ln6HlOGE6Z=v`6xs$wNNCf{RshrjF*! zjH@Hh;CP84I7k2(zy#9s{1RBf!e~u0<3S!zY}nf@O+8(jEWwGxB=QjKg>> zPnaB+fwf(lzSTUaLYYku|pC2;9NY{`-JOpAmLo`EqB*2(U#J-G-l#&B-h9TY? zW+pIY6(b4rr4pJMo=BK71}r}Gm5C5nZU$WbS5e2saM?a%mmO<)fxSW zX=lMzSQ?zHpTz)fh?9K2BqB2PGNCggdX@)DOAO#Mlxo<4fiCoc)P^V?| zjGLS+8zDMZ6*xE?zX?N1Ie17XA7*%CRDoUs%?Glo;9y>uxnU-=G$@d@Tryx?O_LT0 z1rF9?ZzdG0t1JdsAXqWQ<@;T#L%7Rl2&Mek#v7;tgGwv$5kn7-+qO5fYJOE+krlfK{72{ho>)}X$`nOm=kuWB(Qhg3voE`oa>&JxYzw~}^+S2}m zDH4v}&qNh^^ zfgickzVP;7+I&VIK_K^dkOW6TuirMcYx_%akYsEG2T3L}2T6RK-G!Rbc&rf+ZV?kF}{HMh_G$+0gw14NErG|3Jf%JsfbLVW~RUbD-#@ z>L}2Gf~D&4(1C)b>bTK?f(3S1dLHLM6E7^pg9w;|N%X>eJ%})KFbQ9n*as124kqyn zztTa3nS)6HV<~X(U7JIhZ6cHWv>f%w#1noEHal z^#-SIikSlrOjZIPXkg#~K6o$#Z}UL}OjZIP@M+3Q-~$d!RstVzV6qbUfCH12zy}WJ3a?gTZKKe zJXG8?IBRtR|P8~K02^?eS1}~7@RQ@5m#x~1uLRTI&9$v@Va27Sv43+b6v0)sW1}p z>PkM(+@V*iSLJy{kq`LdrR;Ud*kuRN&W;d}t1J30qey{^!4lV{W2)-;w&lujrMjLW zj8}#$RrU&ezAhb8ZO@49E8{Cw_YBjxGF+*?XZ+lC;X+BhWFKN=?v>$6?Rvd)xhmh6 z0PxnzVdUSH@s(QkOc!uvxKe$ucUjk^W2*1@+VINwO7%V8m|YpJR^QvJ!55ZS2CG%8 z0oK*E*VbxPgLVB)TOqlJ5glM%U3YD*?g}FE)$nzhORvfXbY0z4-CETZRJ^+7rJ(8o zTUS@88x@!0d!tCVLU!rpWokXf@|NGhZ%2Z@`UB&3OZ(lX&sv%2e87&ZxFPd)(?M6o>94yriocly+`7V53#wQzHK0k$QJ24Hv zq8R#Kf*znmN1>!wI?t&!2zbuR+)$j^@st!~ort*_a9%!nB109Ekv?Em}mgc5ef z$H}1aT6EW>CP$LH#Pd;Y>p!R4-1yK%iQVigXP``o+wHK==kYKC~_?F3c7yc2%g8-fLr7 z32;1e5jefw@Aw1Xkaom?F-#r-@l7VgifUPsPiM}-L!4;}PAAZTA7iU_OZ zqv`yD^JHbzv$ylQfZpBo&iZoVb8*1VN88!-=*Q_%ojY5bQ@^PAQM)!LemMo*n4R?) zJZ{al@{ID9*1(9j$Ph#1_mG>CWpI2=1`oX5a_>wA7scxQRY4S|W7z>Wo7WHR@G^%F zIE57LG&M;hPiipZWZ9t^Zbi|iw@FcY=j#d;pmeJZJ4H6O(mRJ7m?PvU{|&6vb34b2 zlC+cD`P@L7dW#vF-cl!f?|kmi4=5O3=C+hs?S+)_X-?0<&hEly9V0|GPp8O2uF#Yb zAY}rY=h8Y0O%&h+pMX1S4b7L~MMHN=Fp6h7_lqiXg7X>;U1lR|G=t(pQmL{luj%)W zZC1NrwxPZzpNuC-^hy#;d?lf?5rY9$O>>98JYyq&p$zDEfPeoM1{2s5pWgoUUGk0l z0zdwRA4$O@d#ZEAdE;Q_seV|#{$tl)*ma^|qm(C2k68;V1*WH&wU8P=F=xxHg$0mS z%A`dktz+mM zClO3H!;!OWp7;)P+QfXrw~(_YC7}~AJ#C^L2icLPO;Da(GRr5OlTlEM+)d`BStI!t zC2cl}B@*wep@{tmaed9=oK#q$2gn=T>Hv$>m{qm;26mi(-FI?On~kZwk0J2C{WEY| z{p zoS zf#@r^$tw$cKnRbc40^u(`Q3|%siFIE8O-;M*K)RR;=j@I#QyGv3M@& ziSGR`7ERgDh+fR!S9HZvU~0ffwsU|->FjMe=lG??*3BIWbYpJj+eqgIt;ukxbve#0 z4I;)x){;qo&`b<_`^|4Dus!(1-8mAUG*;}98-ck;G{k*A1aXKICi+V~IbcBSO*6g6 zfLQ)iFfb9hlHBBhBG-ZMTqVk%tc)e&+!B>Y8C&bRNOxQ2o?wqTPK5o0B_nZ(R4ub0 zR|=TB<4YuQQ}#9xHcufYAJ1aLF4A#@r&5gVsXi8-M1>d~DxWncSDGMImb!=w2K zy~l{`EKItR$=04#Oe140 zI8R8gBukl7FpDK?E?UycCCv&A*?tyfT`la5m2?~^wc%95iTF7&4O!3aW&)@KiSZdX z8iNQb8;hGH>N!c-(n<VFYw`YIl5d>+TU_rN-wT3O2ol2$R zx-<`!Y>!zVD)zYs$+sTeCz*-mo(1w{qDuD+x#UHxgvX55Fm?V`wL_lFe=GtzLaRO8 zt?3fD{P39M(cDvFfrN2`@#o4SdL-hUHw$vQ-Doz*S3~Xauc#UykasW7U{%@2K3aY* zbg`*-DWfBgDy$}tfG?MFuDt?6-V z9!-NTnb8>)#gB+7#Bx1-UXlNi_4L%}C?#gs*13tKdgK4xW=0HF( z8y}gOScn~fK+IYQY^zAp1_;cJg>98MHHCm|We5_UL)~95-duN6G}MvNTy7O)Z$`VP zc0^q*MTTqoStc8zJSxhgo$ZGK1aMpLhqw=ZsLT1SuYspw@2GX(t7P+$bK&gGhX4)( zfTMTic|Y5Hhz%l>0^V(JOQ66k&M9(ofSWXeHj7~l?Fk-fVPTN6DI5gZypqx;rmMHk z2SDFTo)d$c-zYKN#H!5#DuWT5{NUX%GB%K2oIJxM<1;F|0Wg|T*@u>eqjY3mUbb|m z?J>|vN0hS5ElWmf@pOKelbVBWDhK)6)wid9kQBUoq zqc%nusf~G$wW3OMs013rHypK!W{4i_=#PuzyfXRPZCqg)onTCjF@gV6J5c#uu@D<%(WvX7C2I( z)=~?VY{!_JJ%vHcRCF6`(8x_m!GMREo>n-+S=DZkpBXz|J_43HC#JL2moXrZ88Nwg z@AFs;7>95Wllv4VkLLrnpY3V8YB+pEN%qd^HLh=28B1n1!zIItUg?aOM2D?mx~dKK zPK+a*H?a}&91`DX4FPNp24u-{qCh)*9nS`|pe{siYYu2-Lkr0QAjSxE|9bMD+kObUKUhvqU@Ig^#m{$YqvnvAPI?<`kXM zS%k?Y+Oa$U!TEGs>)T75UZv<+`e`tcoTeUjnL0UD!kA0L2ee7*W;0o1V%w!4TK7 zxY%MDf=;k;8QfbWg10=lb#d;Fm~q*=Tbu_^cFDr(8M)nQN2 z5c&Qs%(u&%)7Qx1^C&y#QH5DBgaX-@Cbc_cm*z#wH7>hYv_k9G+X(}8ym(@q5+nn z)s?FsdHx}rY%^@we)_d<*t|1raHC!9DShNRDbx(XM!Tgd$J}8EvOHfiv{eEn4D2;3 z8$XJO8nVrT97w+_I=b@*##+eRVyqk5NXd7|s=jXz= zPsWg_E>RB!I!j>uK#6Tcv&qAfr*(%>pD|igg5v*Qp)Ke~=lN2+G z1wlsymM}ax@ROC>FR<8)zqIi%`+g5*HHo$qdr@4>$NuF3i^ydEhV|6KmZVJWVooPw z;;`~5)+b;drr=KerxF2yRW?sgHiq!xWyTM|L)}O8=0|eR$iS;_)+9SdU}t@B^;fk% z^ax$tR&PME>`K{O=#q(_#QrWgfaI;u96jF~dYaTdcX- zGez~MPifXZY}l(8AMpxsa03QDhA-~$owemq$Psxaw(kbk`(%G6&QadjkvZlJxz4q!|x{n(^ zwrd=riDT2NFMjb+783I)kjB39+FlxlAvNJii)(O5=F2cm8+(QdV{2C4QrlO~^ zo-M;P6-@FF4lM#)9}9TVJyWK>Y>o)0RGIp6G-g|q+SjWuYuC6%E!i>r;{H z9%5hCuF+5s4^3pw+jY9qec8*0FZNd7#jm`qY%LmbJcWyBq0I_v4)}M8>eWKB68{4n z#;SJN^UCYW0T83#*O~&g1;poF075G*02#TPZbfmo9uW0>;>)qsH;yY`4fk-mj&<2( zGB|xzx5iMst4oAzFGB6u$b|iUWq@qTk`Y&=Ug-rGL88t$d!t$JK*DS^4`U(Hn{aHy zSYBp=0VK~^P7gKH*@Mo@&X?!E-z}}m-?Y-kudT2Fg9ai7;-zv=Y2PGiAgl}GoGi$f zNNZ_o6tFIJ+8A34LmrGLn>f7H>_PLbQf$iHY%=tKaXb!XQk!Twnn|rf6yhOgE($*B z7iE=+Lb$v_6zEUv5#$T0H5%&Dp#?;{2msNs)iODX0wva>kOWz+p`1hfd2=;j%Y?KI zw5D+Cz*L4}Rp>+%D7OYfmUlvHUm_Jzkeq|vVQ2IZ#lGfQvzwyTuc<;-_<%B-&V1t4 z1*&-=lrls3Dfm8X1Se!S;K2~tY*u_B4rMxuUe?&VQvm3mdNkU`m#pCdi-{)()mJxW zWO<}p{^7`EWG>8;i%E#)6d=`Xwx%o=vkAALyWU+44|MgHqUuF^h`0a#ZxGu zwe)-d7k10s?9eqL&}jm@w<9#hWDT1N3Y-qir8;>Gbldh~)enjFzu6xMFNPZgFFx(%L<~icPhD^2B*6e@u7yOKu4O<}wuA@D&*f^_>zib4p;okg#8#%*@4JQ2IF#X|<`AsS>o z<-)PDJ7IE&tm0z2PzZDcG-O=0i9r!WVv^KA-@-={i=>Za0Ljq0;c+)w!V2THX31@$ zSw>=Vr6;Yi%9v9weu1UoIZ+hH-!vbN$z0~?!lBHgbt?1r%WU@az&D%8G+j6`Mk@0RDl2nj7hjt# z*m;ip&?tc}!{X;w`t_HPIP7vOfI}hB>)w+U$JU?4(f0 zPCJ9Q*)l_KR{5$Ol(BV{n^pA97yxd@BY-6m8yEKY-rF#C@ND)3ZMTUQwYR2Vlunxj zqjvD@81?Q-_f3aUvM70I--4n=ZNw;)Nl@h!F z_rjZsnPh8{s79!80Ch)6O~%4{OapFaDS{-NMQ4>kiy2-oKb%3S;|L-)Zc#Oe8C%ef?W5i(DO7G;ui-|L~X8rcb8wr+MwI|yZ`6M^>@Gf&)=W_<>l)y_5Z*B z5hMM$|L4CRwI;Dq4>z^{TVQytJLA`N5zcGFQrFFux|%3lrs6gqdHH@`VfX zSA>~gllp~w^;d+MUy}lc^Y_<-8Th4tMZo-;G%$`>zaq^1nlv!H`oAK~{F*c{Lce}R zn5i`|Tn<+~VZ+UHVCL$;)EfBOz~JuZ*Mk|{NBxR`sWtG`$y96Ls{>PO;Hv{uYv8K` zQ)}R>19Sh?|MAs}fB*h3tk?GSEkiAEdA{JMAK$)3t+vNEmp}dc*XvjR^Q#w^H-G%v zZ-DUx_}g{+zy3CUiKm$~~47w^*@f@ke6>nm$3s$_Q=)ht$-c_;1>+*qyWcKTV#TeQV zEZ)vu6nEYDlds}hj`LnF3$i+)wGA_}R)*435# zl4^Md!CeORDP`6nSNQrOG}p zCjP(k8h%N&J>Sz^8DFWoR{-gC`771;jHtOTzLd3l)T>w5_iJj`D@gaMbX-$?&)DEA z(=pZedfk0pe5LxH@xfQdSE}zB1AS$U+3r;I81aiz|cGs?`AN>e@@W zAP=o-u&%#pE5qaf*41^FlCSh&Ddh6H%(b<;E2wyN)wQ*%E5N$C<+Zh%E5N$CLXF(k zOkEuyG18e{-WPvClyLPsl-Y0K=^Z~no&2V>Z*m1fa(;7BRP;q}k1l)_RFA30LYnKB zW-h%Y@?6~q9MCiue{SZ|lbVY52h? zfTO|O^M{}d!1x#vRJ)&0?fVz+elCTUOY-@6pTcL7$Tpa^(5mnxW8Ojxg{L8au4Zd$ z0cRNke-iQ|)Zdh-BK>EROEgYO6g9Ay^9hs5z+RfTU{o`o^r{PpZ5}Zmc_x8xVU>I| zT|5;Q-l0et_3W(&Q>1q{yk1Wct9L+kZ@sVrJ)?IHIWR|Z-cf-xkUO<* z$qq1?8%R@cF+(%A)XCmEpF8x!o%Dlxdmppf3n_~Sq>X}h4pKJjh^04EShD$n54jRX z0F4DSZM!;es9rT8pN5i#)*6~`m5PS$l%U?10)6716JIl7!ba_v*~l8rp!jflefqaf z`0+3NNImh>&&Pu)F3uZARF!K`#@BT0`U|^GG_0PHVK<#` z0DA6)7GQ$e7#3}&q?@&{E~J$*X;G3D;nm!%h2@VH*`!5DeK3ck)Ig;PHW_3oZx11B z(YMj!aO51>CD%2dyld#g>{K!ZISQWW9_i1RKVk-a zBqp09x+IQToFmv*>iTQ?A$!1Ml*%H~*o@ip7!F1A-QOZMmW}cWf zF-e&(blSwagpxLE61<}vAby3oy=K)cs+UkZdZgy!y4yoY4FX1;ZI>`3)wFUXZ3{ zh7yLM9a@c3O0fBzLzk&8@w$xzqP)yVQKoa+-d!DA-{wAbSi{U%wZ$3u` zzmSvZ@EC-{D}mp*dM9BcS-Y(@Bq#J8vu0(BCu|y>CLB>)y)%yFoWG54&lIzMyn2ih+E z+$7oAIqR5BDPvgDOt9yL(5 z>;N;>LK8IF7F6Q6xLm$`5ze z{AZ?^Yo@o@1aLF4A#@r&5gXO+Mp`X0FjK$PqpNNnSzhYuG?NVGRpRhyK0@y?&Yp&8 z?K0}RE+J>SPdR&uM0L)9ht{)Uz{gtXtI05A!t*{_M@vCbEq5XYDjDJRCaS=dCNM`# z)e+2dA1Ix$yL71M;F-1K2z#?I2kC-;TH^=dzfA0Uvy}AudBwfR-Ok1w1Nvf^M#frj zo{(Ni*21$>UH@=0i?p&DV-}Uy?H1!)P{H0;lDqm>kkNP%-Ei3^j{c@i33!z3oCGmM~ZKZ&>ZGRaIH zmpzBw%S4@^c)KX>{BUSHktN09NvdyhVRG)eeYlxuD?Ux*(V?_vOQ*fsMzNkB;R^;pJXPMx>waCi7IvZ!1Ge(;xVH&Oe2XJ4R>T-{>LJq zBeWzm(ggYMw4Sb$&gahuQ5<0uEBR689UtC_%KfB zM;QjdVQ?QHDwB;`fTsgug5rrotnqnwQx2ze+Ch=g-<^Hs`2lnb{*$-;e3HsI>C-8Y zRi0&NlZXbhO-+GFgh-VFvRTC^3-17glbBYzB*q3rCHYZ&6^F%FLt#I}i_6=>LoWi# z$d7-baxQ0fCJw4jN7~*mq>yCSJYu6rid%bB^G$r<7EH<}Y{KL!o;zHpxCMz;k11<0 zju?}UYU1jO$AyahB%Y9P5|8bC+CfSh;KmE=T3Q#ZggpmlM~y9zeLu(>+_-7+z5(0F zZLq9<=kPkwz&jY`nkZ!2XxciKxcwfOm$xBqk?dgdb)#^M_?O7P;P0lh|CxteBnFmRkiG|7A?hcSI+X zbYo_ToD`UsN9C*xmyAgG89}v7Ktv_*l5obOhd`&x!4# zGBE~g@)irACbrg6+CY?H+bIA4jsccu?x`I)N=+~7yk1UwVm+PjajZ{LhWdV zoj0Yn7O=2UC)CT*Q5z$Sq{6%hsb~~-YuTdMfLM-Djzd6Z6dZE}0st{SEvQIfrL8g&Li99Ypv%Sx1*H(J$^*9X zmJNJr-!l8r1$O@PPt9G_Qc~DT+!z5cY3A>`xq~}4ntlKHc=`D+FCQO z!F^xD$2-RnG7+Wpg^ut02IT3wO|KX|gUt7FL2~YCyp^kN?E+UvV9hL7pLxyZ`l+|5bfF1!m{LQ-k>lxrY(*}yV;#1|UYntcyP0Mt}7XiYVfj4vfc zozsu+K^che0AF&Va5MZ)eA(!?B8uAHbOmeAboVZ_39 z_b|mFc0#telvEuHGPJOk_Z=SLBO)e+_g=N3MRcLRAcE^U1B4!)NdDmj|&3RNglm)fR zcKF#l`6UXkD!=Oy0Ug{gG|38_RQz?AGGk|Y=2sPoL-DeVL?u_+b1!5G+at|O8wc`4 z6De-6%eZSe+L(=pxoI{)DL7CW|B?gh*|lqx;JFqs>2<22-%1a4Oe%z^J|Xl0My;R0 z$ancDgZ+`d+MXj&kj2cxznLt%E(<r3(oup*vn@cP5lv>^SE7u39$^#~=m4`$hEKnpU9p^{~9t915T& zMJyI{Mll;A1ot)BMo-S#l>uF06>pknAs9tPR*}GBYd0u{#cgL;aOlKtkQ9wZp@Sv3 zwTjn{i=hZ1*bjhMMlveN68mDaVf(=vMnwZGL#r!SKl1!THrZy_u>JI_JRra=0j8~S zqh0JNedKpw)C|E!yQL~``=O6EZe#V(Rtc0au-B+;bboW$L|ckIAHf$N`xjPj%4Gj$+p(vhxn0cZL`)o33Kx!(HxE;AC+>BrvC8Hx zh^j5&WyTM|L)}O8=0_c21_oB~KMAW4jG;U0gR8%)^`S@T63Kc4l4XY~proH3y5@co z`@3+FtA?2a$eu8a!I98>+#nol6YVlLiE&tnrQ=$^$wV-{CQ&&5&_EkyjHC^u^+}Z4 z>>kK^c^E?*D0x?WtBgE|{rA$j5@R%+l%!U0% z=f`uZ&>E?^y_SFuIN(MBULA@VCIZ^Fszp@4RBDHdXlmw1^~R2oZH37=73 z%5l)K5pvTQ$MzF1HXOz#BkV^fxcd^tvyvsHcgKAsp!18xSlJEHLh6=&eb=icF?YLU-t6hi@h}#&&x`i zeZ``Y(jvzZf3$=_&4EHLG8sa$6928rXmhT>gaB4j+>Tgc=yNEC{%45I$w z>Y9=(y#OOf)EVd4kXS-88%*mk~9$31#wOm5^1aAZ z6ezJ4g(S#ojqNVPpEp-MA&a>ZXwBdZOj>evF*8ae<&OQa$Sl5?IGMml|GMfgfc_EZCL-;B9K5Iab9WsSSIYc&_6<>%$nT`kdtg$c| z+S+H?l}_!RG~odYL`)8&<*BmAMO^*bR9{m#P4E~>$Ig*W%WEr~egQ^C9KSXxZ0c*9 zwS@lGI@GrjVXo-LWPmxCPl|>YItec*#2~^>)<8AyFH$zWGpYGhsz=b~_fLgQIm9^I zrsC;P#^zQ}hn^`Wws=@2w3eQH2G%WevqRU2K&J`p-j2{1lQnEAC~!KkWsCrX#GKvu zhDYr4kXZklJ;G{4pE6+d6n43YbuQvk80~?&_FUxS4I4rOw9wJ`I-u)IRWBaAK%XA! zHonC&@R1#}b$e|*N%(tm`L(HNG|v7~8W<}ffJC#Ds^)X8g!FbBmr~UQW8|c6U)mZ+ zw4S~XEo_nM??#Q-vxMEtn*!Tm`~&G3MCPoR&il|No4ut#FovV_bJKLA%NnGQMbaBE zfFz!eh6;viXR-Fe1;GCm?vs2ZL2Y*L6@|cvu>|Rk2r3F8Aa@qMZdG=! zJQ2IF#X|-Yh6Y(rxp1uPPM91btGJjh6apOq4H;K$VlXtcb-3+$d=Vr6 z;Yi%9v49GN5Dy5FL)I1!7*mq|mqa0uG@gu`U9I$e(|kB4X*7)_rVGb7U~tGN^Y+VZ z_Vg%$Ofm+TD8@)-p8lIMN9K*&Y#DF%^K3N2dv>;SrpP><9tmFUb}2GnAm=fq#f!Jx za@UlbWb{86=H#wvv-4%MlS0@0?F`;#%M86)<*Rm3hFcBN#N>ntMT*8LQcEN@F6Anc5{%lxvt!i4ME6aHQL-rIXy1aOMXj^!|JZ^^iECqvfMGY> zJv+s9;Sd7MA~Oj8wr|7YmUW|?if}4slC4Ri8ll1g)Ey;tWNbDv6Y$Yvzcp-xk|f3V!s1vE}(6E<`fQJKvamX7s{;oBJ8n>Ln8 z3!N2_Ae5Y8nKI|%xWo&940e!4I_rLyO`l~VSt;%7-*Qq3~HKU!VM^7BWlOHqFQXmu^g&mXNW2Ko7;)zut7f3&(BR zIwU`H+z4Q5$Axw9x#LCvMLRByzR!d=yqE2`JOzB_xV*R;@Jqw;Gsoq*WEhu+hR+1U#XR{uEg7m&G00mv^Qb*b1X=J_*`p_BW8 z4J$C(+nPA#PhciMqAQ#=&TmVFm7dmjX1_g`M{2+#o z-e6_E{bbfLyx_H)z~Q0@2dR?XRV~vKe0JI>`?SKdU8w$ho%CW2hNuCQW8A5{Q{*23_)@a0Eu6tWReM z2Ht4Y%w~|JBV$-Ug)oom70DDK9*U*o3j8cV9^mG^g)XsAumAb4-zieL6Cqz@e_i=dyyJFS=V}iG#I%W;Lvty5( zH1MnU(_DG!dI<)=e2#b_%($1yB)WmY7*Ni$7GZ(F-kG(q!eZLs@bBNKw#KnD7eUhP z5UKi2Dbv{q{K`ugvEw(TW^?zQ=85{pp|ks31oa!evmSJTLaNohq_XV#7iA%RGj^xO zRd;dI@SXA8{$37i?eGdLXMeEbh#Osb^6PgK_lQk9;ey98F5l01w*6G7{Ub=e%AZh$c)9&>8{O>=${rQqMuu_De z{|_~2ECPTAV?ci(RLv)CQ&e2K_@c6DOaXXM9fp|?D+uZS(C+vG$#ATx$KKsRM z+3Cm6v3XjP=rb_V#`iGBI5BJS4Mr*@|6CdnWupR( z2ye$qI5AbR*TR%Mc3Z!uiylxo9kh=N%i0xevZc02UxoYodrEqn#_&z$8!-X?dXMA zeAxRHX(O4xAmTXvG{SL2i=_>60>WnlA`Op>^!4fg&NVSkRmE<`05#C3=9|{vtf8$w|>Qp3X zc1&={jKg(M1|x;Sp~wY__v6Cx&5>N*(J07npARh}6exs4Bv8(q3Smy1gXdlE#f4*^ zF&Bm5G4EBHjyxcvWJ&mv%7sW(`D}C31zJK`-i2)uBAs z8uq?L&L-s3_Y~Rgx7TclCfxtBWy=ACXWj;hR+Fp{aM2=#*@4i)v;g8@U7| z-{2O9@2=kAf~Ltk<&x6e%_n2UyK2WrmX&fJ%g|!;aB-OYhwN7l4R&5aY;flL{Dt_x!vgg|fLH}O0(}Q0w-X#zjPycMNU?+Q^>JhW zQH$s(hyuU(MExB>l5t8zgFSq*-qnhvSoO!Kb%PKOA19!#hmF%=#Ymkk0AuoI1k+S^ zcEC5?+Wr0#gx2*EvYmoA#wJpfE}VfTy=zzD^?Ud0uTDKnD8LV9efkyvH11Hq)^UK>3GPzx$`Zlc%*`y}eW3xcFLZ_-?fy%|IYV5Cr&2(9Dee z&e=aJ2OHL#59g7jxqU5Z)4)K`RO>ASI|serrQZdl-^c0ufDMt~!%WOIrzS8Y{;R~N z<3@;Qu9P^Nf?*IQPyCey7>bRppXQp#2y9b64Eo$t=4YHJ)k6UM7oD@6!cQ>Ieg+sB zj9BIssQr)2yBA{}gve7w-&msqWLJU5yq$=JzWU+kKP4mh^(Pk0Ar3(;cVs0S!5!oB zdUmbz)55z*w_C@Ec#tNnb3Z$ChOhqgMCA+c}} zO+aPsQP@h8rCshf)XK#AKv>efY(P4zfcdy`{L}2ug|8Gt%&)pBnxrMOlhUNq23)P5 z4oM1Vp+wITdi;gFk5Z_3E=ZQ>!Y%xO&Bt0iB%GD&sk8r11<{2XF&}Y1TaI~LqQGdk zX*-d&&_wkcM%blHlm(Mm`1@CX_jlXh|Ls?A{<3D$6^=zEsUB6MxEkUaC@YPLvaGS# zJdTC7pQOCArs93;@0euT)Z(TNb<>_^HW;mL(JrB?Ez?l5d5aJo5kf8e4iJKaXMmis zF?4iRDA%nGqg%V`#XAH6QjooG)ayors<=9YqaBCjN3nz!Tr)F7`o0xu$az;k;^sA3 zs6bxoJhhOMR1M_E%t$|IrR=;Fbj#FAhp|X?Ri6noKZ287=&01^MRrJaI!w1X@sHhGYth-m0<9 zTiWN|W@L>tc%Z;xN$Mv`!F(r)gcjuQ#2_o)nR^}|M!+l~_C-5)*qGu1T@42CKPVMi z07a?rRWy}CMDz2;0JoaA$jzWU_lLGq10HIWUGAbpCS{PU{uwo>|5$cDupEg4McJ|XosGrMz+6eUv*-smxeiZv@BMgtjKbjW9gYb_YVSEJs@k4w* zSK@qeyw3hKWHt}HKXHi9XH0}v91DR${RH_!0K{hxQS;^}LcvGc|MROCmp6a>+GV3q zHR{`Ke@7iB&~Filu>bZ4?;zhk951j-F|u!$g+Ka0-9A_4K?%FqN3&h}$ePyprwo=p z@uWTeDTC3W2_I0mOxQ7>GFbbP6O7H*>onFrWw5xc=pcj9`YD68FE$HgpEy|iN;3wd zh5IRxrO%>ikABKv5tZKI3`X3i43<8BrqTZ?gXK@2dC2;t(Q+Apk@ZQVr9!|{+b4~d zOTniKdnyLJBmE@US~;)|0(P(d(jZ!_R0I$5?W8k1C$&NR#2mMzm})a0G^)+Ob-js2z)!*Oa}Iyyqk?ceZPB6 zCnG~(vK!stPu|J!bP9Oj`j|AJM}P`@+JNU{G@!?`c(&q5W#sBRC%`eMDMNp&W6o?| zARfcg6EOkINanlPNdukq@FEg`)u%4@+aH~)epzs-Plou69(4yE)8a9@d?IeHYu|EU z#38QwWXiBX{|H@iZTn;MYI3;}F8o{=z_ZAE5RcI78AKI*ywHtMe-ggwJ)mQdZ2i;E zB^bzYDtcgD0_VyF+O|+F?yf_%b;uzfE)>@=*&QX@dhsdc=$%o#IXLR zNVK&8i8SazQ;`JgW{v0+i$5L5!=wtTCem-^r5cA8xyS|m(1s_523X0^v=TV01l`&9zABe_%nI3?jy}WEzYg6Ni*WB zY=_*Lpj};KU;epS52J=<0~!N0D46Lt1(bHfH7&FscgWD&o(sO0kp9?*m1g!r;OV<= zHho{(1n@2XAA=3^WL-boX27+I~ zZY_)GP1Hr}bSvdNpV%2jE|McpZC9fb(R=e2)?vJCoy{T!J5dN{EySBhn>=q3W;pOS z8$)c0q#9uE%8HAE?^K!i5_d_ruh+OsDghuw7+y6Hokvs${l$>C$W{0>1z(w7!zrU zNWHk>W~2&{o-=GtbEp#CVEY6_i5UaJs5333O5$`wO%;N>C*ZyLBwAX>=-ap&@f3&X zS7TPvR)J_BV0{Rn5G(OgyYFfaimo($hsDUl1Vlh?x!GgrIv{{O&*CJif&MF3dZsEt z(V?>3g2kAVxDe1nQ~78WVc=5w$Q#6-;T3CN!Sk+J_IL^NE=ZUXFoGL})U#zOc zF0}&C16v&6hqy4sTys^zI%BR!!10ZMzgi}!6HNnkv87d*^<}@dn==iAVSFAj_wf_V z`eNV1=+d@jIA7_r(SVs63X{j6VwH`ciMPBB-r_&*zmsOdfSW0rA#dgYylBSJYFR9m0c8=K zSk-WrgD z`we+1Ak!S_Y*BFK9n4WbEMU%bKhJ@LS+&Ck{!mI5N*6s5JTE8_#SVIm$TG!M%MQ)eVi0`00WEH_UN4#|zAa{3F!lq_5LcL=6V8fTW)7=Z!X z?!d%FV#}Bc^CemUuJRi7poj!Akk5CZ&c7(k(YLr_qbF&#zhZ&l$D zxs`TXjiUk`_bxV(Vs!R6E2BwjIzq8At3E&$_tOGj(e}jy}X&Y8ct+Kmt~q?b$LwTGT2$>Zh3x z(z@p5ZI$YpQ9OD$EbRLG3ILT0+H#Pn zCj-TqJdBEH4Ye_F3G?Y_A{rm#g5oKXl#fT`TaQj1L?#e7g3#7jcV-$0tpxKlk$ALH za3ck?>uwW5DMT#u?dVn{;$-NwY$Mn!s=lP-u_I}n?T01S+QAKT46gh%?f0+-KyA#O zDO$#I@#b zp1`xAEQ8TB{s+}}`=$pg(O9kpi3^2%Fzu_Qt$Xkp(xA=}w@T#FZ#WQ#q6W;W0T7&_ zU)_!WdmpI=5~vzcG#S~$)r^p4#&SK&4J6Jtn)e>i594IqC3bjHt&Q|NN0Wprkdwy< zrd+^Zk}AU`UMxqhF6ZuxnM!}VFOp~_SmQ+XXvF2k=bG*d zg#oUa0Iu#M<>Zqg`m_kqV(1`&_rLIV7!*=@+!J{%(1ksFNVVV{edTW3b1k&L9!Y@e zwh_w@?!hg8Q(_A~KVaBl;JERBI+%I6|MTPN`*&|%|KaC9zde0_`Q>#J*qj70zrV*U zc=>~S4&k96+;fNu{otNMkn#uj9AZE}xaSc1`N2Jhh|dr1IRtusaL+Wp^Qe;(4(4xH zmdSAxXbJCJk2*Yic;`K%K(pvhX;_xYcpqaHHuJvRM%zgTf5aeZBpVeq0-rt@k~Dyg z3io3Mp%n)u-z|qa{v#mawlfX_)%Y=kq)}=gH$)bj_K{0zBQvdEKXM^*49qT5sPu7~ zo!+)cU7xrePDaqSq15M-2HJO?%FnDV3meIFim;GqUmdT4_+u7TrA-qb0dduuo9q}; zr7cYRFU&mcZbqJ3w$2z$B`YNS*nA>fO)Y%$yDSJ6 zNlq4{3SfTAViU_{(o}{{FjRG$CNHR4y z?l$av$TJNZvbYdQG!kie^%&fuwV@NZr5#ikh!+pcqkF~uPr?7G`RjG= zx$hf?u3p++2zs&4f*5jyB1T5SPrpXu!&>dbBEYrXr<>9ek;I4HgGCNR5cO-h3@G6_ zvg3+7Xg2AMp9uDo2BcP2*`(ZMI4PBO18(5%$(7z|Qi{%Sesh%z(ym9LIXNiAYrp{! z!Jmr1Yhbc01QFOZL%&PwV%BCodc{lRdO_K=fR(7&=$5Ic)$J9!S|3lQMU@MTe5ST& z`bs4BVjtPGK(wZ%70`4IP)&&0v@Re{!D{*jtbyxnS|~S7%Pqg@8Y~mI&XK&`YPI;- z_BE^p*V(jyNYiqMZ>E*9MF_-BpMxlue7(Xj35d_%wY>Sogsf11FbLzXH4Kc_Va|0WXxk9LqQ6DQ@uX#AYhTz31yKz67N_Y9=;U z>B@LMvAJp}%MyXJ5j>wFTDC8iq||-Q#9nFy!OvD~zM@$b2T|-{IEd;fd~Dhp3TTIr z*P9`^&(*achB)0eSyt{|QzbN!FOHMu1uZuqT1cVh88d}SQ@^}xnZ;qfd-N`ZuHRZq zSm@2pXWr?oviOyfI`j%9oNdU|I^%`QP?y%i8pKUMp>wKRH< zJFsLbzKg@t9XJBR(HPjR$?ag|*n!)ee{tZ`0S7BnzQ1AraLh7S&<||pH#hOJHWAp{ z*n+t;H9(p9EwDLIfo=sWH(lMy1I(uNCVUi<3wF{aErd<7o==PAkjl6HHXL!x){3)f zy$vgq&4@?oRq{ZOM=Q;s6Z4dg+6&khR69491zBqhYVUFrN zP7I(qu|k!bzJUl6V=^&fl!0mFI_#()$+dzS`HF!QP26wB4sAuOxM(<=IMimpKSeCF z6Yxz|92?YKza2+Zvcq?0sJ;ue+3!##u@mp%Os4_Ww8OOGenTz+mx1w|#&_P3c`?@r zn!`CuI#Au=w_sr#h$dW8(HnEv& zh5p$0?g#CD~UR<1a%i!X?JshFCi*uW~IH`{(tBJeh*8N8{I%%IeE~)({?OPvZST*FU zN&D6v>GleCnzU~{k1_re>*Yo{^Q>8AK?_eDYZg`LhROF3M@&$8q+|+ZE-dFY=4TpU zho4PBGNTL2hok5Og)K$k_4@D=4KhO!3&U%YKmGLM4{u(RfZXkmH-lQ1)*i2=8qba% z9q&G-p|jTP6BNVH2OE{7R`FHhy@pvGrGs{r7^~5bK3VOCSTKUDH^#GSuIw?Y-%(NN z^p8>RUxRXAz5V%JaU=N<#ikWp+Nk}7*r>kv*o5zZ_xrb}#M% z`Y-ri-7eaKabMDEF#2Sk@q1Z$*llvd7EcnO8}>#r81_Cr_wQ3q%BD)q?d2sZ-tlwK z0fxiQ-C-^;j_30Id^a7L=S)hB>98=JZ;P?Iaqadf^O)H$-eT{+JlYNrg%PgObR9Tk zCpvdBaMl1PB({z23rluc(^b+2KZ7OmVF3ug_vWOX;CyyVQe_JXV^X!*yM>4a&Y*oZ zVCqA;wsfuhO9*{?BG25e^Jh=0So< z=NwScW<4!OZwz@;r<4q}SLqY$d+!2``&z4K(0eBVJ~I<5l$-*clE(E*5Owl>rdc&6=3MpG}IqWU*zNH6>s6sy59H@s_uflJK z_0prSeFQ^i>lMfG)Rdv}A*ipzO(ofMbVAmTE{9T*vjy)rf&1*U&ZY7B2xD?a0`J>g zW%WgD=I{8@upqHU6(4e&@R8CMkxOX}_DB`qGpWV_=g#-*QjnVNTC`?~R5bf7E%Sb8 z@#n;ci$1|b{l*m+H@*^NZR1+r%FWEEw&LO?;{DKVsb zI5cf?VFE)Z>=kdia?S-f#)PiJo5h->AvirILi3_rLtwf1C&NT}iMB@6V@J4n zLY7Md`q+$Pcv*spP_rC5!-Uw4uhTMiyDyj^yB!U7vBEnIu4yJ#tNcu(SP37IE2S5n zP{Nj>6jz1Gv(<>hnO^h&_7I*|1yQL6rtK+~d6jZwdGj_KI&52VW5Y5gdbvh!g{R!O zd0Pez1`#O_>2$lxpjoh<6r0_3w9)a<^%D$OM5#FBx{D)273gOl1_o$d?ob_?by%Mr_eO_P8mwoRWTW zsj-!_2y;I)f*>7+t;zC`QJ+@}nm5_HF7D-)4@w2l>!J zeZIzP7ldJneQT<8L51xSliJVtCcfLPn76m7rsA!F5S3fbB~+qIO4zb z1ho%e_W@seg4+H6EECi>2hTD=9R>a@6V$=t&oV(BQ~oRyBzdpDtQ;h1vA^sD@YfwV znx6$naO*wy49_miaEU(m8lGL8am;`2H9WgO!zK3IYj}2%#_9T**MMXHbIec>Rd6l_rN6ZpZ zI9Qx9VBn^U+JNC=Zl?G7JxBCq1YJ;x=z4GXO z`E|8{TV*cX$~?om+Mus87rl31eqD5(!F$~X$k9Fh40E;5SIfHSJ^b?PYTvn*x!~h| zhPilAGUAZV$uGaI$kf=;>v{A>Ufx7*@h`uyCDj~CTJ{W+rK*GB(a%6K#TyO$!3g%} zm@HKuysmhT$x`j1`;BLyS*kvizwj9*OZA6tP@ZA3RDsYr{~R<+H3)CYo?)_*%d1sa zyb*ei$x;o%jE~PTS*k&J>+~FxrPhb8slGfnDmUb)uAWDO=z;Y(8E;6RVP&ZX;rplO zn5@+xIIkf8I%6`PW3E=FW3K06d__te6pOi@hwt%vytb@7*E1<$#Y7D2;!W_EXGBF5 z^m8o?vVV@rT8ki%_&gGZ2k;5Oo@XQ5T4|1TJ&!Qsg*~prC+}h$pm2u>g-HXzgg^#n zQ=Bw#e9|56;p@wJ-rHvxX*3@cfzcs)GVEvZp(s*KaQTikO+Y zeN6C66Cm!oEbh{LK!1z^C4|2WzR4bs(0XG)>6@P(%d-`3p@dn1ERO)W3UlytPd^xC ztV;dO?`O4K#T9Bg#E?f2giy>j3dL&!Bm}(s-y))?emhSZJhJa2sMp0+Xn|fOKGwas z=tq8e1d0CJZyxXK(27^DRUM1G(4^Hd3bEkf-AYt%0j^5;Mx1B)G;)9V)P}y5r>4UH zDH0zyFQ4#*K`we|+QY(SUl6b5B_CJ>ZIId5PlXu#gtaw=zpJ%n)xm_U6QhVGf?#MF z+caq)08ox=+91N87@dl$k={pOUVOEXr%>Yb4ql+&w{_8BFMh? z+y!Rb5{YURS~f_P>o;Jcer~f+^kueZ5Vn221YB!wnq3qf#CDY=8Nm;LcwDY4N)U0~ zlu=PaN;=QkyOD^T^A$~^WN5R}xSFW85JQ7AhQ(~evW6D*2Ru2&C-q4WwKy>zKfJ=n zWN0+e(6kF03cH{|B!5WL6mKP)_bZXOW)J5uEuHg41xvru&fRpj4iUnT^gRU|O$0U% z<}KJ}4vFuH3AK|oqlr3`JDSc>_aHi_Gm}NwS%nYW*@lhPjm3@W?guhC!#taHWMV>V zjObaJXm$jd{HIxYsIB!Mvt6S!+`pk$jY8$O29O>zs`pr<#0^Qwck@8wvl$T_krbO# zGG>fumP$v&WP&lwzIHmY@agqGeuvqxyhgc^mgR}A7GZ>nkTMsHlBN%JB|H7{j^H=> zWvorDOdV9o&7?IbG&UQSPsf{CzcuAK5X@8C43yAEeSO4UQUU57f)riqFIJC28F$30 zj}@!G7j_6fl4j+1J{oIxC96E=1KCTIL^lbIl}tC47pw30V9W{%>pSJnzqFkeKS5@L zuEd^IVd!RTa`kYU-VNH}tmK$in5JLDZcqbd1IH(g7JE#T6JSPih)2V6iq&;;W3e37 zK=n9jajbRB3j8+TBozKeL9G`cQptQG^6M|6iqXqcK*Mp?cHUT=iJ7U@>)t}Xo3-Pj zat2q&Y|z9^)yJ==Y!uO$s6Po9Ht72ZRr=6cCQe69ro!|s@YZ?eDL3mX5Bk{?oAtAa zvGk#Z&zjB)YnglTgAX@oF<~tz+z&ANL75Tkb{!)hd8!EG%-SgR6w)Zw?7zoMpfHT9LA7&n|{bt{;DbBTrpILrOw z_XKW;Pm--rpkR~Va?FbRoqWs6oOMuUsPb#{6RRmr>_$DC#$zt%!dVLm8cHV5Tj)r2 zVm;y67?Q{nOJvPjNEndZY~I2Ogs-t@V@N(vd^amv&8tc7vPvOlvH#wiuStVJm0IZmA^fsTe2*nnKTG$VH=aYPU-7@)n5N(X#-=SCt=k#3IQ$CcX&RGK z_&MadfG4v7KX+PJsPnb~W2Ci2tid83E${xnuno}IY%BGd7L?mF>Ct_aa&~D*60uhMHc=wMa8E8e^B8)E90*af__V`^6hNwakO*lr-j{36ZtaonstqzT*hsf&A$DQf?|rSgGFBVM?GvmwEQpQ#`AkNllTz<|X8= zC#efo6^3c86;+XfSZIQ&SWrPV1*iHcoV_7f5?s^qq#34cIfLL7%~vEV+mp1X8JE*d zNrj8tW>PO1wW+)m=?RHwBRyf_2c)U=9L2B{S<|yc$u;G9_DT>%g5rcwCded6g|f5? z}9ur@R5OOCLXxRgg~|;%5}wHnJl7MS{a2{Pe&ouFp7416<14ODFV4h zE{1+V!aFOid#qFE`9#Lr7al zbw#}JdP%uxtt!G-=f##zVQEjSq3Hhb6R6A`zCc=k3&t94kT71@uCqZ(CI+$sHU{N0 z!o}jUw6~_f#vd-2Z+`z$dDH0B_~a)T}nn8 zsRiEIw~&V#<Br@QIC)Q`0%s&Pmry6aF8NPZAiVjMSVp-Jat3-`bOpu69ii|AL zAz<^dYjHC!ZkU1RnKA>ji6q1X$B_`avgg==g)B>1j159O!Bw-Oqms58_9818pZS`s#H z=)SHQ&T#nKiCGOhV?vhV`2RG?zcYqwQhvUAO*3@h2kuHcLo7>%15NY<&siQV zd|cl+2QYWc@iOJQqK2nj7iJxmaLpLnw}2qZ#fcWn$aO_cKEZYN8ZSGEi#m`wQU-^$ z)N!5sk^AHU12})ib;8t1QD;R47nYCd)upqNg%pCvgOvx8;feN;2J)tCq8j@z-F?DTU? z9+2=pbjEhU#SO}7q<7j(N!n!VyqBxI2Qx2tt;}McfE#4*xXK5w6M79?6K?GmA7?c zh+XYhO8u>i6YZ%nZo$AelV(z|r5VIR&Axwpy!`x^a#)h-tZZty))OPrOzJs(F{@jS z7KXugqOdquUbIuWuhWnJ`68Q3h}!I~&gU{YyvT)#@P^5(W1K1PsmT-?jfDyI>12u{ zIWH<+bY2*@+E1nk5PZ_nRFe%Yyy1r=fD8MSiw4(`uk9__qQW+3?~4oXguA|80h%R5 zQN(TO%UkQduR&&f|F|kcD~c~UWG0l>M$2B&64imL;6=?A#%Yg}gkb3yk}n}BDFvR+ z;`tS`3nFB^sqh!*2G5c$Rw0Nxk+Ze9bF{msiAN&0*}=8>Ach>Uf*MqmrJ!d7D@CMY ze&*YF%jDylu6vX5xm1jge}?f1AFh-2H$M*UL8mzHL5X(oQHjAb@nnC@Yxs2Ao4`kE zUbvHW;Q3N^ADuMf@vW)WhxmF@Mj!e|1>oFa*HFUpq9)g3^X&+aa7#E>;I*S{G~|dV z&p;QiOSOnLfPRHGiYE(p1dBy=m3%PZzf+)Hc7OM!!fUj$^hLS~5zxgsWRLd)}^v;aM_&%7CDv*A^V8)ggNrMu^ygV4#cvV~?)d0;iJfBktLdJ2_ zxv05~e|naa83#RM`H)4FptdNohdU$z2WC3lExrk^LU)D++L$7m2+a#u6_32|X&~tO zlJR>ywW-}Xh3NNZ%(|~ z9$JJBi1lE)-hP&%!We3}Ja9EFr!Bsb4M`*`4nq(f7(%KD&66R5o%IiQuVDz197DuN zK-oanl~=Non7w{yB{8c)oz7~+fq;u-1R#ndC=Kuc<;oit_~LwNiviJMRG8=+S%}d- z+ZU+JcTuEkggT>t%B8KQ6~ovJij1}z#c{VqjXhvP>b}#TeF*XXy)Z0EW6J=mN_I|5 z9Pg!jiPItC*qJlDE{f@=f>G7s0q;wR!!qs$#4irTQZvww(XGiCWg~fDdiZ1vZzbLj zF=9$Qh;pIc!azPFu^>r`P+9?~O7TRW7V!8IEeAXW{X~a_POW4OVDI2R@KD-~7`j{q?t6Lcpfulz3Msqg{JHZT-5!gFAgru z+*9(&b4RVlCE|-Cl9=AMz5z`D*el{JT-#!X1_1x=FgT3XfhWFHjEf#}G(F7%es_R- z$BK#ez-TnVBa9y+D@F4HZIgYDkD)SKUgt&qb5LgwS#FFBn^WW$Kn?`uKBSc!DO&i9 zmbrCSZXq0lf6?5;Xr_`W6zwvv&iYc;lsz-+OVCpUZN{LC#3b@vkm7X%M>)hubnACJ z&gux4^`!<{b+t5%p*4h#KMJXpSOb@=gPa2;e40fCQ9bHaY!^2?I{e4!Ws%iU{R4oa zNW2kHe1E@0kz%#?1*~*@)CHVaoOwQ6hGDZNs7iJ_{^2x?$0lLm$>x>Vss_zV<1LHry-YOr(Wt zsr4mOVOmB%kxQEv)+^Cab;f#_>?&UsT!yRvM0@y3XpM$XsXJc-ML1Kc?tDEGv#ksV z8{jee;vR*%b!buRJH{%EEv%-P>lJ(>i2Ff&Ct_`|@-n2Src8Wv4!uI_qQ|bQSFPsK zmDn9-k=`mAnwQYSG%>y#5)f~;yQ<+*AnMvWXv&pS0 z9-dc~fa)>tn{>xmVW3pfd~p+3hQ66!x&3650c0`LUKFYpGhfPZpqJ;r-%m7^197D; zuTMJzxZa&&AU+@L8O8Tj8VEcM<&vllDRv;l1P>Ib#`CD`lt)hro;;HcCLsz5DIb$8PqpcMUQ22We-2=pMxhvZOEjRuh!0~a1=HHCT!`(iha&ERAL6c)$V}XsD8zC^OE{yQ zopfu+krEXFH(_PeoEuw_^(DRLDeo^P-hSQGjNr{V)|GE*aqhPc2}<411kI(rR=sWR z5v8ejb1>1!Jg!T^gfek4A3R<{0zl@TY2s4dJpKwMM@pK_JkG17aRhU> z|I*Wvfn)CW-=LK4YZ7gEr{Z&n_Jp{MlNr!Z;v6EG%{Lco@OYVyT5sg>{Y{!Eo(*QD z8Mh(kaXvij5vc?SsAenPpzrx9MDhlqqdWEI?z7{mC4qG(JG~;k0QhEMjW=wCJKJ-Q z^Y`c#4`yf?&w}B@n*ssa&t}N@oS*7=2V%CQXC;9jQ}{cNO#}Sq4&QF9ydW7+EaaAB z(L<_EH@`_MCxn6&62F^p^JPf=l6`1l+Uu|1w72rU`7&hlWys{*y!rI7PbbMo&)|S+ zyV$}b5=-E7whjebctqTg_C!ZSVhC!(%#57GqJU>!!%g6+8r?$_kfwE z+UOGz$?qpt?H1k@Ybv#eGlq{TQu(o^gics_kDIV8q=+z3rW&@Q5GkbvnG6ulCIiT7 zmid)7dqG0SV5EFDs|#zZ&G4ZoU>}5I+n=o6O{ik`OSovtKjRs3(+(GkXj^8RZ9yc- zng9b?6xm*}Li8Z3TigoU>7Yas;~2XWL@Cgc?+}DChc0@0=?gE2-6b1ufqRM<7f84o zp>#(Dz7@BZycw&qsA;RV})njd9ur?M8Of+s<L1c)RyX}4`qt$c;YfV_uOHF3F1+}$ zee05nAKSMsmiV!K>oSNR+qW)o__2NKa-<*IcPKRa5i}Y~h<-$0oIShRogdS=<}AqF zM{(A&W|baUm+{5r%^$xmi8#K+9=-oo3O(Mg`%mRz-C1O*+B`8TFcmBsg(}uW|VQ30{6f`v1uupZ+&|>VPaR|4*pTV(35ds*rUi~{isp8GJpZhNAqx3;4g;3 zM)`4T(#ZtzIaz%Po28CrJhE`=zG_-Xg#&(9^KaEcSi2 z4_~~|ugyU@ngE4Da7Q3@{=1NC`!R{!v&Yocez78tGu1 zH8qR0Hc}U`JCDFGPuoBJuDl_N+)&vl1_@Lm9m@7c%$2cdw)(Y5OrbMMd9sd%kF@)1 z7~}!s17NLBxfZ! z^mjR@ak zkEl-R8kf`oJltf5!Eq>A%(Fy0g>XUVfRSNT=2t`MjuQdP}<3dLr`K*ez3^f7F z?wTM35ZFNcEzYk0Y@mhI`dpL?DZflK@w_HamEIfxykR-UssH=9cA?u>Exgd_NhRCZ#MU0! z!7Y;j53t%f`a!s<2i&R-*bgGHWupV=5fbfQ0SQgjaq+$&VY_3T`o9m0kFZN=U0%x! za2GxkqxWAan_AU3VvFH(S@bt0`Eny;6i)XJ6Se(n3H|54ep4#Hwx0_(eItA}8e`XV zV_g#6NL;KIc#Tji8YvMH;=&7&`U@rcVxJOkC+bh+wu?PcZ716c%!ff^uI@s9yVx$H zLaRRk+ZfFauwhi6{49+Lbudk*<#a0mV+e|*smUN0{>5M2zlFpvo!zQim!bqOZqThu z(DA#C)OJSUklYkIO^agL9~T8^3ddMSW_xQ8+%0IKSp(4n?y_kEQAOFPCR1n;%Cc#XUxJjMAv!)n(1Mp~& zt0_uBX`mo24AJ79cPny;>k*BxdEor)OBLV0fLl7%Z;yLiyc7#?C)nAJe}4u)WKodL zxbL-xkq#rGeS&R7%O&HW(S$=os@gzR;u zfX3PwvysdtPIaKfdsgKO2H$dU1MeZCwm7>HpSUD*2^xu4Sy(9F8au|Co94p^yT0`> z*{H(C>B^O+5b>V1`6kXixIcGmbHHi58-YM3lW7**upU&S5#Nua&k=Q+k0Y|jg>8wF z&iT>B65@J{vRQLv0-;bEH%^YwXIyF0&=iOT>3{G^aMDnOP=K6*XP%zlFM}OB?5F`g zs~Sgj$Y`Vmp!z;DFfVB*2{2`7XuM~3i-Yhlf5DkW3zAVyp`e0h2dnpSFOC(B_tME{ zi9)=HPCkngjxgo6Ht4y%Zh_Qb&qR6|jdBG94r}Q2T&YIDuY|n+Y>bL>6FnDc**O3Q ztMS^gvjaHYe$;agt8|-GKpkl)RC`T{o{O~oZj=$s!H>eIk{KW?c-lN{aK4FsS5MWuo$wh#v<|hERfECqoHGq4m5>xrDQ63*I2P)gQ*lp%AkN<>hw)6p+9XwuLty>Ia0GCIv0f813-P3Bm88DxL0gH~nw1@oN_kbj5 zG^rX_f?Yq{n8M^Qa$H^&U>fi`43lKZA;(Ke+fki`kcZ3wT3<8Va2$Xh3>}L7P`#G} z-*T0a__lQzLIH>xVwL-G7(#XoGAR%kG#+fupa*ZopzMz9=9yb>Wtr#r8QzSF~!ip4CV$C`xu#7Ig3d{k3qfl54iI- z>MmH+@I8i6v)r-^e}Px#1tu1oT>(hs%65~1L`O@8-61q?GFJx@qk1|)_W_1Qcm)hZ zs5d58O|)Bh2+BcJ^W*`Lcv4mTJ>tvJFu3z#;s`p@+o#RN%>d3oZyz(G!HnK^3z$$G z@hN)SN3gg{LT{f}7dOkvWcPq|TP!f4caz&}GLXgy6dC*(z3od-!ZnDvTn7EQ1#UI?bwlA%-Ul&^J=5YZuZQmvX?zd-7zV_ zpa_*Tit6PidCR&)<)Jv%m)C-|x{lnbMm7Bl{e~T9ez(JN(hVDvODL2#b%3$mmXgn9 zJFqU__br5@HfSOtV4V%7r;f;b3^!j4409;wjG& z*;#wFY43-Uo#tCo*amF(-YrQwpB?Hgsj+Cw6KHBha0e9ywyY-4?*q%UWLp+p8&7Om z_SY=o02x(S9QxfXQ(+~wrxgE8h1m;Z_eYlnblj8noSmW|=IpUwGIGXln`#IjxP787 ziBTc-!%$XF(K`30ge%6gm87IZcCx#uqI=01`hG>W=k*jAp~#rza~wJ{fx7fN+#W;@ zx&w|uK$PlJG*2CPZ9>q|OeyJX;;AfV=**PJ0~X^#e@2>@ zJOXZ)JF6m{muVirF%?xubENz7T-K8*%_ARxo&2#}MWtkfDHFfw$t)j8x-RJUtJ z$+>vM97&}RN_g!=u?f}v=ro8BDkh=2oe^ua&Z+LWih^{}b4v9HsW5~eKy^PbjqFN6 zb)HfaNmqarRxNsmq%)*5p?Yz{p!jSq>vmBfIhS~T(ChN;9p*UF^?A6s1Gr4qop%eFxdh*2DDMH5uJA2sGfhZiCrhN! z`T(l?Xu2AVvhdVgUhQ^S!|f8#FfMe|?>z8Jzv~Ixpy2E!iL57yez%Wgb+e4-_NhmM z8O_7QG0i#TQ#7|HB$9Szk{&s`!ef#X%C8VZ(!&*$NV>fi$g}kX%^e~elJ4bBCEbn( zWC`PVA3*cS!(}jn=JcH;>|{>?QhsS@(|k|KRlGRD2~1*sw)Ho11U&}ih#Q*3qwaTL zL1f!XIKs#AbsCIQXVF2_hiD4Q5mimxHO!A)nF%_CKuAC!u--Cxo9OCsp_!Omzd7 zQ9Y7lM(fE?0z348mpj!1krT@het;f`#8w6)sGdhMtR)qepo#5|9*9KumxNb0cN3~d z&MU_|z^v?v8X2$LEYto?!mAn8!kXjW+IS2`L2fW1E?O?#|9&)&Pp5E(B@!66I5rSs$oNqOjS_}f|s%V znZ{@4H5xKA$Y6jC;S z(0p*S?dhZB#Kv-RH=FOp&^QxwC2^8+=Z2mv0kqO*-c)rcE-tV=^AslVvv4?x7`ocu zAL+UQ&*+EyBbg__vT&*V5D6r)3n?#j4@ungN4^Rs^ByL505z!=Y+cMA8AWAsM%N~D zgUZB$DyQ^w$N4%yV0NjFkTwvN&g#8BI@ts4Q2XfMgKJ7^;cX3QohWT3k`lSn$kE7g z73ro%^DI(Vm1dZtTgm1PEE-Hyw(?cQy^%(ILSrKf6-7L{jQ0qUvMQRT=b6p%6w*2Y zSQ1~==B3I9^66g`h=tDXjkY+Ahbu!0Y#7+Gq@uEeA=#k!lvPg|Ikgxm~4FLqS;Iff%%gd^G4={S-J`|eF z3bKKoVk%fYBDv6i*LN{L$KBjcR90p*R}VuDvW9W|Vs36XH#0Yv)bwuK5wf}4R+&)) zificCIP2Sky#NgeZzL~7R839)*53vf-NAWT%EWO!sDrrxnK$h+IItmwN2$(q#4OdB zuX;X9m_g7%ILu;@P6mm=N*UO#fHG6YJdmCNbQ(uULsgp^U&?AVqTCL3t4e)#ic(vQ zY%S_$7jI|}x6*l#{<<67Oac<-m)b5^jIN&Kk}%dL#uhVox`HrT;KhIS>Eq{@Z~ut< z8oH|cLT^FbW}(&4-S4m>qVVc}lv1Q816p8s1`GE?dJOQT@+);%o#_j$55IfM7)70y_l`AH*LVk9QyrIgjMdk5dG8vhIxp{lYpVP5 zj#{NKysyN9aKPglVQ6a4a5=kE@8OHrRz=V#xQ{sA4ZR?c@PHuIri(1NgppakE+ zT4RMD0d;}x^u9sIdOseNuH|<@O0xu3%UI!tA&hs8Iu-*ms5}+FYfuK!CQ#qKRb{21 zckfkr21c~Ld$Y=NM6m1Mhu66JJ;M6#-5RSE1;^RCdP0au?8En=AXPJpVQIR* zi(=c0n*uU)_v!=C6h7N;+^A;Y-Tz0ZhqLwHPD?Wc;NjM zHKe+qc`8{7QFXubG}l@WSMzl&(OHHgUKl@)H0XBF@xg^3aahISW!Jy^y}Q%tg{23o z8~G7~#0gNR$RP{e$>zWePSk?5kqp>;uAS6U+IY^!!52qsh~42nI4O;vh^cgBl^22Q zI2X<`{mef&hUGCS9RbUK!;tk8hjL&jF3=n=YYiHoDuq6}*tSq4jJPP;3&*M+S?9@?Sc02g#?0esyo zOf!h6^hYS51EJeuc_}a46}dY$2+w7ep4oQ>O@zg9GH6=(Qa28az2Y{i0yWH2*(N@u zh&hX8AWEi=m{WT~0h%(AIqR7)ov{(c)tJ4D0aJQytX3{bgn1gK0@ZTWA+MOuJx~i- zVru|XGTFS}D|!4dK+t)G5b0KoexQa-7;&baP(p{%gcIpG_NAenkm9^R2RP~TEbxME zM4D0nx7H=LhQlx~j6h*xf4+(t%Vf&90W(r4&#f{@i5U#eE!U&c88bqPF@vFJ%mkh3 zwaSbc5nAN-VNWZ}oQxSV_7-Nu1SnmS7iJ!aOOMwu6E_P`w@f*Fq7 z_ly~FgE3R}r9=@{$$<$o4tPjHA?vutOuSV`jkJN8c4=XeJHbtHWg$La#f-@cVqnCK ziB1VtV8?QG;54r8Nc$~e#$I({hM|^;W~evRmz0FQ0ka}$PuO6Q(a9si_)Vy_MMF}taD&sZqHJA6 zz1XF!Jk1T}vDX%l#&Mi!3q@gcGbH8_S;D`_h3VyoE#3^T?BsOPz>DAY3Ulk64n8IN zdJhCioGz6W0ub)*E>SK9{{7|qZ-4sq!#BT-gZ%CT9bn7<;5%U>{_FzP_*x&>bwZ4t zWo(%cqdY@+00kCP1;I8$SceYC7K2$?Dtyh%&?FhE?AQDiNaI&(vm$4c5Tibj{*nan zC?Du?E&^pwq2BQ95!&2$J>+BkUoKhXYnt5EhbBV5#2AY6Rzdk@SRBRzkl9m=l?ZcPw~zdQkuUdW&h0=3me%xRgSA(W&ugU}2W zzZQ`l-&(&2hc?g*0+n(gp#@g3PMI{H7K>D@zL+#rx?={#?gPoKP?_RzfRHFg8f(#* z_*jTt1jPheg>^=C+nx*z7$ycfV)Tu1t!?UiEVP|CuuwgWEVgKrx-oJ@5J=_I9=5m* z6?xtx^EFq?YQE??SPztB&3dSXp(7){f-^lX3S9R5a&hM#&>6g9$Ld2(~H5}bYpsKCzl`zv#9G6)OCR=lO0Xt;$v7U z^+#_%Wymte!}a*l@r>wEdx)0L&(06f7EOvsko?ZuO(%!>cGJlzzTLEUeB+4n;dk3j zC+GHd(>?_Ag;6Ib_4cTJFy#xQ_7RgWG<~Ylrgxp=8vU6!jq1jefBXJ%{VDus-#t8J zXLj?fQ3hN?@aVH{y&$x%_8MK&trx|?wYh2!H1yZiUZclQh*9Fu)lQXDkZS5`r^@pu zjd5*Jm3L3t;995A_3JgMM8&mEqkA_HK^1?kldO-8<2+S7R2J>c&ebOa_~(7VP7{Z% zOaoxiT;aE&mR_7b(0lni6$cvp?Z+QJef&ULq(O|k(9M#!+1Rv(m0}DnrJ>g|X_k#9 zzO7lAoGRw22bppk;>_l-RqMNnLqO4O6SMe)Mpn@ z05y}>tgpo8#+Wv7WGH6Glg5>y!t4*4X@hHI|3My~{vc|bet~5IMuWBY?F&yId%|St zEv5c6K$CO$=+l7FqK}i8MMfwQpN5U2f>*DnsruTQP8VeLc3`xJhAfOdif;HgSwEB} zXtAe!n!kpjxx4!{WVlFe@|S5fgi5^o zPSva4x0Ra=4F5Ov9P++ev-@}p4 zyH1RX>f*DU@0g+a<$V$AMdF4H=uf~iy3NH7RDucqIywK@{smL_?s&5P3kZe%!#lWB z3a@g$`yWXidWok0k$7Oay1u*9kB6hDxu-~MFn-!cM0Q=PlU9?p=7 zbRP^fW2O$8sYrF#j;MQ4V>hrJkRF(Z^CS)|qS-9T13N3)TW&z{%-G}Eya(ADqP@mY zcgALrMaomP3!!iexijfF=X!41p(EsYaf*0E^hA5bCHG>?;+W4kBrz5#tQ-^|@qjsW zBjL!&lDkC*i;?nSJ>5*_pvCFW_v52X-L%f||GE0*5mZsE^eI*<|6kU0;Z+Dn*Pva@ zX(YS6?N%?bAbS4heGi$fXF8IK6h1HnI`&+`603b71#-(!Y8c!CKoZtX_gqCnd$`pD z`B>isBk$~!y7U-Fq90er6LGNwO!^wH`p7?uSFZt795w;r6xOf@U2xhGqHxLz%#HXr z;ku>Binz+B6j;MSdc@(t1gcBm#0xk;QT|McfpV4@0~z)B-iu++ZJ;TI*UKMH(B=2v z&`L@hEG^WuIB4e<^M@%j_RQ7C45W!d_0q zz@wiiNtQ7wAtsf|h)GMe?$xkap439qQ&W9Tlj_h&h-CN*3*or%tfAHGz9FxaB0iC> zs0ojAiKu3IWe=ll89cg4snKtN=!7H%GAWR(&(x=By^eE5@MJ@YB7KV>>4-W@Z;=!! zAdMWg!~&m{5@H!iZl6ktWj+=cMWIQaaMO2LDxgv~!|44+L}{Pc#M&}A`C5-`naMB^ zNpc6L<+?Ty$tN#YeZn4;Hkm0WWS7debsVR+%m(#8e3T~EQ%_+3F->Ow0V^M^0vDFk zW5FStm*Q@=(!3$8EH?qjVw~ELB1jPBLrt9zRBfYLh!@*rD4rikgo{*rf?d#)swjq} zs_65KVnIj?C8L-O($3N+&;+}#2RL7E_28q*j%q^cPPv{f5NX5$zS^CZ_j50|STEdV+char_La{<5HEH?zqeF{sPxaj zbgpKyB+Ki0Pf!mye&9$;5Ui(EvMM=!q4k}X8&~)P$2CbH|Ckd$QlL))Don*$>sUI3 z$wAX=B6HT#6)p-&b=};kwu@azsBr$&PN}YE7Rep9K^8^mJKE6&ncthpl~^_DSZO1w zp?S5Ex>RHdk17@o%L|AC0T5Hua(Rs8avyj$puLOL`JJMrpjYq*eW9| zP$h&tgbZ(@MpzD|8SD0RmK8d|U9jkBf26f8Y?Y^zKnQjD0GgQb1%QYzW!v{l3{gRq zMp2TEEw)nKCaW~pPNs33R2on|Z3zK9yT=oN&pRfK7Zx@%q__v2=x_mLS7d$yn7O+| zM{rGZ>vrASGtv@3d~qoCZ*NGO;pp&4^Doaw1NHD++*K5*M}$R^Jf9@J7EeaEC#G3Q zdDuj|%l zZD5x^{O)z#`V5Y*=r(0@yl%E*l>+g!q&7qtKp|F)*SOYdKeJ2zlP<%y)4jhVf4v)rG8(rEcK3z!mp#~a2*q~fm7^48Q6yJmN zKDabjAMA>-IxyQt4e7yz7f{7t6P?9v6z7AhJWi%F279%CG|_u)X}gb~G1c%vB*qWa zuc2H3E6he)PD|#jILW5miKiKTPWQtoS!h^JF=8?sFNgsx$AlK>I$KvkgASOj6ZK(h z+ih$?3v_gEbF(jO5ZbqCR89?xR&$SWO-`7asH+wzh?=1nm|WvaxCZUHhtQ<2 zAF&k{D}WpQX{C|s&blxC$5u}UZFca?-ok^piGG|AvESwmF23Kn53s20pIhH4K=Y*?5Qm%X~254&$j*xg)? zMwof%^)U}CFM^jfrJ>jc?1R~c_b+w_yMPlrM3Ee_LnlEUpa6EU(f#zIQ+}k2eef})7sM4I2Tt^PRqMAz{g77am*B zkT+g=S+WhE2$FI_hORc&+T3K!`SgiOXkhs>m}TfHB5$SC%2}~U%}RT3=xV`g6^CcW z>sfupAYmyoF+w|W)_!1%`c}lOgb6gM&Ec71=o&K8pl!f}%4fs`4J`Eyxo%d_Umm81 zZ`u^HiA2X3JQfCn;eFN}gV6`QhrI|shJCKQ!mz&^Pr5kue!qRrz1Dd1l>3TK^BMOQ zo#qqnD>}{R+gEfdPq$3c|Mv3nkKeQ;z3)!TFYR=DD6;!i(WW}xVqdc;q~IUyqPmfWf( zna>GqL1CbBDm~Y(RWNuQ=vX~Ur=lN)OSZiYJP-(-q(r449t%1SN(J*G^XJExb`0Zh zs>w<*&W~ZPj7JW&(tYn_@Jqm8&%f@#adi4yXGpoUENAG~E7f8MA@!0SCH+n}f$gaA zSP?VycCpb)6-TqE_b5PiRvraS&}z=I{J^w>&|lg?SsEmb$u zt(Oh|UAUxRLC=<_4-Dak)7b5JDuV+~DguY=4x>HOjAS&@`Lu^h9Z4EA*#|S&hM@7x z9Dqp(i$vI}`si_iEZRC7OEpW=+Yxrn@dL{&OcU8F#67}b!?Lygycxn(V^1gh8?-H! zPy%#e&K?{}NyC!(FrY`bs2MLx0M8nha$x|-Odkjbw1o-1clf5UV%tH{RV$!U%?WgC zP6~~FP7`&joKnw;JM>u6WVVM$@zm9v*hS8%3-H67CbXD3?MkfPr2f1Ckkj7qao`bQ z+{_4YhELiP@*w*(Q>s(uZj|NrggBvcXP?d_(F4w*5s=|DotrxHLo6_vZm>6e)RyA zK}~*n^#GMgt(%drMM5*Gf0if_HT>ilG5bQQfJb|?hWe#4z`{flYmd>Fa8-x+-ii|a z<;NfXfXk($JZu({rCJqyY0{fiGQjCbQCwL~qlRj=$Q(x9juhEmTFs@uLLsbXS=a*E zTB7Ep<%7l&xiN^ft)KvQyD!pyl({&cbQTo-Q#`SBKgr)zMSr|+m>4RwYtMaYHkc&t z>ZBDKNX~7i4JCc^JPknvkFlOp5$n;4m>ic*0JI2;6F|gut35vj=a#$|vd z3gc%?HQ-JZ$PYwSSRsHF8p0}OJa{?uaH6@X&pFnEX}<30b&4G0)$?oRw@x&~dW?1K z7W7#HKvckdLwYQ`dk`WRLX0gL4`ru1)+1C=YY(IU+8N@b_5q?FMcg9suLf^u3r<{S?H%6y9<(_A1b`Hno9E6ZnnH>= z9`tMh*}RnF!4tcr0~u|*VN&5&p)T` zyfSOlSWI0dr23FiKX9O+3++rNd(0`A-V;ztULbRV|EdawKnjT^IwT{IZfqQkZ*7}N zBCTQ!-kkd24P?p}4xm-6pq(fG<662O`?nETXpJ`ypVwyCJbJ#O(|quJMW^}L`HD{e z*hA+l0J?hQd`16j2hLY?zjoYwMfYom%~y1P#ZeP%v*8A`gpZ8HAp#_wr0nBtrbR-c z#klOaWc`c z0J&oru_%mS)JK8c$RayEqu7k%-}K=he$)h#0NTQ-Kl4#D`19Y7nmkK5nercf)QltB z7mk_}heR@pP6k7YgU9pvex)NGHK#GYbec4mF-$*k89wPCL=&#!GUut)N6mIt#geCS zzi`xSr&MrhG3)={N6l%iuRlxX_&!|!ShkdJ3 z{4XE!e}Bm5%`f-ZI&{9eXCL&`8TZva`{U==_3Y1}U)Qs*e*ASk`(nsn*R!vU{B=G1 zQpsP}v#*@|bv>u|C11UtkgUnw@%pZBry`^RuCv1X^Wk@|pY>4PnB3hhDWvVnt zZ&{`L?k6A^m$II>YerM(e+68nbAkf?E5;Zd6agVUgI_Vm=%t7;D15(SjL}sQW59>` zHDl0U0VOcrL&bseYsO%ZaT)_B;jbBk4%KN4sFSZ5gE>gk7_>>gW)ON&=Rs(|f5pzw z&YuVQN>bJ94D%>oOROceMh?mA*?FW_dxF0f64Gn$8Uf4vs(7UjTo5^naNYC~T>KvC z0ApB3zIXPzaKuYHCK^atCTNk|GIY9YZrm5`=AZ$yBy@Ja%d+LA$elCU%aNfhn_B>f9H3tixdZv0D7}J= zP&m{_MX(d{|Fs`SQ&284BHG--1{vGBeQXaeX}iiLd(O9pd+CJKCDQn##o zG--w8FF-9c{c%a15DcaWARbE^gCkzjrgKVg4KctQB+>f(1wK2ViPdi;#lFH=Q?es zbDT%|DH&+p$Ssdht3$E%lz>L3OvOS+QD8Rcc6p31J0FWQ#Vq1MN@#E6J9fCg0U5dJ zB1qT6U&Gx_gN{XF<7c|}ahh{t%Kpd}2i}(2%U#K#1xH~CRqkslXnpZ@?khSVWVx>e zP((`kkRJrl7}^CggyGQVsR;! zs+M)!O-gi}HFJdu=Y4Ri(xff6Yi#nC_k@a|Z(OnS?sbzAk7vyc91{QCH!kyx26yMf ze|^;Bd8Cc*ZV4|VKYw`s{HKv9+Eqa!5RBJzT-fWt6Zb~fIO~Usq$+LJHWf>1I_OupLu3k?1>;`xKW6=gr{!TWeT*X-hh}b+&isCnQgs9a7xT`d@V0J z#NFr_?@KGEYag zWWE{gE6#WwR}^0|K82?yE(wO>QD5%^@C2F?mCh3FXFgs-(7HX7bU*8E$yu2e8}#I; z*)uqDkm3#nJjd4(vlKi6@M#OPTzqR$m1@_n;?XwJe7jN8FM$Y-QitW$6J?8YZ+VEA z-{zBkN1ZW^;<2#I#CNg<&ZclxmY7qCFuaBUk_Y{%t?hKHh{J~i(`$UAwCb+@S-Vl= z_8lZ&++m4F#aPxY;0_>o0XL-5re2f8k$G}v3fROR)aM$Wijjy;geGMU zAx;#Pm5p4agnN}_YSiuwZC@5!r#9#0D&CnV)|STfuszepDtQ$T`X*&HuMgQIDS0#;WA9jL^$be?V#Tq^l-_Vld3l9n!Q zduF3SPuFTy3e##;7hX47$siCqSj&7S6Dm%EtJ>fbk{NB%*A4C0Kb27`S86s6P^l+r zw{r|ZCfyKqQF;}~Hs>|RmhFM~+G_E(`c>%&E>L(++WoU$J5&r zFSzO|ZcYm<77HJiWI-5T$z>DKwQ~Cp;n7V%2T?q5(-J|5-p@kF`F@t-E)DOMu`>KL zGwbMzBx#A2BuShvEec+BC3Wr0`2p0zrFSIhI_idln3*AHTT&Z34>TUmI-8thtoi8X zO6Dd>)ia+Bod+8_55Q3iro(mgh4|(VpFY1Fp10$hYrJ!Qo%Q}}I&Vfj-!RA=x_ZMP zeGm(}1aAB{3^IpB-!RA=A$`LjbFlOcgUoT$Hw-d|P~R}f98G=0Aah{#4TInWvPL`K zOekjF{5iedBo7 zV%u+#QzQE9eV|?SM(}7|&K9ElF&7LAL#Ou~(|uaS6=g5-BTUk`IyHtB0U$s9`Zx67 z4I{#Ct3q%d%0_fGVwijTVno<^81e6)N9)yR!&Yy}CgcEPn1=_CXdsPVVWWsuYr)Gs z1Fb4L5biQsEq9a=WgPQuH5u9N3AR!o8+aceAoNAVnhxPQWX*xfkhP3>^}9q+7e|B+ z0-C88G$I5k&@145YT#nO5VC$$$QowyfaT`uZ843g8sNw@KjHxHX_vsM4oO1Hjvmm6 zFJpKZy&d3Dq6eW@fZqSE{@9U(>Tvw|cb<{f@L}99bw`lO_*D*rXhJJIVM&kzi-6*N zLGDKdxibRk5g;#7DtD{2|AHSI0@tSv1hDp%4%{j7?0L4%wgL>uvnYO7{j3QUp&&y?UJDw(H6T=qa|=e0M71*l>~?LH-X8WDJ!cZZ~W;qCRj zJ3tW4L9PNa9_y=iCyLT7yk`q3>Zyovc_+5t9Vc73MY%iNz1W>)kr@#pQt{u4+O#`T z1`)SqST_wJm0>QrhD(Vx#CJt#qz{!X35a5f*+fimnS}R1_WQ=D#j9T4aCW@_;SgN3sUlh0A^ea zf|@A{6)vJK4-LJJFr4h>RKkfcjC|p#VlCw-DoqenvDg{KBF$PBP94SwY0+A&6~ZZO zOW~wsEs-r~CsQVCZ_OCw(3j#hR1^O~O|^JG#f`20tn-Q?}BG9G)kN<%;7bda2SwxOr!1kMK-BBSVs!Ng|0M%~T6A zYDtZ!>oq=@U_gc>wb7Z8;p{c1LvA5Mye8q)j7!c!e@qfiN~et6lj5sXmfKWTV^oTp z1#_gq#+ip`tq8$_`IK16NqENIw00reEh<)Wrj0G7w(@HKohD;TskI}9n0}Kmq}mkc z=nz}n8P-m|aU)iUo#{i|&jy)3M9vF+)B^itfz6Dao<3Z!%vhdqB!L|j%`m4x>LHds zvbbq$FL5Luu`Sfv2}cDI#3XvITdBPng(64i=+rzU{w^LxilpC0N3}>kStK)?ZNQNP zuCtye9C=e#kvxkCX7`X~C=vVRgOBs_#3gQzT})s5T%SrEnVpH8L?5Q|Mjxcif`^cX zN-&uvwBd^sX(FSuAt#)ArVk`~qC5QS3w^cEBBJMLwK{U!XJKynykNe47J8psdLuu> z7dz%hF}aAovwJ!9$Tl5~>Y?y6o2&^EAE>O=_r2eBc*HhjRI>XyP`Ma&xskWuHu2&? zO{jd*-al%*$I!yvx}UsfM&&ZmyzVD$8(WX-ewxYPNtn1^YlC0?S7)ws4028+vbz)-f z{>3dePC&bet63~|$6rd&Vo?rdnPG=TF7zmev{xWpZgSk)4&9c3qsOQ>mB*%N0Q0b~12!yI_oFJ9iL zmTW6vS478lj-CbEUR$!`XjJoQ$&8Q{OLjob`g~YI9RS%W@8E1@J+^O(HH>%Jq|1^w z&K(cd))*D)T1;=_IHBcSkila_*cpE79?Y;TU|tEctw(JAgAI!I86Q$IDEU!Jy;ag@9!whzFVxMHOEmA*3-6 z{2Oi{og#4=wuzt+_BuUYp5yB(&D&>T@i|&eZXg{L(VKQZoJi2MT6#0{bw0#r52DYL zdt^s)rhnv#Ii8cn;MkxV^<+D{S#}JtX&ffo&O0FLS0j+CVu1xH*li8rM9k48wTnO( zqhviO(_Tv|?|dB-od8TR6G%lfRnD(ngtK^mxSy%ee-S!jhqa|R@`%k4JG7l7heGg( z*|xHfoj16m+^vn^yZ@Y^@Ta>An!Vc){jP7;53JF{q z3MOES6A~C>ngF!KGICb{t8u-PjC192LxC=YZmc%sg2@UdeG02ykM$(la)?Fbx!OGi z>=XtdU)#mY9%K@XC`b&-_)11X3ulOyuOgvEHZf9h#ERIypi(V5Xc3ri>znD-!HZpMUHd{TQ;aXJ~U$p~oG@*hQ!N8UZ?z zWBVnJ8d+&bdZ+qLwL589!G@O%)D#i|J=jrNq_+&3sy$b zt3_G^2H*AP;KzylXb3G!*l@k>?!qhgSdbsRCPa?;?wU*EF%;-bO*H1Kb(s9D$(#Dn zY>co}9jp+8?}mj>rb%!8H^W6YokYsP{Iij+2 zNCm6PqGK=tc=RnrN7w)ivQ$ejHCo>_O|K=eZb+5{QoYC+jZRey(_S=W3A<6;k(O7q z1Evz@a2-B{`tOjkcf=(atpQvuZSTNKD7e;=OT!q`()JFXES=`<*gI+x4GS^Im9I;y zt&iQE%?}JVsj&T>$;qtL0Irv2Ix;J@mR?!~xMb7*&YftbqK@xRLs)Dtb^wSk?3fD=T1B@<`#}+?C(r)l-UENDGsr0$A)uqhr8ZF zn=Sw?*Gj)oOXcDDFP|^}{n}#@YcZAa|NG}3{^i3D{7-&N;s!%*)m^#W&{JiL+YLRH zySUxZQw@yU4LudcxZTiGwT#;hJ(bY7-Oznq4Y*i7{O)!`_r*4DJoHpO=5|m+NUb$O zZVWag+|M`m&&ZGnyZ(G||BNg-SFpJuo&1bUIaIs3H4XlZY>9C6&qgN*K>vJW|BQTz z`1a2S_s__eh+zMGaQ}?D64CJ$ZUpmhsnHO2{`to4`SR9q_k4Ndu@Sre*>G~$l}}O~ zma1CqNvi$h{qkF@v~_%3emX;j{_bUKm12__H@BUJ`4}_OZY>4&r4(S6&}~;UN&#nR-kbnN z8Q@87zWt*F@FX|i{E`1X$*s5kFh0xaNp5W~9h3vr*J$MBjoTD;R4Vz!K4*K&Q>j75 zPE~CYfvBOZBYpl=Sw}kS%a;i0%rDD2Mgc{3y!dV?^TOp6H$oL^W-G#wN){SEc4bWF zD@{QAP4FAUhT(~o$LPm{fHT^IF)XTI-5_+Hc#p^7vU*XB-$ z{Pdjw^p&>&pFXH8^uOz)gs_P)J)k6 zLz1=2OaM1PN?(?cA^MGChkhC!k6dZuBZh^H9!eI8BwW&V4M+iOTsH%h7g7hsXk3T)xfMHZf&yPEHp zxH16fF=AjXLqSC!_$G-E#ZnJI)Ohb!_6)$*6Gih^?2GWY@hpn-c%ANh6?)T%ns7S? z3UJu~&{>9F4E-F16PW8T!$-|R=&3<-Vhk3o=XLNG>^r=SB%(Ind7omC6#~`tp?9hJ zmyyid5kzg?MF`Apn?jP_8Se=Yi~y*5r(Hsl_vMUM7$%X#wmElI14ER0heCsexqmK4OXrj|8o^b}~pJ z9Ro&{N24MfoKz)u=Ogk+`Jeyv3qB=w{^`e|)&!wy??2I8R=K^)%W@95v{Jz*1ri<^gU1VOtqQM;4B zV}eW&WUpoDl971HQ;^eJlZV!p#st9X3|HgAjkhqJpY1$wUObxyAg3>wElAR-&>p5` zOgH(X{N8nO6(f-$G(5dTX>rbJ_5{q89=3$kwhmn}63IqG(`d~@i^yXFYzcKy#|ciT z>?9 zcj2e-SHw2na|im%!+sc^w{jcJx`S@MUikGl)LGEN-+%l0&+Vx9QxoH4O4OVtKThh{ zcm6m~qFH-*o_S{-otd#bKcn#U0lWSC%lF^@^y!Chei`Y6PkIDn`5y;7S&QVJo<*{`BLwEzBENJOM)P742z!pz7|qPRhMvUgGe9&4iIsFG3X2tHxM$zpR3JM$e4W#QQLC%IVHV` z!;~ZtP#o5ivB14q=B$p^#IBZEh$(0Bd*&yMJkh$M&jdK0{z+nPEx-hr%gKQ&?|`4n z$o)m~F$xeitl8{OM{inlySo*LuGA&d<~c7fa81J58S_y@2~hX5F4v=gwP{+Dnx|D+ zpb1~R7w35^qKXnmVy7bEUM?VrCG7H`7Al^O5-<=lLTTe#63?^0;UB9E@@xAptMr*H zw&)6ddXbEPNW;|6$GiKdu*CF_Ua@)l2C}k~w4l&gcw!4z;dx()U!u_OS@5~Dp#XvgG0q7s&Xlr_B~(#fLl~$ z_E#B&MNRMSDzdVfBAm9WvYq`Jm27y4<%?t$k4S(eda?>gG!0(%naRo~5tclWm3fSn zWVXm^m&l5eu%HTT*2-Kv+IpFLeEHFoRSG=5?b400t4XUVqb-5uqBkg|kZ6xXUV(XgmPuF&l0t-_QDEP4n);p7oxFUvoM%ky@kw1i z{##BmC3h%3(DEeUF$|xA;_OAfg~A$ZzQynco?Y;2adDhp1#HM&Lqtp$kMUj*D3tn` zlP;SFF5d{_>wYs&1rgKJ^-K2-Tv0-_r$oDzQ027jl{6dJXd{BJi`tqEZS*gdg3|3qBvY8|V!t4322q1XpjXA7^!5{eC#wwU2+DucoOB=)eQQ2KJeWu3#&col z+>c6Tyl@xFQNh!a8K`)UQAdC&kS`Lx7fGcHy*@NV;H_&wql^@V2bxJFCGKWC;I?c> zg-aMJ-;|1F5JeG?&A{AT2Gp`f0h(K~XZSkuaVb zUEYGsk&BFuOPyZeT1^*ruBnF#?Usn#$rrjsJ&~WYVHwkf|6xJcoNayZbOl z84rx|u4)YL6Nac_Em2Z6TG5!0dHwnC%?%l)SEXGE$LQq{x1zQ`*b$sQ2vFXQfBx|N zCz!|Dx+Yk4sU4fDyYu`Po4d%JSRtyehKN8Ri-3G~S)+<7=;OS1wG$ds$$X0Xt6_g& zanpC%Akj>vUWKG;Dp@0YyW*>xfKAARl?*jGZx`g8(6BHetk?3NayEx3TUhWnWwaqmRq%7zQdPy zEbM-tB)qbb>HsdN?(?5A)k#l*+PIu8s?)^+ePx(unwnDQY+~{wmMI$JgN8|U^}rPflA#U?rFCi;S8a$ngQ zaC%ds<$0Zj5`7^~roI#?=u5L<>Z=92FAqbr)S#*N|2}{CFaNFBJ!hZnqK+riSg1C7 zrcrh#mhKrAgK=o$&6P>XLYc)NreKo-Z<}+EY}Ldu^EQTWiSm_`heAOnNg_ANd}0M$ zw`jZ4!6m~@?Dw>l5GKP-G-FLIg#J}DX2QO z&d1)C_`z}{d4SM~F#rQmMSsk!WhnZWm(Ud}1ck7A%cPZ^x8bt^no#+sJ?SbFlFR_c zrU@&*FSdt?ISCsSNB9ygHWov+Q!6U#c8u?cOi6&)3%T5U<^s&5k}b1Hnw=0$q~x4= zKx9F_0TJY%A)+8JK{6)?;YRVodzc7SbtBw%lUQN}!Wqw^H!~ZPK8p1_+r-S#wgo0a zIaL&YVo|nf(_NPk1VxS(aG zbzI$kmH$RyuSo~tlGU#=$wr+&fB(W>Jdm+R&gGVpWTWx)mh~5h)fbh)+|;VEoy#cEj}-XhoyoZTM0h1 zSp%KNl}(5OyAm@a{z->~$SpP?YGktK0ks4v^o*@B6~0D&Lr`VK*83<2$@Gbd>|KyA zmIhKP*6-N587Q_z`2_QGGqC-m0v;uP=CCNx7s7#M5v$1zN-%$v3uIisAVUV-ukKvb z!iz$GVL9=2qzN=5Qq;)O|JTsS(s+rfLQ#cP)E|YrKEk0%6$S zE2eJAjOT}ic1zj42@F!rDx|p3iMLfT&r`%zz7b57ywmqxlVJ&ru{NHn=T*~SpFPaM zX%z(|ZF?&_CF;{f6+9Kl6V5w}xfQ50S^$=1;n2co6<4yukP~IJl5)PYqhfWLc$S)S z;*h$DoIVag=@Uh5}?$ zi0QNoYN25=lCvFM$h4sN202$&=6>;_$k#rtMGU7#TrNgPEV*|!!p;YyeYuvvRSZR) zyd{wBlzU!p6E%mB&PrHhG}u^5Q^^N8V`r(g56_A%y1ie<+4JyQ2@)Vgn=EMZvhAvo z5X3l@h}_#pV`_{2_XKzVrL;1Y7hhR@v`m`!7$Hd7vOiAB99PJl(drt#?OT?^nz|Ir|>Dya@ z92ui~IaUhO=HSE8UP0artKCw&;1Ui|OcuT=+duoDE_teER-&)UtW+Os_lh!}_s!o$ zGQZk4ZzC2|{iS4GtrXnUR z$Wu`mPE$z(G)CbN1*7;<)h-yNO-GWM8KqsJGD%c}Y0vjDX3!|B#Andr#SgE?5D!sWBpKLrz^ToV=h4h-_Py=xrQ5SQ^C+d` z0^s6^pe0$rft~am=7+Ssp$Fw9%UHHnGJEs(RKX;6kD0ywrplhTS}PVnbqKM@L!~R?4Ud4fel%s@ zTygCF8oBXnA{UdEFCRbSxBvNzUwr#- zKm6r~-~agWn{PjU`h58tYCInQ@;|S?;NVH2>Q;U`U0Tu914DvwczJ_ z$GRcC!!>g|xNb=Ca1Y!Lt{c)k0%*5`>xNX1>r1zT>xOg>|I*Fif)8gM3t61+5jb!~ z-EOQyRd9EIdRj~AD(Ce49TI7l-&)1p!)`6F+pdazw?C}qdfR2p?@mYd#(!XKqzpsd zw0;jh!eyR^g^7c-zPGCgyp{+0JPMmj*%ahAIu0osd8aGZW84oyU zzYpFz;Z%{qcfrfk#*7CB6yFE$SdLczGBp;DwF-K6uB{lMB2&mAwnz zn%{J1`aR>;IH@qD|18+#Iv z^00}$a4E1t#>N=oS7j>2Mhl{pyNI*xMhhpVp$QPxuR#<7H1fo+3u$ZJPJvEm6u$Aq zJ>GC}RRj_^KNDAt^%;_X{_yFqpHqH{_6dX(B*(x%`@LK~K10U6>`5>nvVZ#3%YA>% zZGWe-84z8=6%x9hK;4)g-8Fs%6WwWmfhgcaPtWR8p-`pbkJ%GG{gHO`g0U%m*&JN3?d1?UbLKx)W7$&Rx8JQO9WDmNoMX;6X&BTTdDS zRFPMOc}+{`r3)GsyUOjl;3Fhb2d47xFZ{S;pmLf<G00tQ7xrZw%oK@lQ+sF9 zVzAUf%)yV*W0Y5-C_)IxdYILV=wTYd1hNoMnK@Cn--o=g=YjflYT#5o9y=&!G-XK0 zNYv8^$9vvlZ|LF&gS}99Pu}xWNu|#4OQab#h;1XY+5)8fvxy;wZitw__z?E>ApIY z6D8(?MYgLYv@iYV2)k>i* zW!#~F&I}i`r0VS)o|E zXTkA-rA~?!I5bw`Sh0DOTMLrWO&F19TY;}7KJTL;lc~qb!kat0gh$R;S3Rpu0@!VNWAJ z+uBg2_QuZ=V<1Y3P!ea}^T?)FW?WvJlFgRIF>|dS`?N5G(LOIOQ8amSl16){demDJ z=^&xdnaR`xfSesKsx{M{tgd*RGkvgXHq48Qpm*#X(|h`{PfA^5*R92k#Lj{h>Tg|+ zhs_9DPwT(`OB2w(waJgRh+Ix7zM__p?E|#3SZ^-by-W+MXsA&%ql8+ARjxTk1#8mI zN~7BDp$}ou`dt1pB+J?KUxoK(6EwBn{+-mj6C9gO(E0+J7Bm-A0C4WwYC8~7_z{5R zcGQV$J4#)4p4(C0p`8Z`lZ3>Y$BVT_yOX$Fg{>6B z#ya3s%I$0(HN-_b&`4_M>^I1%e%Vwhxt*-0)-IZpC38FP$2cByC38FPM{8&JNQAjv zwI9rz%0_Jk5}ynvmkT3(Oix7&imm6#zyx+4ot{N z<2m23wF@*-WaV}hfAAh)ZddUKrBbShBteIYNZ0{N-zH9+?}5Bqkk;)y?Q4vVAOhKY!zrE)t&T`28nDndrTu`%2l`FOp&}Jfih) z)@ThcniTEqT{$Hmm*1`F*5In8y@(D-SEmiPJRbN#>kJUd=tbg20MVuMSWZf5j6+NF z;6=StX@28ool!=X8_>SwnAx4B{Lg+f_D%3Fc2&ao-Z$$STJth(8dyJY(gE!f*6_KJ zn_eiS0n&ablLc$rDXIN#DU}cHjUxA&b_A?BDoroEQ<~F4v?I$x2+Qdq;~b=#hBZ~K zcBe7WJ-gIzG;bJbmD9kWtl7rtO282lEacS_nLTaYk|rMz{k3+PEth!)*V1xR>*(*~ z;nkyWqqtef%-tHw^4R3IOV~`yn@b&lhL6oCQ48}-w`wkIhUKecvTcPsXqi`-x4Txt zGES;dZIyt5qqB2pFHw3?rPa3RnA5UBZL_^Ho zcW%c`Q4LyvC5mmwa=QaD&A-g%24TI|V9U^lY);Q(PJeEXy0&i6Y{R~K5^nNvRcL2P zPAXUsVrUnHq&4A+%7_pW`G^qe0iqHOQ|E>d2`985p{%Do*3;|=%2i!1ofm`@Kj!K3 zoJo?$!1U%4aY}yeifB7?xh0X$pGkFR%H&Ba678_p^w*={Rj$<}_VxCr1?5tOZsczE zi=b@a4_k^q~%)6`W5F{Duuq63o}WgrltBq-kH&;Dy#)ui$hdc+sRUw9Fv* zKuw^^R*{!35A+!qq07YmP9$w(M}a8=6>^AzUWV&_$%`5ZAWoWPxF=1NkLtKY9NeTB zGS4ZFjTStNa?~jvRdp0QSxd3s2r5Z4aK{@Y95m}qy3EI3IzGPW)&!QRUdIWm?4|LB zVzqKH@k>uM;gQqgb-2^oS2g1kXTvwQ3veEfc^^SFv%KkwwsP)#+_cXxG2Ng>R0Q~% zo>5^ZH7FGgiqo1WBuMrQSC6VDO7yrSv78m;pi$eP#;FI{);GQcpoWve35hD=(%rWi zPov9WPbXTpMJW5h&g9KX;ka-e8qM-GZf-UCN@b~WoBY+`WA(l9*pV6-cwDy<_|!;) z{B^}Yoa)hTlE3a73W-OHFD{%?d1A}JALVzClsgG_B4tuZ7J(=*>TLrvaL_?1S)?sx zLVKmuVj-cWxi=%yEGL@7QYDeb25re9P$r~Vt07ly6KR4RXazB?O6$O)$4NB%o{qfN zfOA$_yxwG`r5IzWv^d#$DG8T#nlDH(>XVh0ZzwgTrBU#R;-=C9Bv5g@Zj=NXX)DBF zJ|oGu3v-!V{6d9D*^_0Ys?GGY;c8}Abci5d&PYV^AeeO#>qU*)A?cJwtS8OHYFSq5 z5I@l9I(gVHE#-7bVpNv{lk(Bx^)@U-6Z(yyl1c-4EMEisoU&rlpkps?){C*q4Pmbd ztK4yZIb)xd@WUSyHX#% zjLI@L&EXX;(Kz=mcC+SN|h|AY18za zAm5N3Xv=tAdYh#lNkf(cHgVgE0=lBqT4I`V~eT!0d)X?41sqN)v_eagHY?5%LHIJ6Loi3pr zvnPA;>LtS*an{7x(Mnk#4-{h^vG2$vDXWJ`B~w<9l-pTh!!sj)efkS+g5}3Ze>vzi zA&5-?x+?Xf5@6PtpexE=(0COVOFeFg2%qWr8gw7`Bj-BoM=>(0U&n;o>`lvsYWCrc zO~~>y-AJPAo;NgLpHySvgO@OiQvJ`EHBfBd|r zx*YBT63kWTe+s%q+MhO(U3Ay?!pwsyl|*&-@Lp>uD3u@VDRr+a)6hK8kP5jcw!Jey zpVh9RqYA@my+idFhzDXx~xFRZ!2I(dS1bp*7Z;)!yGJVsy#UP$lCS*Ez=5c=?PR0>!39R82t(kb`{{! zlWGOtS(&kDQLcbljq4tq+FK|Cfw~sKvIQfGO}*`5^LuEffreC&k~9=n9czj93vhh_ zHZVJmokLO!1!y^reF_@eGvO78o3|$sSe>?_Dux@2vu_elvI~M~ajFyu*rOR7rfG4` z-a~_8an8MHIXM)j{n}6Al~5F^TwJ2PGHvBxA7>-IVTQwH<3Se z3i=J_d6lntQKI(?*<$d*1I8Ck`ND#+FkUCy6+bt}(rQ@CtcWx32=i3<*zz1Mzw zxep^K{r*J*W0~%iL#yhg(?IsPsF1L?c6FrdfYY2##3&)jUKbvJ3c&@qJEs-)h}yl0hOMiKd4D<2Kzy>|}Z-EQ`B`07Jb z+h{+E#z@+L+^@8Wg4EvxTKruGp)ZfFI8qQhtfX~jOBN{`|N)@MU+CfIu+q*S_}mK z&!Sjw#D`8;M6qwsY>8soD=%u(MDgR~0|7zKjdRH8V7ux=5e_;CW3RGCC^+)vQ9 zv)>?!W#WV=rhx+lJZ919V@EHFrHNlOFqY|FS!}9TDT*mZ0?Jhs+s^MW3P_%^rePV> znH5#xc{yg?lNIy*DAj?xDvFs@cSRICLl}kP$V7!GcFC_OHy5Iqj?i8dx3DdCVnYvcBzCG?yk!!S_$eo}$g7wnaj=-kW0J(;pOC~)ASuef zoCa!FWiN@H`Szlbu}*cvZ{L7Tx|AOED`l~Q1lcT()QeFV?+(@xk#ixRSP{ zvEyh>8l(LvTMiCN;sM@D8pnF61JRjZj#0%ibWcSum$aMl=($nnRk%JG$}jA34N`9KmnE=YxFOk z_0#7jjLxv9v9WmZ@*HP2k{nVLtn&8f{tCuQ~a=E}k0UB!qJ zf7r1LaDxXKgDT>DkA6HwN4=i6!>M~}9Jtlp1^8v34BZ>V-Y>ve&+hkB6iXYu5aBzf ztUWTZpkHNw@WZb&*3 zbDZ)J=1|+2DgW|dPv!H{5Xz}%i9=*=svWkc=h9R34H3co%h~9Zl3G@Pq+c9#W}F|K z;ls(MCD^2VZcA`ZBy(Oul^<+VJ|9{`=<;C+kp!f6(-I7PETMKNEAe&ZPGmaOYp_ec zT!YG0U!EhBdSFO*K;_%s5#-!JId6~+}Xyw7q zhPFY&90$7-o7D$vGjmM55vI%48;Xvee~Q7Oypb$G$_{BavY>R4|Ff~W1qs?eqghW^^GYmk2z%N z$q`LmE#gl9wL4~2fEae=6&^(e15YgvvJ zSoTGLm)bkUCgZLIn}JoPkFqqxXvIfaJ=9%fveBnNjR$j@E$|PdL?68bnfP}Cj?Vy# z#`jc)j82RIY4Mx4Tx-#y()fpobq2#wG*>*aM$V20jjU5k@39H`s5~~2D7QuP zEC~u6k;pEl{~e!H=(xf!iJ}e2UKeC0>*_$d1{SE$u+mXbpcnlYvXx+x0E7Y);PMU= zIjHHdBcTIiG?x3DEQhE>LjPDl^C8NM=sTUM*%c9GNLsroM0bdXMVgVq0K*_Y9brIf zw*l)XU(}lyPbu`pRaZgHh!W=8s5?goiIFL&88KeB*zw)h31e|#if=~rKp*0^)PdhC zjJ4ZR%dINx+Bkru++x--YC2#n0&a)uwv>tQIm~}uu~b5Vd3+$6-Eq%cbEd9vj@kALA0RXNoWbJBH_@|VaW4YbNKW{ z9bc#w9)!S}_=|Bz%^|yN5r_254w^&e8-yG=5dVa<+-GSioieEon{TUN8)p{7V@#_q z&P;JSU6k?AlkSLgf>L)_Q0Pryt~v(JE_P_k1&^z`3;D(Ms%wIoh+MGM)Y2iVB@dmt zTJLClt~#KaF-fRu^&!O`Ti@vqbHs{f<1t5fVR%#mME5jTxrtU)FqSzNS5*i@=T}sS z-9{?44YbZGBtqp*0U@126VNZ+v49^n#?RQA4HXjCNthUjP4A`3$zviTl0)N2SgMe0 zPT%Etti?FTs+5Q`8ddPQpZgHWfCql3hR8}JqK2*AtVANuvni3B?skP7M+!mpfIGNN)1jl`LYK59d#T#kpbQBIai@Q(k(?c zv$9$yJwjMkJ)(i2B_Jv|Q=vy_kK+VG6__=JZ5_%;FhSA=z8CML2nZ=q%b*Qpt>AZS z0~#|F+0#9Cyc~{^Cw0&w^8oE)htptQ>nM%UY+g5gaGV6B2j{x`vqZR1N`2rnIBIxn z=FkVnY@F*F+5~jSlns3l*IR|smmQ@F5ptST4X=hIRLlFsJ^+fVj;@m`QCH(RpEUGb z-mDMI6QK{d6M`w{2v{-Ssz3crFjjhCkgIrAhIdk0;SfAV}%bZs8XJA7O9K}ey?!m6AL!d3Vy~}q@6aL@!T@tEbPex+il=1 z^nnsERtDLZL1C(5>jOS!QpMg=mc%k-7aF!=R)`6}3=t18BY9Z@E6Zoa z$BP&#ozw4%k+vNwr2)l*wIomkMan3@vyJ)vP5Dw|VN zE3rxwcW^Mw!V!Lotdy+~?BUTjJ#{J`2cYr7p+od;#BdLfzUwJ-XdJ)}f>Z3wHUz%y znIfw@Mn!YT79eefY;BW4T98s($X3=EWz;~vva~TiP}Yfu6tj)u_PF4)@@nt1w!;Xm zAfNbPwB+{rIV?Wn3})R@vNpT}Rzp$g7(F{3rDElLuB?I*m6>4){sIMP>r<}K=NeK0eP&Wvq$^bsf;p^N1LAj z(tC=gNs=5ROKWM#qe{1kW8{da-Lwb`5ibHQ%SEUf&&r9XIy`%{$EU*d(U#}B2s(TQ zad?avR%=OPeON@eIn{1jgxEGN!yc*kik;ALab3ir4$#_=Zfh7oJlNL8B0}I&AoegG zY;1!T&>+Ehu#p`XD$#N@%TCSP%Vu1Av4BiUWeE1@%*{qg!vc;`Qy>y0cci3VAspix zZ)=CK#swaOQPeOk@EG)Is~9cEu}|TyRdut&$i%N;sK2s~8kyub*9w{{pS zEzq%(=OY{D1xC~)7N`hbmn3oWWiONn2A^&$Fp;1u(5)9oQU6m?lowK)^*LxXO|2@S zy++&VyuU_a89AryZW?bVlb*`Xx^IfYa@IvLE^!D;cH)_iMomqHoSh(c|F9W3cDz2i zvm;M?Rebc&n4PpTcrfJ1d)dj~hkx*W@SezxhZ8?G2`7GHm3Hn_1w|LdCO<@^CrRRw zrP9n4>KKdb^~@T2I`cD{GTmW{$2-b`TRSHJL=zq`H1On<(FxpmTz%;d-iDH(Su$YD z*IyTGVV5}cbOSbGA!AqSUaT`P3CdB|9CdbALp-@;bfL#+?tJNS{#?-PfpeBBB006J zqkiawbrp`?QyN|Ko$OU}26oV{tj4&v99Jt^MBths9J@EZHO;RsW(4#JxfX_xwX>Q^ zK2Ju|!N>bO8#eoHaUs}(unI=Q8Wp1jaY*slDAP;u02;+cACEoShD0OFgs!sSF|N=z z>wvi*qc*UlYt|9kll^P zgOavz-hifowh%9%&!{czY1y-Btu2nBlh|<57S~c=Puit%$Pk)ab zxkn6v zmscPyjvx(b%0B5&UOtT?p}vy&9yMgXDub^w|Go~gqOoQEW?gn?jh$5zrk45CtY_t? zPcomByUKjB0%d-nw2=9fHf(_nH#z!*5pF2`L%Av|at*S^NnM{qxJ{Y)%Dfx~H3h3q z+%o1GWo_O89+p9!Lv%tcO?sxt+D#H#&rS3_RB-86pFaQa{OwZbOdq5YDV3XT|kMGp<{Jh^>mL1 z-MM!RR{P;CAJLj4WCOct1Yo2X91<6-BO#obhZgM&7| z^P@sj?Ia)9hFT*^hlY;U#92$|Z+0T9_T%s3`rnc5XkNAc4QSbB!W$?ufAk@NiTW~b z)-ux;n(;R0UM!sZN+zmC7zZ95S0-r{2y?R(=CsJwvz)&H%>9CnQ3+fKqox@U78d|p zqY_~utfT3Su=XAQ5@F-yqCW2y^VY`6ZMq-hwqZGWsK{1kVcM-2pNU; zHAQyJF_IzalTwx95&96h(FkKDRTq^yk91roRdtEr*?#O+P)*HHeuXMiL|Nrsr5$7z*@`t@Qrax9$|dyd`(FQCW2eLFkA%rP70g?#bTf`-Ne)+aPnrRgjd|2P;uTszu{n>)U z6rH6sG&FkmA*1NS@8}9)i{stoBU7E%fN1r<+1cxuuwp(5Dy|h{Qoa}}42>AiH(8MPGDM#Va@eZ=wn8W!a<>2#x7H&Ex!lJpC%GcM)%2bjhS9sh)SKLxpH z6QpgB&m3(z0oNT}r)&y!wX|(gBA5We+MRau7LW(Lm^G3V0gi491nd-s+9=||lH46% zJ(PI|JUv|XC-M++#h>W&0bX4ORxTuybbPbWiC3&dp;Xa8Uay{gme{lHhC|W!%*0j*ck& z_bZsOdCsc2iToE!p zn#ao~g^=;lIv!7HLT0h%!cOoxT(6*P2$@JiXTwRzcXdkN-?J#;n#%!c$XAmYa*Dh!|&QpjvrQHJ>{V;;+V zA0EFgV>YkAI*xs&7L#0bLa;`GwI2jfme3CI1?4^te2dGmn7a22OuT``n%b2)byCq|Es9j`C zTsPg%w`(=_xL_T`v0&~E*KHYdnnZ%S%F3Fp9v8(KWsDCJI5m5~=>cwEr72_#cvB)| zqn?f4*195N>#VTW-m;yB0G3a6$(=P25b_zG_EZe-cV>qGRag&UZdC|!j4Fv&$9on*Eh(X90 zs@}oOln=+|C0Za86mqJwghO}fpA=7MekA=1dpcXeb|OJHLu^l9n^DVu*RNKL%gGrs zh!K<#9_@op)ytW-3sTxOrq3|yXh=-&F7No*!!W3CqRY{^jM<%p9TL%J(8l1kqO7@a zahhoo+gyI2-z(;0DjclL55WEbubtX@6t)|1l@43!!Q1iU;KZ+ z`1bPgkKcUza{2iD%`boT@*Nx{|M!22A0y=Y9c<#|w}>8mcY53}zcp|FceoY4{P_Dg zynlCp$KLo4?9cHnazzJFb>S_VKD6|XuK^ST<1p~ff$7>S28Mz9&Vl2>my8OY_uq#K zUJNQArjh@?fte3j3=FICeFN|LoVFFu*7h20;%bFd~CxawDtW9ZwzYmQ;xg@?12l{jRQ z319AsvbusvucY-y3_k`{BpSLR*H)q-k0ow_kr@M70V0MY$*?=;39H&3oF%%}3N9?k zC6YWiMKZ{I_k5TB*4 z%gj*_8(=1obgKtOn!+RSog;;S3A7f6?{_FY6H#vR6? zjTR9lSCwa`IAC>juQ|_b`Lu0RU=~9gr|s3W6fTN=0 z`05FGs~|-w5)&?v}%_-gD%Bk}C;*?0{&GFK|ZkD*s09QqoW(I_*AG8E7^ z=s0tw@)Phm$5*3O>;T_GkD zt`&^rOQNMVQ8*P}O;ggK!=gN80FV_`-27L>6?~s0;7)0Q7~A;Dn#zxeFeI>Q*nvoP zN(@AQOZGf@dqku)o2NHETDy6EVh_u zP7Fj7kmXhr5Ri+P;dK^EO<}WuDTLyFB-z1;k5QSX>hJ(oewldH_ToVruM?1Hc|Y`1I$` z3$&43O5xKdwW@dk?tWvbDB$76jCrTK557S$pp3^~pzLoMW!g2wYN_5XM%j!8vLo@! zJAVlcB8DBqmJJPmT$5R;A1<0f&)qU`Ii^T7P&=8`WB~2Tcd{zW9?ZfJMDo6IB@BBK z$9uh8=#ghPiuRe7b&v(MpdGez+!%-?Y|P)&#smprXQ)K6GrA}?_5|*qKm6s#AO7%> z8bv(UI6(!P zKVyyjJ|@k&`WbMgC76YHKVm?*PEZ#$RhGdxgg|t;h@d_S#mgUFA|oEcqE*R*qhp5u z#B661Jm6CvY;e7=(dm1fC_>7`Bbj=7b4R%Y;W^ara$Yx@0o4$7yy_KWiu3R%4JdI= zxsR<)Jwy@UxYPr`KqBE|^ccmdr=eyAbn}kIg6V$lgtyD*VKXqO^~$&?14&I#(0njH z)0$(|BScz;W>~Tnn}F9+Kp*6ndnUmTFln6tDXjd4NX@6cA*@^K%jG!W8lb;wbyezF z?#212t-%#|xE0UM&E@8;-Z2SNcjP%n`%(5XbH2KPkuPa@0qv>=mb4)gfvKZ4P5Y|j z9Lo7BC2_)Yr2n$fh$q)KYB_sY?SMn^2%7*^^O!*_Xf%$AN6few_DfgPmM72D0J~5P z>mBD29>WeeG9l@JwD?MqQrUrwYOtKT#!(cV?H9W`S)&rI5?9HV`C5#u{0mx*zRq17 ztwb<5?QmbeUq{6a48s$Akw%{+n;gWtW-c+L$LsFRj63_u}+{xB2;mtjaH&|69j~)dA6fSzm#Wg_O z;0Hu(OlmRo*lEDFPyxJ7iWU+T@!8PY-_0kUjKe|u_*Ns4k(G~gogE-RXKeT+AAO}s zw9@Fh&CET=b#^ffo@Y#OacA*W>(bXj2y$o8BPZAIKG1=&h{Zj0M=uwh(%KRIbd}1t zcYQiiDd>Mf;`dnb35GZ)83)$Rb~4r6w3zqthLCwfFUN7*@t(!*gPbQT@XTRFv-DgZ znnCHM=}nYEsARXMUoVLHGPF-msAG-p7&oP0V_fjoj8H|z7N8DHV(d|BWOgVWKAI|5 zxMpjL;@OtH?%_Q`;NqceNADb#0(AQ5@_NFtd+DMdTzdC9nz0W7$su&jh5%jJs6skg)!_?Z34yD6KBYK5vqENl!aE(Ish{F{MjSA=S8blNg zn*Gd&U@d0{g~;S*qZl)9|?Z@y@7Elk@be?4t=^A~b{>OC*>>IJJkb7xQ6-*M?!V&LVRuUNXbS3ay zkL2jGqj+);3!mvba&p)u)3-r!IHx_TEx_FP0VJD3--*wezw@X>`a6(}J<7 zec)}Pmw0AG?|7`c5;nK5Ic{Plv?A-M_WPk5=-BM`g2{SOec5c$^K)xBJ^iwe+rql3 zj*(_+kYWNgKvZu~gOnv&;PZ^OL=9OC+OF<|#*8*Ycx20rws|iv8OVR2C$WzLxBb9n86O27EHpl!5QpPr0o*#tGe{2KS*u~$nE*ud362j zC|+GVs&tVIW3y>HVmDQ*+x%_?k96a7Y!DJU z4xYNDJ`zzAc9i8CyAec0)ALKaAsXtOVJ1<~kbMW)85RdBJYFZvb6qxTxTa@fDlo!bIIBP4o(^rjV;Bb&H`7vnwYPuYe(Ll!JmJIfUbVto9044oby^ zT(mOZbza7H<2F34y2d=BGftozTEiDv@f2}Jmt9~BI>FN;IzuHyjU-)#PxuTmrP81O zi@i6CwKTiV!)}vJu{o+aNTMW)Dh-4rwAiXM-NEiS&Czn?#2rg9WXei)H&2~bMa}B# zTh&yPiW~-zA;*v{T9$3uaqO1lK?)L}A2JBY3xfcGUlQ=efFFW@Kpez?^*{u9$b*68 z8`l2+J)WvMr$`fW9kT15|NLuDYuanCz4qE==}k;4ZUcFF3Wn$>Oh*5?P(V@cMG`}G z3WkMpP(ddR-?PvCD_JB+bn_DeDvUkjU$A}JiYPNQM9kGf>m%@fdCnL9tiEzCSYHK-W5wA~iC1J}V;ciYWBG%7pc9_-JuyFQDK$S#XMs~{-lECyk z1&c&-%LIojB|w-GBA6&aLZ=oY>GX`S$N<-fq+QFwLd=}hN@Qt=E^B9kQvhV>miEk+ z&7NZj25M^2T&Cl}G{6_Ryv4lsrx&tMrXy<$+PMj`o|7H&xkmAX zP=lSh#-@j^7Kb{bnamEZ^lFtS!bu%!xY4%{282SoRecqgP>&I zm~a>^ST&xO)M-9BBbnwAG9L~+C1oBg#qdc1Dp;eh0681)6!6u5FAJ@EONf+1rT|qF z6d){qRz*XxQh)&=mludxrhI~9w7XW24wy#TT$ba=x8V}UbEmQk7PLy&fCep_iMI%>Q~{w&+t`6x(a5V`49wG2 z)@H3}Y;&Z22+*>yOqIDK6wStpW>YH~Hrgth{N@HQaOLZa^qxcJv`sVLSC|aXv@sLR zspMBB_lBkkKyE;k%$e94a0BK{ibNS~C-E9wH-yPlmed79Wc!wsJjy#IMd>OMXUS96 zr0QtHLd*79k+>!}MbYztBH>hs0`vVhZ}z=AR83rmt`_^fE{9*)N-aQKM-;7uy$xdZTAAP0tyt1vM6s1xN@zN9PACsD zZ#bzQ7bKaID)vH^H{pvwGkJh!F!qKD=(xtqz|W~(;OMw|r&}BIXcha;$rRwj-f)+S z*1-}(8<>qxa_JpfOrg-Fxd11hdK3p71o&<-eN)~}H}gdu!ya%_We=#Xi#Ebij@*00 zHcs6JnX)MEwOAtPu=tsaV*ng}w#>8@1$z=)t$>|uAV6u+zQujAxf~5qv zRVd$rR^}j$$Cf;#O0F zP*#DEA~HqivJhei)MD7eb}A<-vRoBQ6Sqso4YGZoW{TVcpAnmLcksmtqbY_C#j{$KI|BYRdM%O?&ujITnayi~uFsF8YfA?1!i zZIWFoMdu}r>^z2yg)Y_PCGUjI`stLiu%X08L|?9zmU1LqDgQw(u`63%I0w&i;Ne=X zG?BpF6~;s5?uxa!m+o4dp|GINR@K1#UL%V+H%_;@F@WqE!n%!li?99aboB4%Ms^C$?(y zE@kLuiAF7WMXp@}ZaG0Gc2Gj4KcVEj+UC-QXHsijvtZ@GDnOMQY2^()AD~Cm@{Q&y zYvm9!yz#8aoC&!%VHG<%f`bg?Ws|y#$(SM4?XXI1cTw5XOYbLvEd615MG2^~<&~v! z8kV9e^RBHN-2l0B=Xffp7*<3%2(B5HB{zoE_x;G1F;VNR_WgKwWjL%jurVET2)kt^ zKgm_HE>@GJHNAJwCO9gkV%WC0K+PCJO--FzARj<2HN&I~Dh&W))zqkdQr0 z>Ie$m;8pb6v+gu(`Yy}&mY-FEYla=M{i}$;Z>b%4BV03Vzl&jWE#D5iq_!^eQ3qoI z=YttTYRAfwyA{Q-91b=yu_9zkfEafGa?hb)VlQT}Cjq!-SS}k(%&3NTSW1vGG4W|F zn^pwUnuBNl4VQ=>LB$_k>>kx{!Db|m{w*_89L8|CwW1abC9 z6PRD`HSCS96PROOoVniyWN-0mg{ahU#o{%RTBRj%I$$!bPKhnLE&WHwemT=#L;td% z7hTzIHVL<8#A!)5d+XM8tu^6j{0kkym^M{MaV>Vl;93EhN+?^bUge3o6wGwp##tQ% z?Cugx*={0I-Um13pMePtl_tlnW~ zr5#?N5j~4Q6^s@Kt%o9DLmyDJWCv>}`JL7xNs%X0ARO^r)|HZ-N4Ulh*ZTBT~MFK0&|^&DeUY=a}{ zWwR>>@jI~*gjyjKxzMkaJArR(!=N7(IwO=pfCF@TzfL~Kj2~jXT5hc>g#q2J7b%rx z8(ZRBgGz@*^fs|4nlj*<J;l+#{1&6of&tb+G#JE0`lp&^!Slpq%Erar(1a$XdO;OO8pWmD;vlBaYmG=$&kS@%q}J*&#n%wB(sB+N)&Y60 zUZu&-YxO8sPF--HdQ`l8s7GRl{jSv`D{XP9`)g(vsRG)UHqXZ_BK-%bN}#>wngm*> z_DUYI0$C+MsP2+QtY23YjRA`!^{Bvzzw@0mhy+oU+ zrMx!kBRf?95OyCPgeEmJxKnqJa&Sf%xSPBXRgM0hKl(^&}gc`eYs6|54P zh=VNz`l1%-{6?t7jdNOywLr&WvuE$v9>wiLAbAq#i&~)NkE{E(PoTBc9Rf{X8#v^m z7U+KDNq(0W4j@;7VsSs^kVWi70aPW>c9l&mq9BoyMZywFfb~ko4mq$0;07#`1X`ZB znaOFf!F5y#G^Pm)blR`(%)p!kc2e}DXCu&BYvloDf}XUWi8Y^r0QV zU4tZMD-#mESY7xGnD#=u4XHZ421WCRydI`Ku7+x9Q1(gEv z-W&2)r*Zlkk4prHsRfMIZQF9S-7qe!ZJWNTkC?K9Y~vahQ3Lq8N);uI zg6(E{D5~vJ=dfg)8oasM{mudyoWRmA+3(_&Efbc5^_FqHZj-H}7q|=@MK5TnyF+NX zt4Yxda<|Vvr|1RyYO2t9APL$r(>9K-*ciADU+}SZf>2&-|F*MkUg-=VI3=%Cf^PMU zs*87VbTDFCJC$mUA*i|_Fo+~`=uI6I;bdKLF=js~!l57NEEF{A&B(9`_f2_*0OT%{ zZ}^7a{+QN2XqjVi_8zUBGfsHmv{IdzN(Xku?^!^FvpP(n4*)X>vXGjM?K34uAxGx% z7NLsibLup@h+Qgb+`?rg=lIkpz})EMvXXdXnj=s14@8J0oZfp*OMS;R1O@HwMF@m< zvKEDm5e)sd`7_-t9x}$4XtjAMDH9=3v~UHPPceTH1b-mgdE5mR7Jemj;ZL$-!d>R5 zCAJ9(AR_a~ijq33Qo@6J%36DPu%19be1(TND7)f&I;Cnngcp024%GIB zqlVYSXhT;OM_&noKh=2RSC5C;wTkJ+p->1_s{FPRmy%b6- z2ZAEJzie}5HH9oiAZ?E=lJh>`Dz?yNn$UlsLDMCz3<99vC5gwfK4G(p$io$9^e%-| zGrEjcfu^ZT!Ra`usoxiNdm4?cPPcDUl3VR~;Cxh6;07dsoeE~AZYm((B4epHopJsu zN$}J~aZm<8M$CfZV!N06w_RvTTg=Xz1<&MVY_jHy+B-OGq~)8dfs#* z8=?2qW6z&%YgS#|I*uco{m7Svjz3LnH$au<$=YF68G;M!3%PmcU@8~+mzE4v+8Z)J zN5Q_30eb{g50>lh&PIDRSx=U+s3$O;)m4I~ICT;}iAXP?Nc)D>R|Z5Pdu z9*|v*<&2S0yE!5l8CAzD8+mHXvW_DWNgI~cQJjKXthq8Hsd8Z~B9D_fmMNypEe*@^ zqUC%L)h^81p_xrXld%xVbkn@SR`64`eqCtkT@FApSJ#_yyZ4h*gbPGY16bE9RxSKH z>O_ZdW_Dj!F&%49E+cl=T$Oc>E5nlA8H=@--MLQN!|o9cx^zrebf;nW2+|aA%kB|_ z8F8s=Pn0METs7>DBz0tF6=~Q#rUr4lve|VIsyO!kmJ#MKXod<}F^pv=Gy^rA$XM2)C8-m@ zGRL=UIJO@Upv0q@Brd8wp|um_WC+gG;@WYjdFL9Ar8eBlu~fNxI5u*rEUi_i?ofYZ zJyAv#1cY+KrsdeBxg_$oM6Xe#$FZxh|5&8qSX)C$0E?5NcS?=~BXELbuJ3$k>oE5P*bL2s^1p!W z4z1EN%gRl@cI5zwW>@D*3A>Jy?4I?1NBOm5d+fUgNtt$NmW zaRfx)>$8b0JOnLQv}-%X_Y+K57i2>)ALSYmO!;O&Fz!?3VuZvjV&RPm3WlvPx{eU2 z8IUGMS%q<)AYsK{|r>&67xL7g2PD@xJ; zb&k^OyE!9C2gW||IBKm1D3COBbNW8f%;N|#CC(?0B0B|7Bgu+CIwlYM zrAf!x=Hv7>Kt{^SWf(W1tO*A>5H{`YT6<42H(Ro|OEcjpgl=J#5>TiLRp&>*>?(nQ zNh<-15==L;H=D&tXGAhAvJufC`RZz!uFFxD6MAVtg2q>1{Td)^ZfU96#swf-w7`ZV zP_ky*x+QeUg2srd5tD{=H|P&VP))Zq1aEX0PXQFOiNC0WQmspeLKg|>o2fBQd)Yfo zokF{;kSUv#cw@l;$!c{JLPtQn%L{KJVT93+I{J(CS|3$rMWm%1j?M8$fGQhbMV`TF zZ0C(JXp0wfwzg{EHbei)X+J!F1RRVllyMnd1@#Vt7G{36{|*+R6%V`&18O9(JJErh z-R!?BBmf&-v|;Li8f}F@L4>++RnQmcdfNY}BIG7e%u{5@X2HkPq8)au^4Tscb7pBT z&5&eXSp%vfS!|$ABvX!+oTDO>1}uAXoo-9j;6*69wE5hf%p^sU)A*SGaT+NT%N8W!BFsvDiD)b^RG zsA#i}TxCg*nm2L{8uoHmgT~p_Fyk4MpiVRzlpCJq_-xN)cxyDMBd$Y(%1d9&848Y` zG$>uEYP!*&Y`Q~Nr5c>kvaDi%Be~6(Wxe{~;lG?ASK*JGSrz~lL|9`9lJ1L~Wmh(% z!P5X7ux!$xWz5%NMb}xYW+4AoGwG7OjvC=`b~M7I8d^0&A%U9Ve9)*F4k%MIstRfb z+&)q>Q9@BUpjzYn>7Orw2OZ7NG+WEunlIanGZQ14MRGAl)IMz%(6CO+Z~`_oGr>d6F!xi39jo<4lN33!^UP9Os~KXh(E%M*%O$8XH4XWG;`xYrJE%;dc`)Ka1kps!H{J~|Ys zL{ODwebuNLxyXz0c^kDEU*;4K^^6IGX6ejLxO$6IN7m!ETcT`eC|=W6+IWg!hB?a? zfU?x9qY z0sw#mZVwFw(1I=2G*nv+75+{v#m9z_tQZ}X?;Ao~OF81F)ljq!G7XgsBFqdU4JCaC zB?f8DnL^l(bv~7mq-737T=dayhedu1Vf$U7?Ix%*?!zi-fR3nx4kgWqttk0WhZ*beK-!?A z@Iam9-7RzsD@$%9({ld#RZoTysEI~Ooh8$7_UgnLc0kYSBhTC8c|+&d3$KoqP&)aj z>0+L3Jo`lts+hx-o&8}CHr_WJf8azVC}^~73bQ2{lV25gwsMpYL5SlfkkPx+f+{Q3 zIoc0ju{V|XdF8n>0Q%l%YyzvZ1g-1Ubi)oc^@^ESo{vWLYN5B{U{Pd5jz=Jb8*C!pvlLpDsvEp1zbnH0Cd6 ziO9&CqSQUWUhH5bkLBVQ)`?BK$@D>_BFCg!*zYpQIpP%gmSk=W8>I!n)J6#WLE$`T zE<(`MHs01$R<&vr$l&ywhY!ZZ1UkJ~Q77hBQHNGKWx7Cy7$D3w(y18`v54UUu7eEw zH}$rI3_DKAn+-DLfw^1=0)OznKn8mSEU<07#gMZ;$5Bi*+C_%e41hA%WURWdQ7|Ke zoKY-~<(HVc)zHW`Y0zj2^h@z!4uwT5tJoU1opaQ)vWlamB4RD8K17-z(5;rlVms%p zD+O?2ew{}JO61MPu01K(G;0A2h;FlDJS2taAX7b>n}uRmvlBX06zC8=jE+`gI$4Ir zDe>l1gLn@$NLBm9T3bWTgLMt&KzjSh#i#)sUUV`J2hB|YAXkH~Kx(kF*w7}zyx7oD zXiHG$%8E#wP#dryX?8Z}(ib{08{#(y=EX`=sFdGAg_|WRH>t99qzx!o6@vEqchCp=>nbE{9dO8POiY-o|^ z+#WL}fqB5OjGv1n9%>3&+Ptk>_8PW|W9%wXan;72*R2=CB$NaECcU)~#)VIV9mNb2!pKM+zI} z2&JWob&Gg|uE>_Wk;v$!&!W2xaZY3p!W zZ^lkMo{XlLOtm{r0g5S6`^m*zh^<^rk_ocDicOm_v>^#s)t*$MO#(o6=`BzBJTj#x z%yqXrFdSLLe@^CL8kr|pj4b-EnKYl}*O5FVqEKr2PRV>hp8Xmix|IOuBftqc)`+-{(U1*M!?s!zt{J-R zE_1DpDt3gpCTbOTA6e3dM706|R5h|VCz1>^#A(+6G4u&=vINr5BgQ2Hv|6f1ER4dx znxUKOF?62G>I}W2x^gTQRNpVD-XuUGifUwW7rU1~kT>l=6#VM^D0l<2tt!3o#I+6V z&>i0Cd8K1E)jnS2AsrIUj!oqtE%?={b~4y?NmKz48UNw}DgaW4mP3nqlaPa<1yQ)K zbss}hV0`9>vY!n@8~7xII3&4)ipZmj#4MRl0{lwdKlvQkZM^0>1D*-xuHrmepLE9* zj1lKd;?3Y;5RkX9lvIy?1+YrFU}bk<=W~r^rvh7TE}3w%T2;brm%@CIh!4dEVLm== z8Xz)GRdcfsBMYK7KH`k4aH+CoujMkLk>Sq6I$+(+HP^CEIwaO9{&^lbtzz$#x<%$+ zU)x$41FDugGgf#8AzigjitIt_NV0>KZNt4*8@j%Hz`bdYhfC4U*ec09t@p329EOsa zmOr(&jO>Ne*eG~~WQNm1*PPN!(57G^nc+OqrQ3tCnVoR8H}I0tC)R^y91j;SG~1xC zhTB&%vv*2+M2AST!7hsc9%&G&*}jrh0Ex6SbU*K zuZ-b3iFA-GY^>{SDFg^Q8v3Zwb#k-Ry3T9Cw1`L9QrC$`Czm3ZgG4}+?Qk)OGuBKp z5ACdq>s!S>=g6}3juxOQ*73ALhnTQ}c%~Xam3cn`HY z;H{(!tA*fM_y{V60e_1X#`xMr8TvcL5%v`ZeKt@S`YH;%7w48q~{95R2wP`hm#^FRz(I z!NK!W2|T)LfgfKpsBZ7%9_<>#PH%XcVCD%vCS1RcXq)U z=1ObgY{+XZEThU^;Kk|YskP%KWGr?jR*#1Hz=+UfBo!T#3Q#)p5LmMthP9EEl<}2`HzNS`2ddMGHk3xml znN0cizAIEp%+|pjvB2bFo(u_m7Z+k-)@G>{!OCitLI(A*WW60~D>)zr5feUHrbIKS zIPY*|YYBP^8BM>|-m(!Wv5`9=eHd;lkV<{RI23y&He1(6;$Q&>Kp6Z4$mC;VUspp& zIqNb)+EfR0pO7{mki(@U8JvUcgTjlp=`3+iWNp6(u)joVZ={eJ3+ECL?qJZo+`8GwZ}5bWU1= zt1o_tgYGDA7Mk9N^77h9=xgLfE5tZU*vl5QHf3;@upX0Wf;Le@XH08T1@8@4j|sZM zV-C2f&y&J*xdg}ejV!|CVkKsb%9LKD(@cf|@~F5AagAg0LSH4Wr*U^!65BPIqb!`n z)a)U~iN2r4;hVWIYA*|u@j!46zG+!wLVr!nHG@xcJ;2o{{aT$xNqH;+cl))L`_kcW zvDVd0N(%!&Uqgji%=}XEjkQ_5^x=6g=bfiWrE5QnZtt7t8&rm_01}c|w?oco78tmd zS(LSDqRU*>P95rtI}m%Az@3QsbO$I~r{%sR)wQ-A2RDo9sJ#GU%bEUFKxy&tg&oK2BbGDuDI5*W{oDf$g<42jSHBDtl?uDO*gx&v20kQzd5T@wizZ? zbk8h9P<3+szXghV!*doOWO}V`FxV{!f zoF}5ql>afNw@u2Em~yemc~(>rDOM6>OIS~yDbI9XHt92)I-7nbqFSBR$HpSB&7Q%_ zQoRCPHF)nW&Vwfh<=xwOvk%fFEre;h;p*6uOOOrawMjvFgmhN5C(6g*IX&N7VwLC0 zoeaGZndzuE`XcLlUUd+?7+f-35?d>vt%L~51tiVFf~`|h6WUMB;Eb{mS*G^s3{I)F zW|6&Kd&|8n98*>|ykp%+b1(1tI-NTWwgy}c;Eqjz4Q1D{F~7E6-qwR(M^vHU27@u!PAU_YDyLZsi9CYSI_l-ir(aA=A#vV#ufsLL978vI>-|{Ch>`Op<)KXd>zL4Wa_4EiRsh3B>x0B@)ZCF7cozGtRhj-xE`OywPrNntIg(T7_T9ct0sI=oJ6}=M zqRrV@IBN_{rTJ*PFI?vxKxuTgX{WC?dHy+@Ft2k-(inbp4(&Dk=*QV(_<7Zq3_tD& zR%-&U;gjJPz9_l`3u(~eSaMEPMqhPf_^qA$Va0`XrOHl23x@>;$otSXkd4YZvZfrX z+KrbUD>{pERl5oMC0ux0z+nI-M4AMWR}4ce=aHBKnZRnGN?mkQri20Ko2=DF1dv3k z0W-r;1uevO3ZSM+Y(f=e2*dA6HmY|X<>i3lv;JGSDkwlmZc?vR$`QM30m8LZDM+k@ zU4?Bz@o4y4da9KU6%%8zhZ2oCjCZL+&oOIck}Xu`g0-(h%j=C=t?XOT@>TXmf>+aYiWj;+KrNmX?Kmag5l9CW8T@GF{rNtkPx`C8PP8%sPJ_;#W zG*Y7Af`-qmO~+DFc4)b1q@-SH)3mLnL^$ck^TCNm#ei&{{4+_(qLC8ezOp#r5mPBu zp|Yivh{uw}A@>=jq)AUJ=S@dSlq`H^uT>rKZhL2sltj!u?czcP9AQiEExV89GRR#) zn9(;AWbH+Wu%S&S)HbcRl9W^wQoihFQ=9m=l%zBI?OdUR13Seq^rb|6?Ytz7l#r1! zDG6hm>y?p|BoHe89DT`+t-p^ksy}5{N2sU?Hr~1c)2?U){u%w9W}=@3{q{? z^0?65ZDm{HGHqCP+miI?b={Wbia}axtCq=yoOd)gt3(mKDs zWiD5n*v;LHJ5z54vM8=qdRF0XFgzI)^LE4ROJ^Xir7cDL~P;S+P=HARsRfNqFU zZ(RS;85nZ4A9(Q~z{>{#UOfo#`s7DWe(~h#tD7%fd;0R~<`#KVFP~Yj{@5Rl-(JL& z`L+*V-FarUo_>ocif5M7FX1wSX?Ivf(22WK^o`ovpo7x2Iz3H@QwH%_ybE!w0O`o3An&Rnfr2igEmEu2U3J# zS``+EP5%6a5;+_~Cs0iLDk*-fL<~rcY}q1?x3;*ql662EE2@$`D9Uk;u1Ot^_Nj(nc>>nx`x(u7weF_m$5k7UVn;$fr?DOL5JVK}!XN$=*j~RY2f~ zih2Tb0!$p+(;*-r{Lh%JpQ8>BDIxvfkxl8K(E=M#EnC_wQ#BE~#xw4PnElC{w_m#Z zbEpQ9FfXDhWtEP^7p@JQ&&9#~(n3g>kKo)F+}~$NNtel!MK!jC7;ziU(9*BBydm4} z>gH$D>7{L0^;5I;%3^r~v`^C=%KwpOz2t$T$3kp&Fv_a};8pEeEqEp1^EYWL6Y6Lp zMhZF0+nk(YK^1%Kwzi!WQ!)u4=i*9z#YR}@K}c|QB4v3)iKq$=qfsNJnKM1)0V)9I zgBXWQb+&%$obixX3DI`tF!SXV%)zMuXs=i51GYdJLPLc5Bf!5X@<8i_Wc-ZR_d|2A_`u zJf_=7%8{&;SnKKzg}$sMhFH}Cq#`G61H2LL?x2TxlR$>fl~gqw(RYA@92f(~eP~V1 zXRaAcUDaYrvg3IzP*u9&vjWz=saJO}_2s}6Kdz2T;I*zuy}H9o?+R!zFp{-4;7X4M za85=A3Z=tfG&O@-2hy7sAl1G>qO2!Kp#<9Ho4|X6ops=tohrrvZdPP})ziST63mt@ z1e%+!g7z8gD_=1n}pK_+nZqSraxdz9?GohNrU|#?VE&`_D#Y|`(}uP(;*H{hd4ML;^1_M zgVP}nPKP)+8{*(>h=a2s4$g)+I2+>NY>0!iAr8)lI5->P;B1J4^C1q-hd4MN;^2IU zgYzK{&WAWSAL8JAh=cPX4$g--xESK#Vu*u_Ar3BvI6z)~8U}Y-slOQF04ZokWrjGo z7~;Tpd-r+(g*|Er)9d)v5Dl1P#-)acz}z>NDs;H!`C7vwM|OZW(*!PH@hjR-xsxb- zM6~^Uhi+k0YZNO|1`mO!ncOxlZB}j{)3z+VsW7rIH{Z+nj zeX?44rH>F0R$bU`tTXqG+BW9DTxI0*PaqP*FGi1+V5PD)7ARg}&@y2C2Mra=jYw~k zqlRAOSY)^?VQ9!k?ne6*kbhumbIAiQ#TJJ)ZVZB>dq!Bjo~FqVHax;6qSkcq9wS-i zc?*c&KO#(!5~VS%g+V^%$ZSJq;94F%XJ}4ZQ_$j9*9CT|956G17^qMz`g}le8^-|@ zrz8r-Du=Aqb4Vz&K<1E`T@@PQz*FJ00+E$KT&wP74Qln-uKl&9?5zEDB(uBrcZM4; zX1yY1eulgyAjiAYD|<(pNgorq$x&G_CyZc&k+z6Pj0A>gl}Q z^vZO*W5*3Pr9e>iGL|xQ>wE;MDjA#(N%`FR=~wy2ECOZmi_pz>{X`Yf{+;FGmr&JA zdB%Sw9`|}4!A%?lx9cEQ6#CjvDuxY`_tcGBdPgl?a${<0kJ2 zYt$h*{d6k2)B__F%+~d?TNz=aYesmQn#_8XE-0JokOi6reTrsHC#D1|-OjTEKHCwN znL}8*o;CXHrEurmVqqbOr?@E~@9?Eu=$G{Hiv0Z!H(vcghtXQu;Y5$DN74{HU)k%f zRE7^ zXXvBMy~P%ZlsA}xON9X!DQO6`&tDuTBnS_W9dWphAUmx3Osty*W?a^HpG}=N2Scp>W<(TqhN# z`-_tFhoKwiL%9DP*eT;_lgQ`1&tL-acdidX$?(}xHf4icgy)#y-K7D0@l<$@wdGyE z3r}&cSomqRYN(5a53*Nm?G>c-YF%vOC08mYg&Ezqvu6jbp+d=*eeqQCn#jg3#RhUK zXSQvX7m^-MbF5GMZgnuabY?p=X-j~hMD5Jx#9Uc`Xsz}r0_(B#ope^3Pf>N_$OL#S zho_+P1P(=1dwKyKD`bXZ<;yd?i3PGY!!joz-o*NtEmUPGayVjpOz1@|2a&ug)Ckp^geqL8?d99GO1$k z97)4}DK2@np<);b#QAsTjPvVHeI)Uo5R`i^tPQse4o_H^m*){{M;KD0T%JdQI=0s? z&y~{eG7!VHJJarm?u;Wl{DY3x!^ivzFE7V4wjc5K#EGAmVGQ^1%!@dTe zkk9Lts^i#&h^P^I@WWT~QFUqrPx&R5znDH*V{I!#uT=!pgosAcKjrgVeFS|LS?CB9@&yFa2eni=etSm(9fpE3Be!t;!>o$Du zY>t()NI!GFn12d&{tRrLLHryYk&H3Bf6_956RYY7t97Gt#yn6h`=aaazc2fO?e4#p zeX)1RL zAE-CXX*XA6)}trw!D?BMgL9jP=L=vwm41~(K$vm&cIRjs&7yBgvuJfp(40}NpX=RaIiz)C314v#); zK6Dr+0%({bn}UcyauGfX3Qgv|KrUsBV03|p(hylSL6f9N@;YZ&AU0cfxPl`)?r`~$ zy6*4@b`)`(vVuzASghYb;yi3p`XmKUw*D`7N2}IJ zuBNp@D6TlyCb`_|^xy>A3!5}XLlY7wrORd237h1RE2+(#?I96Z0_Kali|Z+D604H> z&3%VWqLyLUBsWao3Ad?bN<~=0QD0Fs-0&QBdG;5>MxoNv1h%QeCegY351S-# z_=lh_GbaFFgnKCY9KzXx@zr6I1P+f8dMFA6Fep&_aR?kvB+wuSrjw!ywxvaWGN#&SyAA{bA1B`=oVITQr&RzI%cMA zU=TKmGHJ`8<;1i*(0Mb&LD~uElo{e+5H`ua4RJ6Cn`D_G4hCV9D3hH2ZLgDqzw>5@ zgF)CN+Zp0u5H`s&Lmc2z6wc;#5GKnEaWDv*M43_8q+Sg*!s7Z64WqD0RX9Y%gM>}0 zri31D70eq9dKLJ=bW?cfBP%Oyzcy?#u2v@uYb>{5BHayPVy2q*TL7OXFE5A~h?l}9 z%QJ;AvM}R>k(I1h*rP?*B!K#1lS)*P`<&4Ze9pAe!rV;rVGs?&&$j}c39=hDnIQ&d zKN~8R8*zn9j+%L2CL$vvq9*z3Bfv5Cq-lAy`!WiS!EGlP27)KOK&e;M4-_^@{FeJH z;D)rb%>9}i9T9*)W@y7EW%0{m7FZEBNmCh1`y!|z!WNX90SE*`U5PNgvNWZzN!_ECo4$L( zCN%|co9fLQTx>Kv4sJrebm=mHF!JM_9f>+}e+LanQwPMnFZ#cibcy*(W<&@^BKsvFULWbiU zB9@c9S17ayBow5Hs8A&!k5LBco{z0P%)F_ziSmqSP+$vhi#f`e4%Xl;YqLYSjPk@{ zYc^UQJjxT^YK#kWT6X6|ge~=Q$x41ws2l_Qnr?y3=x4>MEtn*kI}l?Ks~Dt6;k)=y zqE{PmtJ=7`QWTZ&`fi9pQD9I-xucR7jlhTqPwlqK%^!>bYsIRlrOcZJ{SHGGR8%Qy zX5^%ZFve9B8gyUiEP;VC`0T0}Sr84scQzRqD_ZU{?1_;DY%k~(KY#ejL8qVy&B0-e zEPGb(1C4q{#B}#R<_!U-W+3@BRT}utZpT zF#7uk5lGGnB2T8E9&h~;ImgPVS1YV-q;GDbUL#`>q3$ECI znpR@jo8;}YAi*)c8aB_S8MaKk16W4Q!IRSZHz63mIBqH*c2?w zQ7h_n2ZN*;T6kl0T`Ibtm$GAHN7KGW$l|*F1HEF4g**;BQo1R(bo^_#+)_@FotEAe zCKs_=&@H!CUv}VKHJ4V`o2PJ@yd5x(1+MFix7|AJe67QaflAy8o!6OjA%hdO>w}TY zBuiV$!KIOJjhW7Bp0~9}fZ+LhvrAiR#V!Ho``Y!6?j^5e6HN=nRtFe!ILTK@(JxkF zkk=}afxy$~!MFuDlvx#!Eb#E`_Jeg{A(AE;!IH0Y+Pe-5mAl)_3s{3E4+^lB_l7!T zQF{b2*c2emV9~m&@Q>F$<=!}r!5TdLW1TT4Zz*f4ONB423Y;dUlE1WyoYt#^^G<~c zzts*2DoifZPKC*5+Ua3BYu@Q$@|yN43~W@v-RykwoA%nuuu)JCW@NKr$f}aN5E`j~ zr$OG5DEU~K3$>y{a+0jgR;V9aQ{-eYBd5KD4%Z)AGoCYEt-ZBtdh1s1du{Ekl1!A zro$elmKnDdjlkBa&N;A=WlVKkc30h9CJuxk6l<%vtb(Q%^03-UpHhCsF$ls?@s@t} zh#nzK!kL%!oCA5hnmwLe@0{HRM;%}Tg0z*Z9TY@TSNuF#m31~@9|wrj0L6F{n{zn% z`2nxc!x&ZC*TQuk_wMo1i!|EVbsixxgu!T&gD_m@aioElL};N=EW!32X-L=yf-xQC zosG*y_y=#WJgQDL0BI!Uj2*^Wk?4gvYfLDwYH^ytmj-OvJcw1ETR_e9nb*_~+dZu8 zysL5FAn^*z2%RdLViJ6|akUlPWjHUg^_H)e+WH1G80fLc;JN&86$gHmlpkZvPtt2{ z`9-KFd)n_9^p2MO#mNN>iwFhZ~cDNt{Cv?mvYB(D8> zHFC*&<>h1lWr}s!01fE2(USTFam5&8;k(+qXl4|8=oElcC*7Sv%vMRI-gn0zl9sGlN~mT zflt{yo>`v{qT3@lc+|6QC_B_A;)zE^x^e4t#Epw|gVgDO8y6`f(qloxqv?Cf(A8OU zs=cphD->ICam)IK7ixvuSo@Z}T^4Ofc6V9i0UqqKNI7`B(>tP*HzdmiVj%S1)4NrM zyu0m2iM;)tjS}rMbT>+zGsMnf?-fw=HOIRpIXgQWCGuo;H%d6eUb$X-N{L8%wvlzj z(*m@lfqHvNAmjZdt{}m4AKbj7G}wa>z2P%1#uvGK(?pt-nA9y=0C4pRvkNpamj&gP z4Hcg917Bjeg^@JdB`L@cu)Pfp@(TTzX*LB9Lh(Z5m!4AmEI&w2C7T1;FIL03<+8qk zqnJ5_IID!<2Ybtr#=~68?tLtgknB@dT zEuc|3DX$Tc!4~I%$RL7XVD>G&**!nIrf7n8+}RQQE)a~Wu<;bVt5oB5GRy0xv*Ul^rbgs~`~(kV`n|fQkpnjX`|+ zRhL}g^u6rvoBS=A)yJ+OY~7|I@R?_p2>-7^>Ij!O#!8rd9`*-P*s7GW4H@(ajnf|9bQeU{bxad)+5%w~)ZhyPlE|6Bl$NsZ8cwcZYIIpIt~+ zVJ1;PrPPXcoU;z{U`u7mM-WiRAz7kPbFI+Qh@T|cGZa@uv6|%%WP)%8kvsOkc-a3??z~M4Mck_9d)I@9Lppzr6biA;VaEw$fatX!D6w6ws z@W;yO!kH~NXvXuDN3wLepv@^BvQsAfBy<22R7<-ZcRIC&7phZR_?xQkLcNlA>jnay zn8I^(a@wgJN*Y3NQRN2Gt3FCON7XJ>f+zo8lUJE$SWANB^Q$s9tES|C0%zwA0_WXR zdin*Y=fdkE_Xt!6*oH{27+bULmN4i^ZbY$jf!5?>az3b7T32^gL2c4BDtcu#Pd%v9 zCaOKDRB=2liCNcI-UF*<{!0nWiIt1i)CyN2O=2@SLJDWZv(O@Ran zPenMNVkepbgKgZVRv;-;7Ru)Rbg1B#f6&i*_?%H7*_a=y6m38ydRPuQqi~eV5C<;? zSv{X5%)APPESyCSH54<@FhIw166jL$ibK5M*|H#pSB#HK3{6Uyry92u?R4870z-;5 zl+L37Yejid>md?lkwy5s$h3icYYmFSI+Oy8%K#w&hW?9m2>>Db#*<;i}~8H$$Lz{u&*Uc zmy4Zcw~~2s+3v}XLTdmn*TczCdYGfZ@Jb(EYw3hewZc9+s;{M=I@JoB?WkJ&u58SO zN7dR*w!#>lqiXHuUXict7#`@RVxcSXsJ?bHvoICKQMGmxwaB4&3;2sXPRbnT&G*LjYO2xcPku01U7Xu(1byfb07zH0|=rx^5Fak&u zN~PE|$+?CvDJ}WRM=XJtj4||@e2$A3N3uasQ@sq41qrzh%6|gcQ2|y)Wr*|U1{X%f zA&*EMNlK+^V?Lx~0EBq0CWINnNf?zkzDB1mD&^p)4D-P`IWk{=g#E}Cd=4Pz8;(0x zZs=`tG-s!*$k1knQ#xO!mAjB}DI$}%xT%pJ!Xjez_7Y74G39!66Mp*)hZ^9tJ*;yv zp>~7-zD5&S0j+mqUp5<>*VSIG%7v-L_p}Wo5ufuvQ%+ufC7l^kOVTrR?PZl(=2$fm ziQ$wB;24fP5AL)bOLIGN6X6waXtb1u($H#)&|j3I_lQS>3}o{zq|liJR0Fm8tx;ec_K3{7Ye z-o`{nAx3w*cP$`U5AeqgN%Njh-Nr!|%=3AFr0NYoH*(t@2^$ag*4>ek+gcCP-3dQo z-WyIVP64E22E|C!=vIsgFJxyRXjJ7n7ZxR@sN`-(^+aH=Rc%`6I7m^}bEO!m-zr9= zRykJ|C8LZRAGNAI4jm^c%6gP;yE|4OL#@`Q3N4#*|Lz&9Hbit7C2!TzxeaXfFpO7h z6&Z`lv065_(fDAj&RnFUEJds0m944U9V^hFRw))mNi$P4K5A7PSULz(ly!Tqq1!6R zr&eoj(%Ep}z(q%`nwy|C${w4dG2$MEL3p)Vb5qKWwwIeW<|g{~i?N!Updl$;y;dQQ zYPIGjoleJC&B~*(nwzKx<{S!Eo2Am_h7pu#xfP4~9z815oe%HM+E`-=rKItD6M=cV z%lIFkuoq=bC01R6c*DSRm%(X&<}GNf>^|q#;;^(2-3yJz2v6QNy3e7+gsm!;(u;%G zP1l{K#9cRF+jYHl*9|Vyx#*%3gQ$x!ado>Wh9E4um=jF}Wt&cR>=bev6N+0-6Uqg6 zt({QlGytpNyjX!+CmL~#6%Uv-sB`ZLmQa@(wZwSZh|S-6+Bo$IJ8@Ia{c-JzWuV_* z3|sx>O1&s*B@qcy2JG)}h@FCGiozCEi%!2?j7sg&qg52On(*QL(S+r6V>^jhQP?fI zihjE>W$A!>QPfC^!}Fu@YOiv~w`HeI9gn)-F3_p*4$iaNP#cZcY0q}#`J&xO@NZJ} z+eM$)F4Ciwc(#b(ki0bGV7v}#*(v)`jx68&$a~~bb-&%1xR7G4YS*2O=11-N1gBQh zMZ3muNJLluzyTU>%~x@Pn`xKO=TWAwNssGZr8+7 z#37+jIKBRA!vYk*(aRE1>G}*Kc|ag%tJ~=k`y9(Wr$a6`Lw4H@MTh%ss&>s&(fp|0 zu#lm-3j)P)mryv}c0zan9R~oV}rNy6xf}`4PuW%XTAIStKeRjMpbocMAJ2+O^1s!s)gfiVg=>t9GN% zUcT~K)|~>ei*`NIP&nOoL(w5qVAXCA$IXw%8+=9gS<$XJDilt)UC>W>uKDUBguu;@ z+6}&%jC3mv&nNzuO0ejX`6f<_aq2DJhRFNRJTXVTLLhZMicK*~5$CTWVX;90!b&c~ zxHn2pKN)2U=7?zg4&=I{{0^L_JR*0QTS`czf`2LVDanyj|V+e7w@n8jp$z`6hQk}HW4riQl zYdzH&^WcGFrw!Bgla|%t{oEU}a$rAc^R)e>MRa&S_lBz+*w4MeDhJlt4OKagMEyV& z8n%a{6GsDb8ri7g((;%(Y1_|qcb(kPJ*Li5j$9{qE03v@ax{#)&>HnofQpwB5q{E5 ztZLU(gs^l1RG2Qc@uNCGg#=87d8o!m0V>?;rb{jJdeaF+e|)xi0lJhhk(aREU)I`` zhjFkz!dj<{SUJ@}0j-+mKo~6oSpqGhM48g;R2PMPy<=P$p}Fh)C|`#PSZ~$NOs42=pV|K+E0pX;I1BVAawkn!syl@;U~FD|x-W z1j7SyWzfiJoN~^#uN@*Wx1@!-hvVbJ1Yi%c0qC?%FK%Y74l5j@U=(e5wsA9&CftRv z3^oo@goXnaj8opAOYxoKW*j>qHer_VyxT$!>!t$%I4GkL0tXoiyfHdAR0Pftp;v?e z4)R8T6{J)_*YSJRGdWevBtl%#Z^tO8i)50js0l7*wqft{uoNjlGDFr4@2*CmQZ^(X z{PNqnh}w?yM|lwmsc#)?(d~UgR|{pCMaK9b72l(4+3&GyI3cJLdqWUbHV0GK2W@vV zJCWBXv_dYx*f|D-GVU{WB5=Gf8^{P2D*GWhBN%6Zf>7RnvkY)EMa(%%pnAhiMlfIX zN}XYNP#Vx)%FDuUXa7#Ih}om2Mo_?D^{Z%QtEEZ^o}(< zCeS8z4FrU_neVoKc!yRwgCNOhAStyft&(DNAm|SqXyfoX?M*eUf~VDL?d_G?P8%Pi zprXBjHl8f{t&;sX)_M;if?cF9m1Uqe*1dr?o>ls-0+DQW6lr5T55~Gb&?cgMD3}d~ zF&MR4?;k|4i!|(LtiDie6lmk=p+8or9JN|=Q$*TGl?_|n8)y@EO?Jl$ZKhUhZi-+R z3D&UHy@58KA^Ky5MpmmeH$|k4=Bi<)(|n;D97EV}5R0nsbwv~CwYXIejJmZo=FWdTpK zD3hn;`0*B$_h8N;t=XN?75!dFGDm;Q+gaK{ychuTF zLTys>Jq^QvZM9p+L`1NQ@HK2VLLz8=ijmTItqwg8_vMcEj@qqbA|lvD3^!~yLLw+X zMY}F#?jE!olh!cShCDuOcYmmjBi0A)g26T3DI_9r6~QjX7{gXN^u0%@jYVS6E-Gfb zqgWfs-Dte`2(__54BCyUYZPnaNn|wM{h>Ay>C>G>7@@E6)_fJgE}lk4?d}h?v3eei z7lNX82eCGuNJi}jUxE6C!ck|fx4Q}_mXZLg6pj}*N#UIJ_UakL&kiFEP^oY{{e-2; z@SYAs-Ye8blT05`)Z%KlwrNtVjRkPfu7ih1p*9ie(`5`DALe*#t0sb7Lg5VB-5+Y> z31=|gP;{eM8{4ZRJns*+iAbORctg>RVr@d<4908AW)x}@332=FhN2tA+JwUCw|kFJ zn~3!3w;PIX6l)U-XV7l&6@wx22_;y@#3|qan0ciQ)znrlv52Pv# zlMTIv8=?$Rft^hIVm8Zok`MM%>69S1AF(l1N80$HCsiTau6pdy$8bx~5S%^L{*f8b zFpkCbB6IAijwj9Iptp8ktj#Eu%;%3!B{QyK7;p37y@{&ws07$NAkx8AC!4z8+=zB#z6HvZ<|s@e#ggRAPq;2d68&hJov$MAb64(ITG zwBW>a+6*;ZNV^Fv^8s~6iV$PkXpjgSJc$|Z4Eh7n1tueD5 zTx%IikZPrsb_`x=?X(!64R%bed*gBr#=zdloP%rK8=G@*t$U+$4z9HqpL4JLH21U- z`Vl(EGFCT6hfblR7)wXEXMVL=%IJ&ZYAt0eYCTp6aGwxt&QXRG8Q6~^b-WBYDwRyn zKOCuKKtlSdY1fCsj7Xg(gNc`Se2X>UzJxH^_AF|IVm~;|OgI%Da+(=VH5>*NX1)*W z6u2HF&)8H9bhi+T>{^#WsozQ5HYpG%> zb#_4VnI;R6S;!G7{p2&@(`y2A>>FpvCix7;;CLE_?8I6Ry=?<;#5glb>%D!D!gm7H zfj30#IQh(3C;1G=IbAf8k=Uaq5yxCpPZ#YYUPBNLQCMlsebUcj5xcK@@nBEUvmrcn&bv)VKT<_J_maXUMPdD&Yb!sqhbVss8zU?>balWYRAp}Qs`NO-p6;d z^w_o7iKH-C(vUZ^i{Dachu!Agj1a&ZRdbUR2EV60+0*2cGa0?Z@0c^?U1)+}BzV0X zHRAGPVpZ%7><)x@=Rj(Asgo`}N(wVy(XcmGMOveuJOraGU(z)PfBupa_2|d700A6@m^@17k_+HH zVoYM~<0WIM=#(iRcpinAL^hd$-S;S+3(Rh;Rc!?6Uq(siY9aEt9F)!_>@ir4G-s=b z4Yw(8(<$7(a37Sh*k^e<7aF^r5EEKY$9W9uAQMOS(S(MfTX)%=mDJNB%gspr$SnYj zql}d~%hS2gKX#80lm2n<@y<_u!S*2cz_@~8c*%qIWEfm>U`1_c$$=H++w3r}u^W0| zMQvEgffcnuB?ng2hLjvwQ5#TlU`1^>$$=HM!6XM()Cnayw5B$Y5v!i+FS#aKH8l_Us3X&~tD&%XdRXcpmv!M_M~&+Vxn=RMm`r%FgbW1MTy{s z6K+L19;8aC;KT2Dj~$VG$CL&5j?U^i=;I912DInDV8w%_V*U#>2X`c@J!W~&n63m3 zVR2Ljjhv73zn}yti4tZ0m-7SizdU%D31brIKW)NHeBO+&xn+id?FpWs` z;x^%LDB@6D6F3#a&1f2TDBvy8Q1(C=GB+@=AS*Rxd1(vD=RsLQzsV(esfp?+mi0R> z_R(94a9%`MV0C4Y$a&(o7-|;868GbP990oHjJ?rTDT---FNV_zVj&1*HS4u^ygX9U zHt)4aKwMLy6iD@6t%*V1Qb$LaCt?$?QZqv8zML#>mQp*(9`;o;X^6u^_C=LxSI(Vw zB^!nF5J#dPFhCv4!Y!I(Oo=9v#jIm8l^I#=@^@F5!9DAxH-rtqFuvlQ6tf}rW@G^z zimKL_QXeojrlF&6E9-1}KFY}Q%8R*QeEldROC&{kl#xYClpR-6uuDc^F47Of+$i5f z8Cj%!@{BA{v9N?Nk(avwn8-O%7K%&O#;kgacS3+CKxPgpLq&L1G44ZDdB;~wCu+R_ zbfh3Bf~IT)n6iQhV`Q{SJwrvh6->QJWk$uC)FRzVQ@1xAqF;vO+*pL!II2fxfF~+m zLDaUdX@an5KcCxVhH++}XTLg^ic@7oY6DnRP2~|@1SF=x#e9&GnRw;)D3{9HK8!1e zEU2e-&I{8q-9Q3@bi&c@73U%r>8CcJi9`kQD3?m8LJI7oTq+K(yhohNH#(P!x1Ft& z8F11l9OqIYSfy|tXLiODD~4zi9M<#2hFOGSZ%|EA?qk%406K^JwtradOk z#ReJwrL9`Uxyafy#2LH~uyD)x5LmeAN@kXIbE%-`$G8*fFqc*MlVs@DJ@#3qa41kO zXMSMWm#c8)mbp~U^IR%)!0iuoSuBD6pTBkc&edmbeCE|#x1PiQcRzXk#{K;Nx$Uhi z>;)$FjZYt0T_*_UAy%7*4M0sjtll;;1P=!Zc|gHK>}?Y~^Kg3Ggwi~mYMa2Chf{46 zX7g~WZGvtdPPKUm&O_vcA|U5s*86pmvm)oq!|dr4x#%&U$C_w8kYJYV07R;EG+c{ z!sx1dSS^&{VZlqh#^Ry1P(^m7Ca}(acukZdmzsE(GPmdo9eq#_ZxmgrqhI~uHPIJ4 zEHxiq6J5Dul-0v)qAPgJ*YWV0C?zlEp@+(|l)Paqo4n5}Zurb=Xiicez8z6C`R`m? zPtiE}3%U>ze6cA6RAE0$YjV|!y{+Vccxk#y$v}d%|Dg=Qy12m_^wl;&~v6 zTq&p;V?!WcaqF5&C?E77#LwP`tvcH{eVyi&TX>bzS1yZflw~^C#s@0yWYiW&!cJX% z;nvf;yI)`u6(9CQ`X1n6rvZ=pX2&7jLxq1x(KK7ev9STPUc7ZSrfndr+c~l|i&C!G z_0PO=8(TkN(Q&fb-uT2%rHPpjw|Y(_#0PE1ws8_qtv^MCk$;5h({)0(Htm4=KYFsg^|`07KqC!# zr=Zsz-(E*+>gQ7J$TnzzKN$V!8O#$2RNrdieUsp*?47r*bel3GUw&RHs<9>^`S5R1WzbS~Q z7w_-c@8|+bJV3w6o~R#TU~uK$y8ZMEmzP(syq3tqb(J`Lw<5%6Ub)i)5S>>{RZ$A8 zm@}0JNhuzgJd1^QrZ|19gZ33ZwOeymsj3&!+z9VIs;d|3q{7_${_vFbXSb$`8vuZM zz(PAbp)QIu&~8v%U>slFeNJRMSAxnCPlTC%c6;gbnDEMiAn!nHs!>_t&?pPknM$6ZmGf1KRp} zz^X%mdj0V#P|9?zyKGrf4GKFQRABZX-wgmHPhyO^1#yJJiFX^yMg2aA$}w&*#Dtfb zver||J+o69ncapgP}eha$cFq`zxEI{jtxUAkk~B~FRMJo816Pys8w;rx9rSb8=|3p zFO?a+!zk+NHJ!Q=9uKbLwn+urAACjYE++8><^B3D@d93ACSDb(6)$d(?k`@w@bs&< zZ(Vy^#IIt02JrN-IAP~2?Ke_tMWk==d zW`!Mx){_X`f3Uj%X9%TfHWW3teA&~_iAfT)C7=(@5h}`KAUxtvWokHi`K4vA|KiXK zP_zP1zz7qkgc+x@J@S+_EWIZ>n>l zyqhJPD)KF3(;f>clM)#$=O9Hk@3wqLh5GU9A6Xvfr7zz%e)pCw(Y;o$njxkLk2?m8(Tcg_jFS1G2B&122Am!3nEx z6uP2|U@{z_wd`~;L=qHAq%UyJ>LgqzG1)3Rg^VEoxnwB}K0DCQCmU?nJ z!!_qqX7$vQ=rY*7Op<$XL&a<5iQ>bT+@e@YeBll??d)IH*a+(G^!s8zmh8gfc9^S0m`(X_)g2#%+>>M zln2))-cZKoa6!mzc_|fSCLvi+v^=B)B?`u9d6mj&)}c&4(<7*tZCv(t-$w6C9coi~ zOS}I*@aPrWHVUDueI2SOR7_^Dr3N}wM+SF1R@UvROfiO9<*XSKAs2-`{g|@_S9m=b z*$SaUz1Z4%F^IITRby5?#>+i*s23DluYI;-ym$)Ix~H#06|uED1HF5A(K)^yj{sD1 zqpNsf4{0XEs-wngpV<}s7Dd8xKpE=~t>p@V)y+d|h~Hns(?W5?9Nm-itT!SGRNs9tQw zY{~Wmxv+I|K9CDb%{g#U(O;)D(OXIJ$39h>7Z!z2rPZnaHY;CSN3(&~V?Q$|Eu);1 zY;bS+@;)$SGH;{MaO$=dg1Mf-S1Xf=KvAeY`ZhdzgI20{@p-i-a^Lq8SBF}5 z=arh!fg-FM?r(a~X#hZ5w~UEv-OAjSBQcQl5tH3X+KW2!UxSSEn-%3g= zCo81LrUoJV zx7Wj8co7ClMw@rLX{#z`OS_!0Yj$5!uDvuYk8Pok=R;$fTLc3}FiFlZ*zQ2YXe2|W z5AEL9KGpRt^x;MJ`RIM=L(dtrsn%^?d`OLu>kE6Ou>p2pnDTxBR&StL|p(=m;$*CSB%dyV-(~bzW9bk)mckAW5uUu_!USW$iEwb)N&0I<;;%Kxy?40~+@1)SAp1g|9 z^|(dK88NmXwN!1irp4(M-$7`|z;o^qAL2DYC?|9vUDUEA=Uj1-$WleF42cn5DYp*Q zy8DeJ-7LaYGxw&632vB1ctB`Sd2KO#9F`ykZoJ4H>>fp>G+|BPb++p|)q+O2#m&H* zisEn?i{#-SCK|y2a64<8zU~bMk@e;UR988MBtR&hDrJW>W{2Q#5*K=z!$x$RFQxG% z1%Z3gvGJa8rphXlw7NE6FHh`Zl%p{;pST6IXIQOsyRax}HAm-Ar((unyUog+OhSba zOd`E|rJ;~)szjLPRVunjEK#d^iAHBqzJN-nX?IE6uH_uJfu3RHIp?GcTBudgC`QuZ z9K2N2!{#XlL*?3daXnGlY8m4zYBytQTW?r9#-iHKI<;$tl|+z}pat?J^y0de+uR9g z%%XX|Ptp-%OUa)nhK7y&zjX~6}9N&0yEIJ zVCYVPzbP^TK#&&TuTuet7Z~bPV8n;CC`&bcacOwrQd&&yU^?uGwW5;A0OwDsi4qN_ z!opkHh~hvmyJ!Fg0}&uZXB;3$AY#b?nGz9!`)wlGa)dG2*|bL!}kzC=3j( z7|B{-$R-6^waE1`1X2ZtIu%%45{5vdLYl&2SWNAJ+dHh1Lgc_IYNEhU%-0K>1?Vdb zgFc3UU1LarXE};!i(XMPegrs@&Yhj&j#1>x(6F@wllab*A+8#$=LYEn8JyP9_0onZ zxIM*VPPVFtT#!4jX#c9Gp`#6$?v`O7#^ zOZOl;LI#itkUHYKb;v+?o0s#=Ir0Ir9H*nyOYloES>(mEYXXypJcU2NUQrZ7n~T0! zwx}%|CX$(oW{Aha6X#D}cJjpue^Hu>XnyY{(c~~)e0$SPWkr>hWA1dfm${J zx(uHJ*pP?65|>#01-CPPt>E@pBPO>A&cpP%Jp}543X6!FG;1vK7K%oMGT<_@!|E67 zr#_O@BG)nn(bDN@=95XOphTt?y8K{Gdep(Xc z+{`&Zrg1WM5_dtKhAiT|VcK11;qI)!l`2)%h9R2;{bNIzMSD_R1Tc+8X#-)WEk35mu-`S$hsMSI&D zpMUw*?Y35wVG;GH9gYTtkqhLf0evN5Fw3zp|QHF{N3PDnj+QuVw1`h0~10)w( zXUV|E4Jrcjf@Tdit(~Ye*kE_G;5qj7oD+jIe?HXcoK;x06iTB+N!P!JDYYwt(+`yN zVh9$zc-?0^E|Szkie8T%;yeIpjQ#_{W>d}7Q%^MrA=`s&%^zDj;mV#8l|YkU_mJ(4 z*T7g8*Icz}Bs`B+aC z-5)~e!E^e=njx6oymG|Cu}=i2Rm93}&k#sW41qeV7=ouM?O66X-s`#0GkuQN=|z%~ z^4$!(CLa4*`l6AxTPn_=RCtH_f{97vHiPs;=M0vcw{X>njTU_l&T$3tLH?9UzF zkB7jbi%pi#BaF^xmTl^e#l@7RBRMFZ$uoS!V*QylGl6(}=<*`s4o87TfZ&6Nraz(|s;vS+NErk&>0k7=>5|=t=yKH~t@EMwrbj`86&H=Y z9#JB9$%&+ardKqT8mk~5G$=sjV#5(ph`k-Et%xFJk*EUgT%f_zg7<0>0oFl0Y84tN%sn*N zlZbldz6;E!7zR4`z@te~1q0d{ymeGgANiV;iG9wo-Da&q(BmBcc1tQ@1l#pw)eFoG zu>l|Uh~N!xc{K}cN$n$D1V%Mrn&f_6Q3G}REkn5r?i=Q9E|q6<;cTIg=Fo8!hsn6xfz!TVaW) zn1M$TjS_1_S1T_mQf5et@K!=lD_TSZiWONEeiG9u5VIHC4m=?~bGb<8%A)4b=qWbP zTP0xIJ^U3)V8sSR_y~T=y|KsDlsjdQs|l9R z?9V*1s+`M@tSV>oBdf~!{K%?uMnAHuoYRl2Drfa0t9p364nyyu@zulQc32H_uZ~ky zu;%8fjzjx$nfdak+}w*cH+SpaKkp>rR<`cKm5-6a$<3@V@H`%@2)izQn&U^*$@MkN zq0+ODHOnz|b~F8Qd3{7byRKXsj80d{CE_vYthOv%>5=SNZCtp{BiVCN%25pd*p8NhX6d`#}e5>bIy)7xy4`=`69iEId8|wcj9hVFX;GUH~Dk1_Z88{@|<`RfliJJ2Hb#%Z2Ca1Z}pc%Q*7>QZ*alO?0zJLuX=JOrARVpstjg;FT+1<-$X!?1<{U zL|5zf+*kdpVE4QrJ;W{zKON4d7Dr-NiyK69ecH->M3Z!g^L+e##8z~p=NPYeURL%j zJ4jkyvfw2Migt?QRcHs^$?7;he&kpjaz_Y6+(9RM^Do7kqgw1V-hS;agiG$Pz`odo zE>1eXOVat?Z|4j*HtFG_kFvYjO$5=829Rcp$(stSu-apaJ&thRGffbB9=l%AbtZ73 z_e~nS9XcwUhtABFZR6qx;u^5|{v)09z{wZxmL9?I=X>){+Z7EqIm59_oKiDvD%T7m z=_BNRqDc2hvGq@{TcF8kvz1#nXjfF5DdGB-?=qq-n#grE3IHe9z)vi?LdEsch6BT3S=2;D42;vR8wP%S>r$U01Y0o0>l)FxS zH_$^7GQe)Poe~jvGNA61@HK@Spm1lSWf>bSd)l^KqVi(Mo*S``G9EIzMDAVDOdE|X z_Two{IYML8Jl--mywmsC!QO*6PtkK0j^qr{Z0Jo4NLPxNCMvW^`#qk?q1=ZJA&W3y?cd^w{E}0SpE7pW~;1!<1}0UMysR#jq_gp8%~rrzp=Ab zSD1LK{*7m9D=?ndtbST>6!mW$Mg1E`QUAtK)W2~Q^=}+S{aa@gi{3DlCcZArfz&lB z3r_{O?2KgD8OgFU5~Vi5F^tE5?1_{A63u-G|2_T#Pn`TG_{-1Z@6EoyC;JW~r|*FOM|i&>4B+{lAHq-H0Y7~Q{6EC|)PH{Ghw#&Pz)#-+{}1p!;gH|?A^h|m z@Y8p|{|?@N7h%vJe&>hq(|5p6-vR&Ic>nJc2Jk;eV0;KaeFyyX9WaFFhcMH3z)as! z=WpTt(}V#$zw<-*={w-3?|^?D?^B=oogc!#u5b7b_~|>~|2}@dhW}VUzw<-*={w-3 z?|}b%cz=yBfaiC92tR!X{PZ30{{`M(BMjjAogcza-vK{;2mIf~`wtNY@chmX;ivC_ zpS}bBKgauPgaJIi^F#RQJK(49fd4yqe~mDJ=XZVxKYa)M^d0bj8}F|X2JrmO58f2mJIMFofraFw=LyOy5!GU&s5zKhFr-@Y8p| zPv21|;rU^m(|5p3-%;nU@q8-P|58xi$(|o4CuPrXru1abZ#sFhcz*2UiQ*Y3*7KXc`~N$6eDOG;Pagl^ zJ5Rm@;=B&f>u)yZ7g;J+u|)#uyABYa8Dzx*cS>ubQr zHQ?(@n6i3uzIuc&;p^GpuV;a)H}K!H1OD1P!k6&%m5RT$PtO-SFQV-|N19 z?Y-zLzwhbmC)L;AM_+$`>g#u${5J(&zy0Km;`!U?naXUk_n*98Jim{t^6dS4W%JB) z;d?5Z=gG?E`PRzjdADrNx%|5-n^TrR*4{fRo6~dkT>hJTu3n1|pL@^A$tCFbES3vT zLIFJcAA%3@-xpszIr-|J$A4F_-~TJn`oG5ae@S{{r2-kf4x98VeBMLzKku=<}Z zc=TVdeRf?me;zuQ%a1QXhF^!y`O*)8=06M?g9p9>9(euV1%3Y%e*d)T{UmhNbNKIz zeBMKE6oX#>1IYLvOfvqxC;tNDpLOMjPX2lE{5>aMEuKGk^1l_&-+l7Wis$b-`3jzA z8T-zYe^NYu;N;82^LL#5e(`J_Gnap)V?g)}pAXj$;Pt?BF{gpj*hAdULts1b&~Ji= zeskiX_t9IJ@sRcW%u|o_{1XKYfkHjkzL+G(PkuLO(DB3kY2p55;Qr+a_nrf1T>s&k z17|2}1aPvXn=7SS%Y#YzGd2?ka+GjSuzdxVZlhlYOuR}+_j(PU0 zm}f_Rvp@3)$%=)6c3;=isOFiJ#tfvPQv~U%YOapWjOFeD>Zx$@%?TPJXa>Z(TmWe^@@3)(_uP ztsg#EtslHznC1S_df_?XbH>Lvw@)J03rp}N{0y{LpXGmi-m~s}S$z6~klP=e%62)z0s~F?+R$MSxy> z7V}PT9Gvr?f9zK=j$fU|;XTEvl<#VtNdw9MhJbw{* z{$hsb|G2>Gd*rvA@%rS+-Qs<_cMb{3bnGAAHQlpC?7>%o%S-AH_^ls*%R5g_;BUvH z{@bTdJ|`MHn)mW~*Xgac{a^?T*^HN&wl<9&mzX_4d}Vq)_KIU-`qTlSq(PD zYnba^o94Pla~Y5V9xi>iPjc5oeu3vOfj#+N=!TBp<%`1S`n^6fwN{rCn8k)J2x@00QO1M&A- z{Qcqhdp-W1>o2+=e_j5u6PJJN#N{75arwtiT>h~Wmw)WU<jb@?|%`8P%R zH%0k3Mfo>Hd35~!KZ<|gT7f};&s+8H3AVjXegOY{8GbE(&ha0gFVP@Be9u?U$1~px zG<(mgzJ>wv!}omV8k--M|9<>;8P9yr=jVZcep3C<#dE6vEAOA*v%WXtd8+>{^ZRS~ z`o(zWdp<)W>XYh!J)Tqj*W;P*S^u?oPW6BFJN*OSe;@w)QatlLpRa?5_~Cov<61nY z`cr@Tp7p<8_5aIN|1TeM|KEuIvVDXooID@T>>r=+)&I*1|Ib(be?9nx^)n9oxp-#% ze5TFG58v}u&L4c{e9sTx6F(>M%<_Ex(a-ZoSHp8a-}4K4RJFf{uYc@ve*Rs2y+Nl9 zK5X_MQCrV?|Fvg$Fk?Yi|7B~$LIGv1M&-h ze185r_`3Vl{QS4^^>;ooKmR7aZvO50`ETLtKVQwye-mHd^?~{MZ{X`P=*j;62L5{$ z>oR`${MYf{Ked+7^RMIi-S5CZ`0zbr{r}wC_~hp=;qQMhBKrB)@cbbX86U#`Rs8oH zzu?0^e+B>j)1Wt>e-;1zQ1<*Qc>Y8jgyDPA|F3aS`0)An@ZbNyO7Y<{>HmNJMLzkN z^#9-gQ$6ZE>HpGSn4d}i|Lm9MXVU*){^I;h`oDHHKmRtqe)i@0ne_klpP!#!$Jh7& zNAol3zkX?cCjHNE&d;R(8=skHohx!6!eHRR0rS;KM(p|6hKLPktu-zei7gCjI{z)~@^zp7ejNdj4;#=dZ#x z;D_+!561TJ!)NlxN%lrL;m^U?3w)Y z`x(8+Ki9Ko^3Us;eDnG3)%*XSy|)3b`?~JL{(N|NcmN(A-g^K+d{86^K2V@3k&NVc z<%A?aQkImhV{(<)vDa-((~6=vj*Wf9V*Y~C2%?iLopvnMlcb8fGgVd3PU`7&)Q_~; zel0fPdSx|rwa&*X&bDP(jz@9al!;w8$!3H8e!p|S{tu5IrX0t1@MdK5;@*4ix#ym9 z?m6e4d;gCl_2jROWW8CQ?W#8`#^z7{dtm_ogCFU^@@UeZABl|8MlMk+moPpH0f-|0@K9AODa1 z|L&wr{(m{)f0pm-s;9lnAOB4G_*EA0^W{`uvi=d(T0P}w`?pPjZ3^5u1+LwB*X^F) zeiXRAxjFj4w;$Tu7~hHlllMOOga3Np;1b$tjX$+~eCS{PryGm+>-Uw#&+ohc>7V@F z*3y;h|8Vul%(cZ&{t|zmU3^@>FD_dDKXdK>uf@xce)b=H_CIVco&B*t{H}k#@JH_N zzq#nlms_E;UB69%Z3=8tV4DKl6xgP~HU+*jDKK05r{9?q`!<@@_8NS9EY|iq{q?Pr zI}>oBR^lNa(S>3&7t+mK=+}pYb)Lz_E=0|LZvVC^u$2Oizfd8*+PSsG_FuLskWyef z4w+J8``_CX*rvc8QGjRU+rMoJY*S#H0^jZw*w$s=?kl*B|274_BPp=$uYE@@>-MDn zhEQNze!q)sQ<;L{l4As-o|&E0^1bWrodkj1-AF#zaqkZi-FZT zzd71o-(u)(qw^g~fo;C~4qe!9^fy}DyF!y5*h z*~bU6%cI%Hz5*W}_-QP>^ccJ=N{>+iAk@qQ2RpSF+ zw6A7A=HLOJS|{scp6l|d>wOvK*I4VXWFK_+vi;idFdrKz6W-M`fLH2*SKiG2p2NrB zl}M50hn7W8j5nNp#Pxp#xQfga^-ll=uB z?Jxd&{Xl=iUfJUMm-_lxUt)jM&sR!)*((3w;9V;B?`40k@2h*WXZp&PHv9*BZ2j`e zK!8vF;rej>*k5I=FZs)rFFrL?$xgfR&*O9Lq(ABF$6M>y`e{6^*MQbv<;$2~-j4-z z_@MscQ?*L=Lk`|myr+>545amAYj|J;@byFcu{979_~?iERxUI$w7}yqvwG0Ka-k_w ztGqm#RZ*`eQTRXCM|V_F-(-81+x1c-uQdM>m#PiFz2L8M8T_z5{5t6M%9*U)Dfjb9 z5%Jf{M^GLd;QCnk*=&BbG{~p#MekQfvu7?0CG^F6OKWHidg_Pu?Y}T!dD(bFF1w0X zjq`FNjQ=^#r)3YHaXxcck50wOKi1=ON6^3D_=)|`_o04V^#em(|7TGi8z-x2J;0Au zz*BlJ=Q~&5QR;x9h>ZC0NH*W84DgAX3iS=}8|#eO18!^sdbd139JBg%r=jusHQs2c z-D&dkkzxJEIt^+n`>DU$8^UH^Kw_ z{tJD2YlLs|W#C7`=X`zp2Kq~X{yx_8vh>L?%gg7#YVzAD$N2yr<~K_IYk2K5dYdme2i(^fSheg3_rGq zJT5`!S#20Kfm7+fP|0eh(z$VZQA(Y#$er{p@OATyM0WUo8)2e-{Wl z`m{dTXZs=HVSjI=zls;s9>X7qpW#!N zer5kJp4_q@;%U&$y=Xo-j#a_@n`_XAKaBAk>zLnOl=}v=_n`r`lJujt^Dw^eKOFj( zhqK3hf5Ph@&VDrZ$9&4fSM$Ms|NT$0z@P2U52FkR9KVnDWgDZ}WT;1z+bG}4{%Wt* zw7+}(GUegV13vfTm1^9t!7o!!iu(2#BkHH}n&d}Dn(A%4$PS?Y<8|zZeYLQ^!oHe% z(%s&fL;Z(YKUItSCG9W#9Y5J$uVDXzEu#IL`#ty{{92-YCi{!~7j1)cj{iVE=-*Ok zPx(XtgJ`1tko?-2Dovqm{PisOwK_$9t2+L8=7QTU9DiazuVphE(LPxzZ%SUBzJKQh zN;`kxC*b!s&~JkcxPBr;<^!?;4^nE>><@~2N z@IPq(xxHxLpNT&v@u&9T?9fUD0Ix6Ns~8w^Pj;v?RH1(7f7xTO4KC(nIQm4J`gd+OiXlkM*eZ4!TR4b~IzhTi#3lxY9Lo_rYg=(>R6e_@Z7IzvVe z?dM#t5z|MG-lfjC-Tw;pyHxM@`%;c?zH&g;WBnh*dOW8MctiFs>>stS5gz2b-RW0( zgk`ipiT3ux`Vk*I_@?>#@m5Qlw2ve&(pRM#^;fW0S8G$$hc%}UpSb{j<&XRXf8&`8 z^{B6|V!d-tH}c194*SBFVgEEPh?2IR*TK&h>Sm8{ecN@eKi6wrHVXLRO{-kGb?_qS zJ4gO%+FCY_X4!6xhy6$O*%I{EUg~GCRo0KbwsRF3~kd70uC?EP+jFYt%s|7CRu z{2%A{8<5YG-%Ifxz0M#1Ld!uU$bt0 z&2Gl8ZSXfWfb1R2ztkBqdG-9#>Eh3nf5Cs`*9{6s!mn4f0zLRu@cYd_aP7D9Ys+Zk z$6p=l;@6=T_rsyMUr*6Ll>G;OhP`hL7x@+Ifgj7pujH?w&t~%mNbSnvS7UGKAIGm$ zbt;QrYc;Ho@#}*P+80yYUp4-3>?QvKz`En#!{C=O^B)5Lj={V~edON~?fuBVQeTEI z_M7%fy`ZnV`L&y$slS&B{7ZVc`H6prOr9uz;@?rT@2Q`~zYVm%z8Lwj(ct_=1Mz30 z&VPIUJhW0%dl{*!uQf$fCZj)d)+ABz>E0Qr*eMF@3v*f6t;` zG?cy_G5kHh+y=iclRp!FJ*q9o_;o8k)-$Yk&>!us`m;{^DC*Dp6z#ow(4RK7s6WYX z_(gt1A?3#wNSE>>$jcwsOZ?a{|1s###t<3K=q>%p{)ztF>DJmC2e=`#Lnu}ZKSuuCq91GIr^uf)U#~Al{a9|00Bl2kUg%V# zJ!?PvOp&Yo%|?Hn*T}Z)SgDyu6xe!Cm`qds6<(hf@DV(@*sy_}#6i_OHZ0kbjcw zZ=W-JQ)?OYV}}ZEZ2t}PGyBWe!~f@RY55%NU-ZZRF7^}0pj^sZ1$*{wPwvRB zh`{S=KadYkW4yh9QKo+Ye8B$ePYWN|M+=<>H*EXO)iWD!{e;Ft{Xo7m_D8u2`-SnN zjQY6^|7wNX|Mf-bTlsH^eXDY-MO|w8w^#e5{#q0KI7$TF{>pe>UH0g%;NMt0RrG=U zEp*1~YR^7Ubqk$|agC)i{l7+I0{>?C!u-n?H&lG<#>#I(yp8s*{I@-OvWGtge^(k6 z^!w6Y(PMM-=@W{Vf!?4O3{Ll})IpyaPanlsN}XxwX8fFfSm?A`Xkfobh+kuxvzGe})(j-xU9#Jdlr}!SzM! zL-;MNm*?MBZt=>^zcBx_)M-Zh4DpqPPEGR@zT(GvJd{pOXg&_6DN|E)}UM7fc-#yFkLEB~*_r>9TlqFwBHdUwI3Uj`|irc^~QeU=#k8i^H0`0U0<$u zGp;|@m+`e%3ERcn0)M{>{P)zw-!FuE#$%dhTT`AP|0SFcr2LEi4U-S>59H%bKTmak z{psxUfJgrOL?(U}Nb=t&hDXBuvA*q3*m(qAFBg4FpGekU@@xKs`k%-51%SWNlkz8d za{&glcmz=-=r{XWz4uoqJ^b8JH|W!v__3k-MftPBkM-cUvrlG2FZ>}_^w%}st>TlV zHH=RNV}Go7x4ti&-!3pdC}Ymzi|`i<=d18%5Ff8HUblQ6^z3n-S;_|>jBY&2Z(goa zTqR$?e|{D2=VLB@D0^=g#U=QQm8YQT-i`A3tl}%PYZDV89!GzwlTGYm`=vj|_=wj+ z|Jl#zi}-grJD0*oe4Gf;UV9NB^STT;FYi-%zv9hh7cVZ@r`NEyYuFB+2=a({Yefg1 z{Uy+q^IO@unXNy*}-Bd^wIy3E1>y4F^KY@sVC0= z`~dbpi(igYUu(as#Q3F^ae(jqS(aB=yuKLQmk7XYj`MrA?C;#qXN54<1NhD6IL|HE zKYN_NJ}dimp;O*Nc=}<#I0X7){u{v7;a3tqnk49f{b6s2hXQ^-&Lj2v<9&!{U&{99 zI1dN?K*cOG|GV5BKU!9Yb!T7hlf3PfydA-LW-00uz;CbMyd_!R67=gbfjfC*eDl@& z2ylb)SYm(S%6j(i*m+Jr;e-E+`ryb8#3Ri?7k?ri$M}9&f9SWItAU?~w}SJe0zSp~ z-~!|G*}A$gp51MKaebEk`h0nm@g4-g(Vq4s;`xVG=#N}qtOWiTA1B9(YsDYqW&T@p z6n|7uEVd`cYLE4r&7s8o`Xm0%_^H;L_Ubb7MK0{I?7{ z@dEzBcxqgKoVVh9dn><`$2q?6qd$!EB+|?L4aL8mzk&UM@$V^E3xv&W6Z*T|N%?{C z#9Q;jI)Nwruz{(0ekiUt`+yByXV z^le-iHd=8#a9)J<$MO`{lWVE(`aboClJ&=a zgLvDm*1LrDO!b4-TjM9|oyh-|^5U-5cZUzR@J&-Pv)?@ZwrnH=*&t`GH z6Z*rx;&~fMs~_TpRphsrfq=gp<#|QJ%IpvQQN?+i+Ozy3=-0{0cEWj5{>UuO10?%8 z|HF8oUqirA5B{%S*lGCiZwJ`Fj0180Q2z?`Rms_#v!XZPXQq)+5B<}?d^xn@GtjrQ z@ZU7QaDF(JLB*It0zD7qJRZHWD1Lnh<25+bWj%kuzo3s*KW_A7{Z--T?01Y0`xWyW zHhUdq>@WK}BV&p^8-Fw!7ivy6v7W-OK5X=5|1-o_`6hNgI$GY}sgKHl*s;Ubr!zhv z+2?#-eiraYl@Fv{2kW;V{sikARoDI!^jo%$zbuKq5C2k@o!g6|v+v2zoV)S^sDEL< z!3-?aQ+7lBAoTNWtVetd=CIQrS4T_We~}UxXno%HWGP$HUyR@Pb@tO`A0ysJ`P-_G z&3{PFpXJZo)P91#E9HAKew#uaA3i>70cUSjjAD|x6e2EG-Jd-KqOO*6oROwIUOH|6i zeq;Q2h2|#g5sry?)503vg>@A0vwR7~pT%#MFA@C%)fxRewN&bU=EOq*f{=N+Ue2M=~`182~C_DaayZk_(&&dATzg+v1 zpuhcYk3Z=@@Y^m?UIsS#ofpZ=7rOWr@u%6m*|i@dH_wg8d$KC*?=%-Ywc@OVH<#AIR@n1te|0Yu_;I}t z(7#RO1@;B{SEw&L~L z@81Yb6!vTBzseT<7wCIC`j7rN^q*G2^xuT^8>fKs9qB&_2>2QLiS}Kp{|feK4|#yT zE9k?m`!{zhrw_G%C;HFiL+dU3u}=Rmu}@zVe?@uW`Ow-PDA;w*R{J&hj}DKC&&rf6pLOX7o+&x-bwgr8%4(Cy!MuK&&i{#1TE=t+B2YnkxpG6T>F zf4-^!)t&I?8LVeg(N_f0 zQ(sB*+x~$1LySMQ*2DQS<8Q8o*H9Qw?XTnbrMwRK z_;u@3=dTC)Jw|^$$rryZf4y`oe;w0z`m(3L4t-Wx7kc8)HI&D}PyEYS@ar1aqWJ+ppYzLp&bs3;s3eSFl(A2Kv)Qdy)Fq&d+XUFUo;Q_-jcA#CNhE zcligVe-r)3eCEm~KcO1qO#|8e_y4BtkAGGE^yD|zpSAKKpG`k7f3!c^&wnNU zwB5HI5B~Jlc;jpvv`F}CRt`-M{fPa@>)V*GAj<^+s4xDS{AuVvp-g+GQ+~t#v>7{I z{}uh|LcWdm=c51I9dE+<4QXTXZ?rGO6Tis)~{R=E4S-U{}-@F3;9T0{5upz;{nodhzEFo+V;mA`_qaSI)8eZ%S#;%f4XSz#rWXO;xE@1 z&^^&-XJw!F&}ZMw_#k$j-u^Z#@MHWz{x-s81%JED17Q1sUkd)d^S4!h6My@t=U32k zUuPnocVm6vFHPut(w`rG3_~UDyWcOted&0dtiP6){F5?{h0Kj_(i4iy`TQof1>kr<%hWUP8fd%Kkn=F z^;r*0O82$1+{+-=@76Af$jkkMu%n#|##{++_Hu1i~269}GulLGm3Hb_oFGBYV zfS-R~pvinu_-A;3!t!B0;QV9IcS!@-{?f?py$RiaCqLpmm8gk-abAG@_A1Yh^u7w< z&9Ana*&5>i;XXX$qxk(Hf{ci_R-b}r{tFx6C;ScmNoftU`+1Zp50uZLyK^Djqk7auEOt;ug5UdZ3)dr->v@6VLK&-WL8 z%kl-5By66)Dw*y#upaoe@^U}t?(aJQUWH}Pzu;FS$TGhM@psOrGiUtE`5+O8`8Y>q z@)`VgzF+Udl=)uDW$nG~*7`XqP)5X{SiOLPa)oG&!GSAcJ|2)H=jKQuj9&^&+gp;-dXO?)8ia_ zH{mso0N%7v0rkLtJ9b=rYEL`+hZ_kzz+Z7?!P^thO9XE>1wPwDcxMTZ=j)kB4*gNW z`va5O`~MJ&_Ie-RBbXE|ld>)VC1tEI))(!sjwwEV<=>D)KPvubzRL?*l3&y}nYHc2iJ4D@~4}dwq8xGmnjrmFYIU1 zm3lu0{6C+!@Zg%0ZR-;FUz#N` z9P_PTXSqM#2btT!_iHw@p9DPH@43HgzM=>0jf+oVGe3>_kSN#P{C>!lA#b>EQq9mu z;{!kP17qh}&sWZ1eagy5)%#XgpGAE?FKAl*%cDEkey=aXUV}ZL_w4i@9OUJh3%YJ$ z^Z69VD>t(rF3eZt@%N8sJA*@mfG2wi>vs{dlD?l)z2NS%LVUBwJ`Ve6aFA0|d*&~q zECoS(4El2a+SnlP-zY2N+8K;rY4ZI=%@_2+dL{2a@czk8sS}^yKHK4J`6E2qdsRDI zU|IHD+4KSNp}ofQbBq_;58(kU{?H!st@(f0jZgeKJL_baW^C`=nP=C(H*x%0w_kEju4^i{i_`}15m&Nh%02hAh&;4!8 z$m{a`MZXo_e=qQ{`+sAxe|4mym9SDY{S<<|Fu^<37HzaI?yQRqRFN&l2`CLdmZpSMT(o<~D00DA)PVULhs!~J0Y z9#F8ikgo>Jg1t46_XA*hAGo~_=qLAqC*1<0&z$Z9w^5(m2i_a|W4#z3og#cHNae@E zet~@&&(Ef{;Y#V7JzL?wwFoS)Y-u0sbsxB5_gTEY>e%~n`$BwfPqeqd{|lX2oQk_& zgZ9myS=(^%H;q3z$@*CmMdfKCU}K<+`;NSzeY5+(?c#mlJ>>u&^eS~GBR-I?fqcr- zOY%v3hvVs|`@n{e%FOrZOhu7X z?M%k;fDi0{a1VGZ+y|b*X2$bL*rUDg1JnDm`@rBgyf+rxqg={~O?p4LJXyRStozZ6 zf`Rc1_oGp6<&%?K3f&I|Kfzzo{O~8~%LU{|1o~n!I;BFkkrtlU8>3gRy_yW%dW|0|P(E*A&}_`@fjK_8Z<8M13Ql!Gj0* z@jmcn$U|rHuCTtSuXd*T<9e`ME>oiQQ+@x8*XV?Y`6cVkvc3P7&JXiV)_YRt%?6L_ zos5U|>2V*}`1^+Ufv04@1b;Z?XUG@$ZPMfe{*K)T20H0|V9Qqz_RRL3^3r z5`L@)z4_j%#$y@$hx@>##$_((ubcf1`00Cvw|;*R{_amW`-k$e2DsSYz5Z^m4i?{o zUWIv!{nG1e@EaZocK#&gZKb9Q8KHhH8_Yg}`ctrnS?|tsRS){2zs%9)0|3hTp)6hN z=BN83fG>J|S?#6oqyJiq`V0PX`}vac(F7msbMZeye#?;!v)^D}G@kEMzL@N@YkSL$ z=QBJY2OOOJ-u*r^?k`7pz`t-`n)?m*V$GlP!+gT~iu(W*^%tMQdz3Dk*o^d;`>b|ty7lu8#HX!=xJyVQdxbOT&^sk1+AXfho(0@V!9Z&yeJ~Tkp zyEzH{A^MMNz1;iCus;W@q_^hJ`h2JI^L>Blm;OMX%hZ3H!={g%f7aR;pguDBmpc&{Ar zNDsA-@AHBIW4uG~Kb)=G`lJ2Yu714tYGur?`+j`81NDmjeQy6|eB?QaEajK$Got@fuYn&Tch43(+`FvXZr}u*) z?|3iiF5Zv#{bBFM_f+-1>zHjnf>%QO$-C$usXhBUc+#poE-=Fkr z2p{V&|Hs}-k-bm+-SxcCAM5pa+P_vVP~%sf6)I4-~R~or}5(;`4Q`h z{ssC|UtW;{wf&{h8L5z;OrG{u+xaAK>ScFv{#QpEjlAaU3FEhRJ|+2f^@@kEf7lN? z^%Cs?@$HIMgdY2QfR#gBEp7wOAm}z8`dv{hx>no2l*+$doRjw1Rmt60Po*4zgWZd-}gBD9Xu)Y$lu9+gYN|pp6Bly z!SnonyZCwjz7agn?>+HL=S%qmeg*!<{0jVS`dITfdG6B3ySL8Q^Y@ML^Zb6h^Y#3F zBY2+QZ+E^0{>FR@{Cx-W_56J!{5-$k&V2K`?xOi)`w8uv8J)*SKf`{X&+9v>zqMbB zzp=ez|1$X^e>O(~ze^w2)L!p3qYQgm?xwz{0Q;T#Iq>h7Pi7DQX9)BC8T}oLU*kQZ z0r?mF{(}7DKuGhoZj&{o2fj^&qGBci>-Dg8%g*{J%B4x5)m^-&5J!|LBi+fBYWJb@^}cdopta zIIk)z9=%zm{e*lK=g(w3A4PxoCpwQd{V#uMkoMN*2K*(^m+#}tKaqWZ2KG|9%6M_` zfAYah?KwZdL;k1Y$)SF2xE%Zy&>P=#G5=2X+_N0t`g?z54b~g@$HxyKUw!lk1OId; z`cbs;uZ{M%^IbR~L7Dc~koNvgU zg?%P_9Qx*&3&rn8G}dM`zX9+6bo(!>(=)061pP1_Ud71@u8 zKO_AzPW#mCfBHXsACP54<-jl4U)6s+*q^ZH6Mu&KDcbLELw|cdL;bI^e@*?(f5U!F zf8?CE=goeP{>L-u&-kMoU;Qn9G5&Br&o%k=HzoUot2RpB^ z_xNO=aQ=76{E76p_4D&@cZ~n4(f1N6~+w{h0VKl9#)Z^?|?B8Ji0BCiTI}?&v?E+*lj$@?Un2X5OAdy|+gt zkFXD9uX_6p`8MS5l)hM>$X~c0E&J8mbA;#QP5dr+@SnW>X7CE@1$c?P5gz7Su$9m2;(I46`6aOTEr}ee(SJ-<;f&QufMEt_(&&Usn|APCR z1^s#LB>5@vU+{go3wl01=;L;Nm(E{gZvr3icl2MdUrOKj_?qf>js$*({6W5IjAw~| zAa5Ao9R7fR_xxe67WjL&^kE_|(LXVI?vDCY@tj0nX@7M4FWvAkpCW(nF6!5mzJ!PQ z75KXw9_Cx*@7-~~B7QyQTj1|*cv!z8f8Tn(1^(`ahxr!y`_}U<@OL-7#NTl1am)Gs zSgIdP{>(m6d??u;Nw4u_J^8&o%LjA&2le|d+UMFI5T9;#W`?AnX)l8RV1G^bq27Nl z4*Fm1LwwW8i}cg0CLdC`j=Kmc17WRKiYcN0I|AhGB>YjqXQ_8!(N5p&`@9#jq z;m;^PG1#-r-(1FeazAGM8ji}n{{#B-JsrmL!+5#9PY~L}zoNIO^CAz5(+`#P9zx`3UT#ip8tt&mcc)ZDb_)YnTttpQ1m-_2~>UpCIv{1_tPk z2p;jt8?|+o!}-@>dR_(n3HaXs6TDh_J_h`U)AOowyR&Bx{hQ#Ax$~$YKfioP=RKZ2 zJRhWg7x`mU2R^?46zpr+rxi5P_$|z9*zB5>OUd>PWpbl9s1KB*&ppw`eUn&ec8FR|8Dg+|H$-poIm}k z`RLE6|MWiY$8r2g_1Av$@)_DA({cVk!}&*lR{baTasQ3|$JO8bJK;YO=gD|`={$E{9AGU?4S69>OZ@W@jUehKa@KApFfXk>idx< z?`Pm|jY(eio4n&ZszgI6kLn>`?bUsffAKTohwar_mBo+fkMmBwHxvD}aXq;0%Z*NRAL;G)|Mp5d`d{Sl z)kc%@)eiEN$^-J#*CxheJfGtkKWKc$lh$_a4Do#6(^%U*9^&;DADxK&Li=PU^2>{~ z5AWI;>|e>R$&2_!{!e2(*uw^IH|>=~exv*dUUO&B9ya-v{0QFUc<}dJ{I-bSd?L@B z|J2T`;O`kfN}hqQ=yQ(rg}$=Ii;} z$xAVw(PO@z|3$wZ^Tqxmel&Quo^Qhc^LdZ?dj7uM`4;%Q$9z41-|l=p|KDi7p1*s} z*Y3MS{=@ou{uR8I;%^oY;`ded?=OM>rO(0N&Cc9j>37BZsh`Ky-r`a6=d|6+pSvvi znh-;g|G(PPU+b4Y63(lV?^(O^s_Yx+uYFzTPoPJM=LO3k0E5yfw^v7^y$*V8IbX`{ zzJ%;s)EDvxQHK8|`@QG+6XB=+746gKO9N%npZ*)xQ~7)I8;QU4^`1Ws0vdh?@ZX&B z_4-)6;rUbU{D%q}0l%py`49Za1m~e2`8{m-L&A^r$jkB%e7qRvO#>mH5Bju`kBm^C zR=t0K?>V!q{(ujEMxPSa`4Ifei%$&?1b^=60LuLXAzu*R?`YzF1~Jn4)3rsww|sf= z>t*a8d3iAKFX@Z(BT~TpjWf`Pxb8vx-T6u}f9_fIcjreQ-_B6!W@2zV*u5V{zkQ<`#A^kez{U~~Wsxp=DwC~Y7`s04naKIn) z+v*Ql{JrOS6!Y_3K3&PrH;s?WJ}c(a70z$Cerr=hobQ0^uk#Q1FJ`ZEf1K3!3oTw` z_6S8M+7HF^E#xm1&Y!Sf>;Ap=Ym28&7SFSa@jm!pvAxG1`;o^7`+IU8Mf<>g4j`Oo zO{>56w=|z~zQ6p3X`UZP{6~3QiL%)T$|pSU+fyGJJngrJe^)+T_jz1P<9mOt*LhU& zJTCD+upWq)slWMK-;nbt!MpwQC|fU!?;TNooHPU%-TWUUT#{bU|A=QZUR3mdYETg1 zckvVR@kVE;52Qa3FKpy>m4kfdBg)tF@owHnVE>?>I}N?(Z}-J0PxXGTUp$|h940@- z`q6&cE2@V)AzrEd%=>_)-4Ql*-W`s>>cyd*~~j7rmSFp?yw!3+DyzL7Dcn zomWNw`9kHe8R{1(0d(xqxVhEf8f7Gev$qH{C_*e z7w~+1ALBuOB0Sme#q*?|@Vq^!`6uUBcM9)Z7k=K}yHj|O*SJ2w&)a)<3eVeve!kw` zyHj|Ncj4#ly*q{H?Lm*9xA*Q0Ud*>Mc=3FyC%h#87x{qTZ=F{~e+1_f*gv!$=#O}q z;sfSSQl4<$ROIij^BR55I_P8N$9aARf5YDuzY8ATht_$M=Woa>{XaR#!9Qyz^2zhM zq`&-~H2?01!Snu%%|D*kNM7I{@#pdtd%_F+?cf#pJL0zm9==yzz)$)oo^NS=aK2XL z?=E<^G2g)74!o5O#&e*}N1Liu05Pw#J( zLw?*o)St)q7xMvqk8r?!k5KKQ50)SL6WnQ}KSE&m9l(EhZzFuKaUNyZN9{FSF9$;Q zJ$K%h*L8EZ{~v*UfaeO(G~m020v5PW@t!kV?CXbNjJ>1_&742--SB>L=-<;GAB^>% zL;JP9LF%&#;lp3yd*#8uqy4|u*T?->_KECS9KXPx5dN|sbREj{3GTn+JtONzln?0uSL@X=Yc-Da90e`|{Z+m~_48QNC@3SsHiu_f=A4E=%;A0iP zWcZNd)E@R>_kC;h#|M~kUdjHzpZBd_)eNy-Uo&{PcE+FJO+D%6%fEnsD>z@Z-^cst zZ)X=q^mK#1D1Wq`4dQ!Uz6JRc_{*VLo&`OyKeYLMN03hZ^gBngU+#1HiYNDqAA7wo zlzIF>uc;^HEoIqTfd%BF{+~r z(OBd6r#9C09th;Qy^7Dl?m(IEeW2Xx3^inb^ZUNwx59e6^*t(rn7o&Aq#Kc8i3Hj| z2>M>BvcX2UZ#j$cJwH^Q0<|Fj*>kg|AKdpeL?7}O-zP%-@>#4G=v}=qWc1~xjQi;D zmxqvFJ1YAh^Y6!dSYnv#`$Qk)quKc%^G&hewRwICc;0@W@09vz@9VxQ;IqsX*Z9ES z-@nxPB+F}%H}sGGg1xt^_SoNnFW$cezWkmy=+hX&^}rJ8i~Lm5?-uo~PvbnE_}y>x z?*1Mk)(hN#dVVhz@Ngd6hxMZWAbOt!z3pe~;on28x%2&QdGPZaarKmk=PHDN{@^#P zHxPn6@%zZcAMp#8Q~5sY+e7}^t565D?;X6K!Fv#A(Y#9g=_=n3fqHmftly3OgTLk9 zr+lFQ%E%_!CG9_p@}Tgs*}*&m4g7koY51LAlObd?|JDleg2COp?3>Kpmlq)(sn@1HB< z4^Ce)Uz=N%(c_5VFNgM|*YM_Jp?>T44cjaA&3lsiiM%@0ShesV=&kP^zUuWe=s%H< zs$M$eGRqB>Nkj6(L|z+ae`!VdyPPl6QL4g!2kM)umraBEiF{mT9jXF8+n+=GQ8(X- ze56izis1ks&WH5$>pzjVR4*gh_5T3s8|vSW@y3Loa+cJ;zInXRf2Zn|Vq$M*OKd${{YOw1eO>tpltae~0-ZS)(?Y8bc6ut-B@a^4ti5}D^;6L1-jP{bsFb4pykNXwk8`$4X zz8ki`gMQlYO}=(8emrFK`&s21L!N8wKifomzzhAUzrnv)55z}>f@rT2&R{3~|`pn0(rT;mfj^R68sjEKl*Y88BQU5UZ^`kUUHW4O=J+kG! z|4tPTD3N}MA926VhZIk*Rq8vapS$-9@(=Zk>9-x(K&LAD;7^k0fzFWZH(&PpEz$Q@ zPkZh%=QAvLHlHKeQO5VP^@c8uL!S=dd!eMKeukg!$CkMNVty0&etY8w-S-lJ??gUS zWmz^8>_6hmzS7s%`nJ6Pfcx;4&lLC5LHP&n`|7f9ze@UjRQ3kq{mNfY_TLKaYwxeH z{kcN>vYjtP_+{GLzJ1}o4)#0Uhx$q!Z%e#=wH5sv@#~oQRr&9*H(IbCrQ4o6>b}=H zV!9CGW%f;J1oq8d;Sc+!iSKcWK(EcpzL{TxeNKCU@yylHnB_RXlGVrg zjoAD#Kj4q~NIplXpM>9VGt3wDxNolUH6PT&{l4;H;5PyW;d(&703X_0CT~@YaT%{mgi|>`(b4PT!WH|I~iKwJ-P!pbzzt z+hBseBYpHkeZ%+*{DS=!`X2qoZ?fMnYdi!fus_h=Bffc`@~;N!+~3e1{x9bze1PA8 zyMN~458%CB={Ej>_~1SpwFOE$tlWnMb!EWE`!x0CKjL40y)V1&^b3pBXB(qg_kGE4 zboo~2-+b>~KQcMyvo&7e-V=23fEN-E;u(&fnU7~wGW!ekmEsxj zRoIq4i)SbwF~&0h4+>lBsdz?zi6d;fct(45XWaj=-o4@*XT?&$5A|VvU;vMPwweh`X*6V&9@TYt%bG^xrD0}|b_eh{07!O(E+PZj% z*Y7%ymwcFhAEkapf7%zb#NY8t&5Th+n$*gFA_reDYTD5kIrU{VZq!9{Y2>1{i<%;tt{~{#HB(Kc1T}cQ9#Y~ z2lJ1je{KFV{Y%5Aw|p=A{(v9-9mvyV+W+N@{;+sZ@q&JprKMD^sH_l^$^$A(=2fn$ z%sFvCCjRud%kobdj~G(D_F#=yQ(5r~*Z#ZFzTf$?6Sz-KdLu;SV%i(hjRX*N z??t`hBZyy2ARmnM5`Q`Pr%`Y8C;kcj9Q?PT-snyKO4i@Oe;D;fU&2r5>EJ(zdZQ=d zC-ighA3?p*kML9a8GZgX>WzMcpVH6h^KYTv=tuY|{Y+lpj(VdX;ivR7_}`CuqaWd? z^fUM;P_Our);Fb}!G8$#Mqk2D>1XiYf%?ebi99&^oJD=)=ajw%|54OO{!Qs?@Xw$= z@@q<8!~X|Re>47kC+cs;pYKBb&G_?&P=7Q2WIX0({P}&TH~KQZR@t0I+4f7r|L>q| z^zF@`??JuMm-J8RYxF_*BgF5D{A=*B-8lLZeo9}XKaOJ^eF;CMufa$7-_e)+Q>#$E zq;K8&z7O?AU&0?$z4Wc)|8uA}`V#(#>ZO03e0>1*oEA=BO!!yz z+P~cV-i-RlUuEGR_s1cXwVz$J^;$sts81>bL7!>-n##7{+4{X7?Tx>19)s@_albVB z*?fhD=p8@&dwe)U1tYrlj2j`dV~+fQvg zn!{dS5T74GS@>XmXm8NvQQ6IRAIe5=;#ZCF`p-P8@#j%*^zBFe@Fw?1o1e}9UX;E5 zE1a)5`kzO=olkK5+Lm}e@w4*>)>k%vv^mqd0G(LY2WzpBwA3-^d$KQvt z*3;GRM_KfC<-1W7eO>t;lrK<_l40{n(}u-rR+-@)uTiHf(6;hzH+_-_sK&)c1<{57Bd+(7<1(dmxQS1KQ; zJ=uVLj0dLhYx@2c?~;FTnfRFh=ly{OzTZw=X7Mw|V=ezf@l@cugkDj^n z0{8>%HMsYfs@*pPzu^5`u7}PGDF17E4%hNwpnqhqK*2kGh;sh`&kr${P_M@X~W=QJ|VtBdLh1q zcw)Jjzl6#1N1;PJWh$>Io>7VUOJ$u;bmuPx`cm5P3-m>P0VbgM59sUV&E${tL%tA) zl>ZI->ic7k-Y@sgUpgmefb-v5YPv6HJ;^38Wzuet-RD2ojr?Tw*sAs-6;Nv}(@$jAp@O|dO(6q*5KInPK>l(hU z^8vM&e};V5%&zesf^;JtHmze*8bJx4Ul<^SyNbki=hc0Oj(v zTs(70@WJ(npAa9ew~N2_%J-^={-6)zHJQiH<$GP>f>R9uUdXTFU*?$aWtG@3T)r2+ z0l_+2G%h~sTe$dWol}ePQIx<+qMzcUqczt1_-L+k z7n}zUUV#6OvVOq#V}Cyzt?y+C_*wk3$?;?SlXW+Xf0ibwOOyC#jAyy{=Q)CK@yPD@ zF5{o)$bpny^W()lq^TU$!f2?QWyhrg)cRos@DBfA; z`-@4ubHr@X5bw0}&5@8FHVUP&k;FS|I?q%76yVQyYEmd#Pt4Efmsx-6ThtTZ5bw14 zslCNJYpjp?VaUHL=7-(1zV&IOD-gdM=7-VMLVbvL&fvijl&PP9@7DaVWId3tu{GXl z_|LfbBjx9coDbtq$e;2jl6(PNfW$A=2fjVztG&{U`vKOE-!IUQ{DN|O73u^Av*{bz z&$Z`KnM*U<>ycyPs%T#taz!}&$TMb&7_{{%xi*hT#5-e6xnioTHT!|I_?~+JA>C z?{6Z$s`g|*Yu{42#jr2W6-zk`1~u6k{jN; z)cy&Yn?K2T$AsEz(*}PdKBD%r!hsL{Rr;SsU-{3qe~hw^7fs-M6ojvQH{pkPKFa!8 ze75#KqG0|l<1f2Z4=cmdPi4{1;uW=jjw<=D@E?NwF&|F&)zx0Ryv46;|2^6peHs55 zRlVr@nKSgyYcHWb#w%K?7rib1Q~Pz)TRt4=F|7PO(aZev+P^}*(YI%OqIMb8F+Z@W z{#q{w|9?Tf%C;Uo<0-Y@Mt$Vpt@Qk-s4t0Lq-P>OZhpUkdRq_j zV?+6(;y*{vS5a^IlU%Qap4hL5?@yp!^5F3OUr~*eV8Kcn8(gZwwNxrDMGpZT`m>&q6es(l`1uMe0{Lvd7lH{O4RvZr5rrIo~+ zOul~w^+tcvFVS~yKEH+fT|vJNZmxLvpa=6&L;M8xJJ<7Hpx*eG_04#m=jQhr)N4In zxAlJoWzo}>KZml`!!6pse}3^6#OX#LsH~ z2g*tOtoFMoi=W*7^lK%9;N*U_=qp)zQwZTqvAa@ ziy!IyJgs;6rod0J)Xfd#rvkqBw|sso-@_(+<)5NI)>B)d-;W#l=&02rUlsWH{>o1R zyh8q@=5P4dUA}72?=BzJ(+BY>90M_K0; zXfL8!yh#4N<(qDe7sdSFaDSuPoo|}`Kcolpvp|nRJn?1FpZP`a#r)FzRONU1_Q`uD z*1rE%`KC)r|E=*DtPZBWll%+%;`^v7D_#lzrF8-4!=z2fH^uoP%lsetOSM`t-?V0D zH?Peqo;Ba8*JxWvKA3;h8LiP@^!(ny_w!&2tjqs^y^Z%MM%Z5Uz=!>(LVwm9|H=Oo zzPp6)u8@yu{+awQ)z6I3R*CtTjT+1KkZ)SIdd?s8obNP7I9`MKrYPfkK9Y}^kJ+4| zZD9HV>({aG*G)3N6!HOo4-ZiJ`4ZoeCg-bsMbzVa&6{ALWWM!DwpYF8TWbnmhmZfh zVm-{y)=T$qtUVsch~t4?O~ZfP@b5IO-u%ll>L+dfVSai)WisS*j^YA)IzQuwWPUQu zY&|(Y^9MaX-oI77txuD-Nu+;$lx3}t=v}k=K!1Dg+^>&c?@0gAU4|dxX^>CQd$dSz zub&Vf7rl)gH$#5u=xA6E`qv$^edS-{`)A)MzVX{X%}J;KlsX z5%EjK=a+UeB(yny6Z9D9@cx|psXU^1f&PMW1OBnWSNyLA{3Jg~eyPqEVt(nU)~^!t zOGh}rm|sd-yPx#8t(V_V25=wHMLf-)#{CSo*7~9S0Gvf?EBwjjpN=ZNrZVV<{L|X? z-)4(n$M*>=|Li)8e}nT+&uVjlKMMW+t&o4ZVe!k`&Od$5$2J-I9M=&CZeDRI1Q-iofp0zi*Lms_z3sKWyilBD@cNiSgOu{oU4f zzNt13zn^fwwf)fIL4|lL_zC{WcE0JV+p{g6So&^AW6bYK^7j-UO!Dc^dL;D!%o*|T$pZZodRzRabPDx1%jaV}D8@t6 zd`W|U8ugYh#duVjFKPI{4fPg(Ry|G+)o)KZtrC4=LvB8T?03 zznyOi2Uz*6iF~>BeKgRQ^iSz~MEr3k(3kX2^C6A?KM?54_1(&!??nC0`14(;kNRRO zfBq2aqkh=RpYKNf&G_^CQ18zVw)0K5^G$hPL>m|JBb=vg=bP>WDg620cD`v=x(D>w z&NuxE#g!twg&o^xr;u+yRyEzCY;wk>T zCirJt@=ujXkmR3Qe4}~W`KSFD2tO*t7n$E{`KNu1M>GGF?_D$gp!oC=l9%^zB}@%T)yS9#<%=P;!ASeB;V5Ahqrtz=8GNm_+!2|#Ru!b_x!Fa z9%tiyv*U#~jSqr;-SNS1g?QjH*~8~w^@sQ2b%<|?A6-M80!LReqQ+lEv$ z^ac18@*4AZvEC^6=|CvS&s_KIp; zKQ6U@f2sh_@-Y=3RDL1g0YCLm@-cN^CCNW5EdX9xexR#7i*haIE9!kf<$GGbNQv#?4=Uz6OQl)YPGJi@<6hxhkXulzT`ud8hHwfNHCL3_)mBD~~& zBIZYW@VwH~JLI1*ztGVi=^APNkKP|sJmhtoFXJ;weo=|>lq7$t^mkEC{S}xCh5K{w zLD}+`?EV|$DHf0Ell{v3uu1-q%g^!oL-sy!AM=Nh-%oxz#{*`kk9lA2ht(hNjbJ|D z7u(&qq9|{D?=IWac;r9O-`^h-eN=YubMSoM-n%n-i|^fO|MmPG@0*2uB0F#9dw1ZM z;ID-D?sQ!N^Y!oD`S;Mmdv|spF1&YV_uFt^&b@cneV@+o?Z4yq?x-(Gf6EWR{V?5^ ztK8(hJIc5BKahVU`Va=`InXJ~-tuLyZ<72YtEYYheHwYc=?nY*MDhL_^cU{W^-G@; zAng0X{WYvFCQPgzvyErn|@dBYTgo z74nZt1985@uWx|o!}7P(zrXn2U8me)d(~^cr2%g5alZEcU^&ds)=Tfpfxqzn+<@Wh z^Nj{tqF2Z_Dzyl&wBKQ40xr0-?h;i@{?G`_{dMXEd0xykINV3`*sL8WXbz? z{dym>Y57SQk89z6#NWN&t@p4%59&wR9&AEel{NUtMake|2;R#%Ft* z6X5&)NxeX84XvL44E=$h%E|aBNBCA>!0%T5xjh8n=y{7_$jkMi}!Wc)&ZjIVN1 z-#xzI73;gd>&@IkpiA1kxJ(aYKk zp5TYFTMw11u^#JtaHWLsj^o!$?*M$&<5D+%w*CZV>tpq*68uo_=7;)2c+Z;cd-i|% zjH|C&z3@@IFtlHA{W*MgiSlCcL?G$$A?O63A*(9Xr}zx1eb4^FhxOGZ)e9e8=d&{A zw}AJnMIXW!KB~8zOq)Nu27C_XHI%O}DrYm)r}(fwTPoIf_phe)h4~u%LVw{e`4#=Q zj9=(~u(JjK!ukTf+9&vF{(>)h)is{4Ke)or(^pO3UHUlIcU=AD4~l-ePrrmYLw}vY zda6E?|EhX??}`0YKgxRI6Y8O#68!3fud?rtdZLohpY_$HVtq>goA>WAKBp4kqh6r> z{4qZ23-Eq<=U5Di`Z- z+F$cc@YB#qf6dp|V}6*=^~GX+0lw&w)FUVUZK7)pGZ%um;5LAcK1hpgpc)%YkjP~K;Odn!q;V|^Ze*B;TzY>^a1;u zygx^L6Zw2j>#g=0@5Oi6`3~CazQyN`6!pPb?qBL}@Xj7C>Kl{+U+XJ)q3q@x%5FV- z_XoWl|5$s`KY^$9E0!ZXj9=&ve2GuM_l@G$J^und4c|!5P>%Q&`aeQ?$-glDbghi@ z1iWwmGtOVRMtyGfg63=O=P;cmE$St%x7iz-WTi3bmdegwEZAF*y@TJMs+kFjynlrGH#Pr>pZh7--_hq0(!=JfO%3){ z0Y2srdqq{EkN9Os{1xd_W0lPp`T^g6z<`b($mat*@t4}qi5|MorS-J=qQ9H(BjmRP z{-p--i}26S7Uu_lwTkzsm76(_3tH=0wU%rn6 zC|(19dN@bupuB{&LOc@nzQ6eUvBUV@HJ-~kyM&X6x ze1Y+!&rmpsTSr_sKxV8W1--%@@c(-%OAgyIwPs@HpLC^zz57z#I>-1k0sU*gr@Bm50_ z9{LuwpCCNo*Y5l+m3Ogxncp8T4~FlLW4(Evq4<{@zdwJFz%W5@0msLCSfL*M+bgr1 z>!{Lt6aI>QpIq-}p*_B5KA6pK*!qHB0KY_jQa*$5IVF5z|B+3^Pw_Y4hyKmHT3$zc zeP0~!1K@kfWiEi`i}C$?SXJhKp#6NlN8bxnJPl>szwHn0aX);1br#{j^=y{wiSsCY z&!?ZfAb7xMDzE9j%plsBl*}(Un^**1! zPub3Q4IkxrHa_rsV64Ql^!I3aKL4Jo>fQWX7v7w`8TE?CfPRhqzA@3C?SWr=WoLn2 z(2o{RJO8Kddk?$5m-OBh#%q-SHOM>WzV|+#KkxumxyR?=%83)yADR^8X+FR2zGD5G zfsU(x;FA&zC8bZ4l5-2(0U%8T0-do*S~dP zcc$w=E`HU>7yADk^O@p&uzt|*Q(VvG^LRfV>pP#nN&WA${#fsssX%YguaUR=Ne}fW zzMaZh7-I$J}r}WLtFyZ_00e?#HCv3lKcTQICM!mj=j`@Z4ZhcMP3vG8!R}Z3o zobx4rbdFc&QFh-GFE4a<@1}mz597^u7OI-BqkkL^kEctY&qx*f^=oum-=p?CU*r08 z+EvZZ^$Q`k_#d`2={U0ME*fKkz+QD_i^f{=CBY zXE-nZl|RV@AHbeV;J5SBQJ=gb_@_l5^0&h$ecyrOpHA?-ICHEoJGEi@m-^}Fmo}GB z@AYfr`IBYJ&uPjJ&bKbkoaoEm<=RtUk1rlW_2!i5ySF<3i^rC-(t4&c_@gnoxVWG2 zsE<&dfBx7>>WgD+kNLI7PZshqnx9-cmR&^q#?RS#LF>e6uJ5ASLqAVI|ExOx0KYUp zdGc8HQLOj)vnBCkYf1Xz1o;j0Y`0FTyy*Ck_y3j>`Ze-nhgsD7s-Pd_LG6!JJ}&*# zTmwGq#0T%c0^jBu#(PHNsb1g5LVv&BfVV(+4_x_8wQqEek8?fV`l-Lv`GDa4R2RIb zi|}4R`vl$t0l#aD&_|0=KT-Z1zHfE-PUR=1KNf?2IWfElXwnz@e$ufj%g0C$(jWTb zB+4g9U(%EF{Yi(PjxTuxeKh}n*Wru)-S4eEb75%-&E5CD>)CAn(AzK<42e+y ze~W(4PsjZa^~&$zhCuoGBKYURvFsrhCuh~az`q!u`h(lS@_m1y_g#a${5JFh;LYYI zmcsbIaR%^CWaKBo!~3O&I>$~>A06Z05D$IRD*jns$5@b0=)cB=x4Am(y1Ox-*WSkY zWZ)vS!FwT4rs4Z8P9IP|FH^oLf4>V$iv&#cf$HyDtAIbbKMYy98~;BqssDS>GwJ{E zXMtu?j`XncF1{D?nacBT9gFfzdHBIZ-cX+ZonteUSIHyR`{H{SqkKPJ&*on{)(G+n z`A2yWGq?8ShcAF%B(MLz$?FfEn4vxpKfMBf?cFC%1o@|YJ$hpCH2SL^{^R_+AkR26 z6MvEazTo8y<yF{NPKr)9F(`zxy5hH!AyKtskfl;Njs1eSqVEkoV7>xdVAW)g|wzh%d%p zGI@V1@_o4gQJ&rYe`9%{LhI#3-mQH5@;*xjh~v5a`;O)PSh_!7eDBhYu;~WBCS;9$TV(Yrp1uQ?D)VBl^cH@Vh1751mN$#r(UD9peYX zB>#~2<`*75!To%39P*F$?MENdejN6zM;})Cc(R{g0env%$cxDJrXZik_fb9%Ir(g^ zJ>>Rt&%Y1*{XEF~b47THZ$x=NKApp|`MToe>&qrjkFfnD+JpWFSC*E7 z|AGAx_WJ?+!G75PAa5Aojdw@;>w{hL_8{>G{3VmOF8jQlpN#e{Q~U$$r?{Bf+*KGXvpluPp z^*yi{GB~<)BTI;h5RyK|cUqL7oBc=_0%r&_B^P4+Q)`ubbHC!sm_d z&xQS$_ECQFB*`Uzm-ZO_6X=VRoIlp{HumG2+UMMVvGdw|UpM`b+T*ve-^xFKBlfk) zE3o*I%*#0=$8_A}!B%`Y8~{x9p#ciGpEC-ybv`+S!@ zect@t)IVNN=t+Az@b?|r)4&h%DF58a<7@%`@iyVd{jl4fKHgGt$V%=h>W?P<{KCi{K6WBPB2_7C!_pSb}2&R^L7A37EGW6-KDX?r zW-m*gWiKyv*~=#uZ*DIyF4A6J3idM0bly5c#!9G ze=XX}i%MXM@_ekzUIx6v{t9?q`|A?$_xyqVRPI&+ughKryn?+9c#t3A*JJ6-y;6KZ1HdS1L^(*dA9z^`?KBhF8og!eiw(w zi}A6aUf5j1_#xhX>2BH2$KCl?yL_Zz56}PX!a`O}?CIgdMgRHI!rio|7Z^{aJ@#|Q z7EFHK{#_o|`Gf3f`qS0%aqj1ek8^)5jUPXZvd(Al{&(}|jxSKY54!mFeC6;s?du~x zeqOTu;4t?C+Uq43zfSz)rDQ!2zXHM>&wU@dbJ*F_IE4m(H`k6GH+i@F10_FX90`CR%kMh3oK)~-B`Sb3sc=ti! z`&Qm(06tUsk$e8_L!SuW9{ObK{yTn4d-^#}ko%wZ-v!Hs;{J;H%;tx?^u^(f{1Erwh21PK@Nc&N zE@b6(^aX#rc(v8J{rA%C#;Z*}D8CyCzeIa_xhr1%)ndH;oxSDr#_?+0&x5|Wc&JMr zKh=)%NPcb~EXv#&)*JM0 zw`XQJUGW3$=}+I=ro7FQKQVq|VO;ihkk7gC$jBzmUJ??h${A--!R* zy(%9}IA6Xe@H^$dWBD8RlD`3OKJUVR4ftcZHyd7_fG^}z_&WKVP1diG-`ghq z`>y;aPCjQQsc-Lp(B!kxxp&XKCt!$V{Pt2YzKnSBPR=*IZ@lz-Jn`_~ zFBs8#<-!mAiuNPj?XUlCY~Nm)Eb!k{-jIEw_lLOO;CsOtChY7@aRxy5!S#PMH zU)|lz9>esVeK)^4-Q@QZV|lWf{je*e{m)*=cEjKReH&T!MSSnL^Ct15w`Wm54TWL# zS6P1`)^mSy`XgyS`C!^U%^$=5v^C#typYdT$akasx_q~gAC$j6=I48EVKHOtI zZQXAr31lDSyOiH#`I)`rDUE(MhCK&*B42LT5=tHKqLz9;^)&+-Z7qwR9}XpMY) zS2ADJADsyL>azH4R|W8tuLgQFJ9kSSH~AGtj0b+S`quS+l{?wnEnf-xoAm8W$RE*u ziZbZ8Ym@L?zSzMP*b|;UkKx-H`TV$z&-=REUk)lCaf1Aa{&7F(7{7Lo9wq;J{sDf9 zrvtwo%r9H$+;dONCp((HMo$&&Gjn3VBjuPG#yvKn2wRV0``CPKEFh1bD z**0i2n)_kkH$F`Mj`qOB9@@w5zA^frmOXROz0c6-wD-tAaQSKN{E+N@v;PSHd+q_l z*iZRnZ&Uw6ydMqvxATWpKJCsQ9>!*w`q!ZEAfF>zK1KU>QSW7R?Z>u0r;vZi^}~6Q z+TZt8uAlNjteh9~zkUJvEcCArVn3n6bo%YFV;2y z&DmSfKgV{3d=T2t`7vFnQT*D_=C>f3!Ob$H@Qk zziFSZ!vFjr#&`O(-Ld$$@CW^o|0I2wo+lqo@I(CDnXjkANc$W_@g__UO(1N zpGAVx_~2jBXT6I)&lKtN659Lq#r%ZMeOLaO_pc99e((S3pHluK;5q*~(A)dhf!^l` zF6{3#KN00e{)kVLTVFhP;CwTkYwkB@G|;|5K-cOW6Ml z{0jQ?vae+@IsHm~M|Hb=U*1oB#QYBcG<)HTiGKQpW$CBF`P2>0r@sf?;dFa{x-0){ z!PP-4DgTT1%sLt`0Y2i{h(~qFx08R!H|6!STm5O1??3I5_qG0lz5Ofr&@B6ZA4W^~ zk@7y9lq3BRf2TkF_2+*@d8a?UH6J9(Kl$C|g9Q0|_m+H+WAI!}e*<0{`5=@>=?BXP zQ9j{_)5pjkbNL{bw7)1HQCr{y9w{U2v7O8_owh+$`{~0E%^@cme4=J?{F8q zLz3?lp5!gT5B4_VQMY-%d#Ye>_mZ!3G-xSbuXo84+Pxh7{@W0|w2a59Z zavGmD`FXAs=>dM;B0samdbeNRzWm(Ye(B^D@|Lc5ul;ff3--&A~JU8;+OJoqIzqKFUbieG%&t5sE{OlmF`LScg{qooe%BSUHYri~}ec0_+l=sdf z+8^V7`F&gV%m1Ifw~wv!I`0HuU4DoXCGx#j6vZ!*SLD4UMN%Y9%M?jbV3E%S%$S#h3J_{L|2vE*>+9pOn4?eyTn{0Y5jA{N%3}#xD>Yk3TOa`3e0c_!Ir@ z&7bm~me=3vj{Xw-iT?KF&r6p8p0^(^k6>*VjeqGu;$P^r7MBkrY3V5Po!CQu+|~a5c%VJNP+F);}~qzwgl-^&#mCqnh{-XJ2dm z>C?wfeqP#X|29??KRl5A>&4#~`)<>xR~65^M0t&R+P_;KygT{Xi@y^4_d?44Rs1Xb zEdIaw3p@B1_O9q#;kSpkcey;~{Y}IdIsELxzguYU&bG_NtA?(Dv#>$76sneS392 zWv^oVs?Sd*9>dYUFYgdPF~t5neoEP^=r5rUO+1F{uY~U%e=d%v`b*iX=r5rUO*}?z zetGzKjQ#D|lF^SJQa>)Z{UO%t0pgoPUy2VX5#MC^X)qbzRKuRVMg%#1w1c05Wc@?) zldnI>Pm>;hIez*C_H5(c`j7h7$@>c_du<_Q&zkr|M^CSL@b1)qY5&hodzSXAZ$Db*CbwS5B8vSG9 z8(n`TcBknL{k5n1OWCXFFTtPa5BBQ(F8j#@f7XnTTA}^7r+%~cs^-TPg4>bT{+TjV zm;PS%mnFxqa=ue?{J3X)6zE;zqeg-f``;}->OJ3Hoe1c^t!=OJ{1W@qZ=ow9)bX?C z*B_<)H}FTn9{*_}A&LjEl}5L%Dc;>;%tG z$LQY_dv#3wHC|c#kz>Z+9-oo>&}Xc_wrx!5GjqT7%oxu%&$Qi=_1S5!rs6d=&ZPXc z#gx6O;+@?7GZpU?wH3*~;(r%^?N}TAwE`dT3ID$AHwAvpzrMT+L+__&e8N77zBqt8pfqy0-`+CTgEI{u(d$4}V)Bz|Jd!|zLg z-_RH4GiB!k|8^l#@Z)};iU*0t#6Rn;r`W5B^%VZL_Zt^JygXPQjKKTHObY)<|c{vMuV8G{)AtBz*^KZyURoQ!|CT`prRG%l(A z=C1x%%}?N8Utc==^}+eKn&RKQS5E8O&8JiRamR}%1y9lwx&zdJ1aE9VuoU!O)e z(DPgBJmgn!|MtCM;b#+182<5@;TFu^()&t^zb>Wtt2{hr`HTM7_f&p`qogPBOZIz+ z@7dJ!j&gAg`vdr2iP?!1&b!zn!6f$Bak$^BTLe`fX^4{Y|<4ls)VE8&dYHrT-xnujJ%eiQU=$&PY6@ z*PpUyU4LhkzO?;G{E)y`gP(4!@8F+@^uMP0XDG!#g8|Pkeg44!d+^U-ihmx||9W4Y zU;Ivxj@Q@vPtKdY^U95+{`2Ai?|S?~{ddJHJO0t*fuH^LE^M@?^xtXcPZa&vF8m|s z)1v>{g<`nT~c?WA`H(=@_XZi<9F~A&ij+`zEOL-C@UudsJKQacb#ez*N8d)D>WuK3gT*G_#W>sOOM>Hombo<|lE_AB#s5uN5dIW+Mb z9eHi9wmE$$_G-I}-xYnJPCh_Eu;%J&*XA4z$nRo;VRzIX6v zSUC{}UqHQz$3*+nA>V7*{s3Nd#CMEtwDmKen*{k0Kb6ri_<3nB@gv9&m$Uid&>!NN z+RKDr;+^V{zoShO)JlvHzDNBq<)PGnSjX~+$V=Bg$F>qfhW-8MMnT3GBZ}py(8je> z{pFJR*nWt7UU7B+*wp#hxIQW$TR+za{&nVKdjs&R_oyaNui{+?q@MhL0_o?I`PfQO z#jsLzJ~q{#<9GGF$;Z|ifA-KpwAS%rZH4$}4pmWh>vb6q)Y*E(s~|%m7EtQ%5Z)`o z|8_qSJ(ns!n=EfU<>Irj{^|Iy0`e)6UZ0}9fb}VCJnhi^9a#{bCs1J{_34g6!vxk%z0fZs$uIP^Cr z{pBQHm+e(NR}T6Y{hx;ZvGH72CI90XI8DWS5uPYmQf2H<)p)wR!FUnmLo3OA#NL$t za$uDvmGAAn%ZQI^6aL^7f^Y%l5#c8(e~Iy9$8J(lj!klY+by?LK9+c{ zO|@73XQOjS=qmLRAA@{uk6Ze>*V>ego-pxiD*r@u?3k@5eMhs+kKucX9|k^)(d1)N zPyPnIB7fq!Wc%~YQ)quo^G7k#@rky5?ulgkW6gy3oNix;pOE;sSyPVA3V%-Wd%_c+ zdz|{}yscOH9H&?>@ag=0cD&_gp4Y4RXX1ChX%gkLy1p3A&H3{w#tTwEZN87&W;vdj z58gk?vMljI0?#qYC+PC6Wu;!uqwY-9;NO)*{AjK7k-HQadViT)F9$0ul0R`j?({|( z>Oj*c5 zC~Z%x{`L51{|3Rc`<)fB4@7=}UOVH}?LO45Pyyn6q!_PUEU`>_B0a|!k8GjJ#yi9- z?W7N>7khi<5bIYgeXOpM9xn2G@GtV2tSI{$?{lHQY-M$Y_VsGpEgPS9pC4%WHeXqB z@qq8rzFu?o^*z|v(aH+(Bk{y{E<@j3Oxf2fE7adIKge8R6P zzl^{Scxg|+x1U#~SYqEZ;T)z)mL%=gf`)Bp;|19_pqt#>mlbo-gvJj z$9oCwcOUO!dc2v`cx@c-qCcMaqrCBcOOFTmclx7NM82(&p2Q!;czyh=z5cmp0o$U9 zmq^QtLj3uJK4<=l_YMF50PD5B7JQEVb>y`@@8!!8d;U^z$<)8a{BUb!me=^Vx2{4y zJn7^G_G^>}Pohfr9r6PAb=QLWD*8sgh^xuv&neeTJprsPs^Xz zFutRYedWpLOK9!M3nxFoAE4KjpFzFw5BW7#^5e67Z&2h1)@Re_k0*D?kGmefCgg|g z$36KV@f530p1}U1JRyEWo_uct>$^jKtaAQJ9$r@RqvFdC6(1$?1M6RiRD9Gb=~v5> zk_R99ck)E|*OR}Be}872<2nBQ>;%fImY;x+Y6>3@B`Qtzd*@@zccqm^#0+mllKk&ZEbr4^Hc44|3=$4zP?P% zU(1U(0KMS*Bk;RV|KOJ}z9{=Yb04OLJ(89m7p?uF<;OGVJuN>jKQj5T>g)@VAD%t( zVDe*)^pKDr8{lVSU+MVDM<_p@DRDd}KQ1q!{OIJz4trx^nEku)vZqmY_QoTZAGpww z7%#{1oV|hZKAHTuV)-BZoA9rZ-ad)Ez= zhQTjOz1XYp|Fvi8i3|8cu^yuvgZ=auN>DEF2mf9U29x&pHL%y#{DE>UmkM_p9H26s`GT$-rZ#`}Oi6c*QJ%oR8US#}@Qjhk?SJI3FK#MPn z-&~~fM7KY^F@x!7e@g#1 zP=7}Ho3#C%YodQt^3R}u^!F6cuW%nr!}EmXXVCsS`X`?TXT$&aBf?W(h(6!M{qbXJ z{|o=$xX3G+Kl&SvW@dyJ(I)6$@ZxFygUqKGjWo%8wS8^gQy3?FpjY7k8NomA!=k?; z;w1!sy1j$vH)TCAUcaoLjQ0zi&oc_%YihiB@aYoj1i$nb#7~S;G(4gA?_qSgK-nPv zUctBW&yDEuhNFcUelI`XCyj=iY2O=v3jB9x*q`altdBL*w?>Yb7&whd98Gj-C>tZhyv^|3NJmi5cSwETY&q%z` z5bwJJo%=!gDtsdx4!@t<3}Nd8)r^_jr?2gvt(-LoHaFF1b**C+R)lrL)fqdzO}%|DDw zUVIVS>-(<~Uxe|q6~JG`{B8Ub;J+d83qP>G_W_StufoRCw#aisf7eTGj7Kx?1%y$l zB>YEv0QfQaO3yWZL;92PWPfSmD=;4Rm%x`D@14~c_L z-@5oSv?SCI`%U`GuTUX5emune)wMG0FY?##?2M<9`Y9I=qRKVKd_1ar@U`T7B%964j{gS1f4^ONhV&-Z$2)k__dslS1#A)SJ1P>f2=0?HI<)@ z_M_t0`$>L14ts_C^W~lVDf-ak&$}M|fS(R4ed+j9m3QaQH@xrV{K_k*`BV6r=+g26 z^s4nI_Jbb14mo;t{E2$dSH6U=J^GS-OiPx&zNq!7S?{0M{Oah-mnWOAc>D`}Uf5W6 z{3-sMB_}_wvR?7G)yHwk@wdQVS|UFy{)PU%UMevkl$>vppQA5|zP0=u{k)WYe!h$E zJ^bWJUY9MuElK{TpRw^wm~WN(*PHK+B>%p~?i{|6Aj9Y1r7!sWl&zq@ucZ2WHQ8T@ z-MRkeQvLnxj{Xw-hxOQ#|GxM|>E7zkiz^sw5fF&{;C@udi~C2cS1o?LV)*ed$dBa& zKPL8va{gO#_BQliK7Ik?>+!yS8Q;Iaa3xQ_mS0#v5kkS}*K$x_1#E_2S9G1$uc`b| zyW6+;UhB)+_ATlm{~dp(?OWtS1%2831jp~&{HHH@{J6V)tHuv+mIv!GH5)Hn@12K` zem9qeUSZ!VeR8ub_H5bMvtNIqtn68qe>Y2V6tjDKt_mucV1`7z_HA;!C;age{E6|vpE4fsxxan;EbT|jpPJg>O1Xpq_u#)PDgN{Qqqv{bxlNlm&Xs?!+ zX|F1Nd@%k?+NyS-;_TIOa()%am#VLyUM!Ozmv`Yu@b@J9-`!q)u@~W`o;^`c z+p8}o_2J(9i1Ef#@Y@uTGLwftC%-^8Gx{{B$$=PKrJ_!IB%IsW@o>c5BO zzh_hY=fx*Lzy9>wqelN3ePHw*^a1F<7<>GuI(zgD&tBqwPW<=WKYmPm^orLX?NL~&{`jtc*u&w?nL+Mv zojvOD1NG77Y|0*;5qnhLcLslEzh0h6+M~-em^@`8GwfNQA zqc!#83+PYVyP_X=><_6x_u$9-?Z}sF8mqB%aiQi*`u>5|LJn? zGU}Z@F(dY<+`j{TXDbiKpBQgEHD1adeSq;kE`M@;_UA`z58eK;7C+uM{P3ypW#h$Y5nEfoB4PprN35GJQ?j#WltjDe=q&DmfGJX&kuk4 z{hKp`jhNq0(w-#y*zR1UkJH{vjrUV#Z(iBg-V8of{@mZ*+|M7g<=J1@ zuRZj6z3*@2d3`?FUt<4P%igR-ukO75(c7CZdGLK4do!VLeK#A$=~P2pR4yx-Fds@@ALed@Q0_* z_ml58P00HQY5$7s&mF8e*x*6n$JwioJO2mu(Wc6$CFk*gZ?k#S=}-7iiZ{o^A1e9%#2-54^7qkS zRzEVr?X9y%M@9x^JagVYGD?5vh>0g{L_S3LJ0EA6{)n$X?(+X3zP^x|691*dGmC%b zaVd}P>i-;>Qu8zRscP^1pHm~r{oLat+|NC}i+`oCF`Dv!j{_@)2UZGj_a@v7~)^M&h@f{}b~| z><2MF><7b(1Ro^d|hhKb7_=_#NjDo83u%Ec{nq zem<;E@m~x-!}YfL__|a1_-+r2y(;zO*S2Sb-;_TS^m2Pd{E6oKu;ZC$EdP-|+r0No z`F(D9jP|E|&-Z@64f5L5{tob8v3+=${?F5fKfirugy$VXzvR!HmyeJ9ncJC)Ju^&x_4A{>5BLrL;JwjF_V4V|&!_yM>Gwv5#UJ{4 z8^2Qfz0u)a_!Z-gC&&A2%08_<-e>*s68x&(2bJ+^@~g_nX6|R;eKg_EGnPNGUi?}9 zl=JdE`7@u;uOk5rT2H?M{|WvaQ~YN6b7XHONO~eaM@s%n{x`tC(|i1Vl_BWU6FJ-@?zXboGKj=&8uLl3! zSWoM};T6jtz|YS6y2C2}CHV#Q`Ize4Kkpk%@zdY}*GrgK@zY>XU-kHDMcoCp`TO>N zPxPh#fe{_%zOKrLB>o7@5AoiT56!=?JNaGLzVl@O!ykcy{RsNn{tW)<^0%q{<|f{( z^JQWizkdFQ_WHd$Qy*4vU5)tWeOTy4|XSp8VGGE@kI^6FCeR93kecqsO zy|~Tw+1BzC?YqjR{RefZAKE58Y&U*G?&G1pW5v{?zd{9lgTD?^pMAjmm5H=0NH zavu)m+`5*xJ@_m58}dr$Yr}okJ8VB9?S-Gw9_x9K;#}u*13jwuNnL)s@o}*)wLU++ zF+FYLMVgq;iuq%kR8aJ#g&Ox+I|AD8^22zA__*9xJ*N9Z{3uY8aCFz%B3s>khp)gJvmDCh_C$NS!09nxOzdk5L*l*yka z>xKJ>Ju+XlUqF7flkz?>^0P_&Fz|J}5#P)Erkqc7>XeV4FdESBf#UwS)VH1V>v3Nd z!)ttfjrS`%n|sjTDZxh{?w9r?@ApQhgu-eV*ZKysD)>N z?^E(#yy_qNBWmj!;rEQ!m-XnB`;eVxJ)-X3F6sYo1z*{yt80|-X?;_O9~b+llkYF$ zdrM!r`|^G(#vj85TmAYMSdRySc^;|Xca8J%J@!{}pB44Tw^^^>cLlsse@eesnvFV6 z4x?V)=fwR{x4(^Ky@sQ+GayLy!+lk(*U8f;<=a{%A7?ho5BT4QQGahY>bLKj{CWce zY>)k%%m?>LkC#v$*Z9DC%l+|dSMgpU?bmow!>8b9Jg+?;{z&j~=s3QY_f+pKVtw(P z8OoBc9P4A=-|QlNF+b|>@A&?(d_Se~FYfz2?2~szz(7i=@zwWy&lT$feiG{dn<2s1 z>dObHzVQP;{T0T?<{B{K6!x$W%Rd%@zhV1YuHn6 zJl;P5Jg<516gH-}ODJ3Y5uZP@#WL3i_$*$ZKF<4e(=0RoBc7Ig%3k>p+q?V3=Oo{s z++PN~*~Hj6)=J{Mp>&z~?ocNRsFG0MK04(hAmCGeNNAE)Xj zl|SKaiGRiyCA5J*?@%iL5%dSunUW8Wjz0x{k3VI;kT13Pv$O|)LLNK$MScW7zb`DT z=*`OW^50p1q?T9KAF0Z}DfqPV`rmFGko!g8@2b~d4gY^a9&C=L`0cHfJSceY?@%86 zo+l3=uQx|=J*>Q?`1M!dk9^yc59E*j`FZLml`jGIUH|-?PH?=fWK2%lS6sf2BU@Pw{)d zdhgBWcV8ZY-=TPzU!42~c%pOiKEdNYzg2hguP@I^_}=5+ZuY16SNfCvSb~3L|K#!S zs}IV*xZjQYiI(4#KH}i`g<2nhz6}4O-rN^HNqz)=$j>D<@5oF01pkWvZx4P&e&0fL zUgTc~`}=+$^BH;kJC6QWG;bUJP417#zj*^6_2VPwUk^UvUzNW>=D!R7zV?v(>+9o3 z!N0ydcoh1)1O|E-ea`l~>+|y|eZI7hK8JjGe(NFh`P^JBeLm;w^I!AzxmsVR&(-?+ z{EgA^+fARJPrZk*Q=jjPkE$;ZfR7uRf5C6GZ%Q2Ajo+V=2a8F44*VwM0s7lR9+>_7 zdGeo}2T&g1XZ?*A7kv4^{W9gL*)NB2xr5trvDf#LA3vb{Q1R|3wLA{vwY>j5_4`Hk zPkDlT`-SMD$cF)GKY{(Mx4)J95YujdA@?EXOAg-4*iV+)Z2#Y*yqZ_<&9Z;mhdTd3 zmxgCFnwzIRAvT7xC+33ss%K9u=sF{h7Kop~+7q3yk3IgcrLWa~!0KzapP)YfBlA7b ztnB@L_X}4rI$*H-1wf|C>idMgu4Qld^5>K92j)`yfhA|}QvY9v`aWC@gdb%;Fem!~ zuPpZOoVNE&eiz9v1p3NWN?Ly#eFyvVt8)L`+P{162hOMV1D^e%_X9;>&+P~1oV_9Y zfw?*E2LvA4C)yt-@M3<3o`jz?|88+PEdS2w`^4J+u;V>kC6C;GU~YeWR1@-Jj`9Qf zIV?U(9NvzBue(?BJ&j078xdGXoKUY)yxzpZH@ZSU23!jv~N}fDO^H(kT z;Op;4VGmSAU@LjEzdeuDd49|3+qY8uyu+UN_*v|E><7yFd$H#|{-*qW^WvPf*RkG( z{!%Gr-_O&&SNU}&V9(FZlOLTuKQI0PXV0%)Oxp9{&xAdX^K8fmyho|+d6l2t@@v1+ zFFwD%hVdM~Tx_BKaQ6IM%AUvgRiFPb9{5lAMe~0N-+TRavp^z@NUpeh~ij_2r}B zPoLi(-d<1fXT0p}(FfGGv`?MBU6y{qm{nTiEMP->UmsmVdQ9 z>GSUv>DB7Hw7&K5Bl>%%zTFoeRi8hB5AeH>j}nKs<1hE8_&sH>m-T&0W6vPoWlw%r z^2^=FR`Sc;XJq^xe%5}+p^wM!Ip|yN7o7dR&_P$}$Fko+U$m!v{e5}^^4FZ7hQqB>5!;e&jzi z_Ls5e;ZK+k>Z{s*r$3>rzBT8qZj^yY3`Pk1up6q46b9~Q! z_QnN^e+>KG@bjl+zmp$-lJ-0KpSi1lC!VHepmYy<-Z3!ct6ws-sFD} zdmZr^`L|0Lz6uENe>|V>L}?#;{EcM&4trdEAN<(->7fTt+MmGv{Ui-Qy+3sR1H>!T zjIZ(Tzmi^d#MjIm4_dtYuknod)9roOct-rkl5dFiX*?_bvss>pfgZAzIi3H=>_2C9 z{v)@)r+hK+ZoZN}kDE>T)4hBT;!mHO8^YJl9-jfgu!rq=9P$^ypDyr-{jB&y;MM-K zEwne|hw;o*BTCNx_Tr7?dv!n7`OhC<{#9QdVE(YbkdZN_j!c->F+<5KfRpt z*OklY595^-f8zW-u^;|1`0Gl0@K>$guFYrGujIX-&n)RrUuz-%ID33Hh`u?7zKmAkCx3I^Z zzE$?PDBtP)B4xL&o26RUwl-3eg{6l?>;_C9Nvz<)Su+{nY2B=l;n4u zUxVNG)4$FhSNtyd_G{|n62Ni#IE*_wLO{2dJ#ORY#2%lc=G6Ru0RHNe65rzDVe)y~ zALV&8Aob3EF15M(l)oGDDj#2P@Gz z{wDu6}RUE1Vzc zgYoj%FHD*;<(;|TP*(kyzXj$r_2`fAAc0Z5P@M65zOn(@!uraw${LAEV-Uptf z{VVcfQtWlFEcW_jD*oj$Yp<6kl|I+`^D9e}D*ojb@Q?YtoQ{X@N}lI$JeIQ8+uV7* z*y~+g!WMH72ivGe@yz5_oL8%F`nEXA63c^4<8~w96n0u-^q_jxlcTP_rFGbF7~rgr?THy z{$B16A--r*#lLv{A^xSa4gJ-y7k0+KAU~cbA8N(JC+&6p-d{&v)-NBomF)LouTSD` z3Vy5?{+&Ea`j$I9Dn4y8sITH%(4)k=&nfyh=UcbwPe8r!r;2y4ZLfcN{Pke=y5^^E z?H11teGU2oKkNPdk5c~gjpTdepZ}44zpW}P5BUK8BtPf9vXc+W9@resC;8>At|UJf zIvxK2p5pIy2|o*eh`sLdli2HB!rxL4c^Gt^5 zmuF!-(8BwYQ^GHRKWbCzin^sN_c4UuA^-TZ{N6$PRPE2P{-L>_Z27qd z?R|c33wroH>qXzTou&Tm;NKKKw*~c8@H6O9^zDM;f5Xo=Q}N(`hTi|!-M_#1CqeMi zfA7j+CDR)G9Ob*bXI&pw>Rb7sl)fL2a${@oMV4_t8vGSj>cZd)D1Y!O-?K)2Lm1$J z5_#`h$_K;X=cQiohx_swdGLVu?>}tid)4)&dd$U@8y8F&^zqEgsFRM>c{2 zZp6MC{4wU=+amYp0&73_;r;5iB4+pM_7?OP=n41L+c;a%UnnD@P5yhh%7D7;(#yn9x&fi9^Lie#eH@3m*2AbGE)5&EWH36 zv_HWz^kLKbadrQl3p|MTgErccPUHR}2jP0-z3%pQ{FDFbavT3GHW}+T+N8a_A1>|N z+F57X569qN-lgJC+P4#bd-R`k{a+1}_et;L{&?Jm?_XP!{`z@;LCsI*1Nv`TKc?QN z=6tZ9!+bFQ{l(nw^T`obOhUt#llE>tIU>ZHPYy*hey_ln=eOi{z?T#JHwD{&r`OZR zKi0nxwF~}pvL3vDeL~8|?E0wr*nB0(ufX1g9>Bj>UJi2AED7p6%ANzg;v&zs*(rk@54Bdd=!SCH(x;_uEF}E>yEUexjelZK)@HqW{fTpv{)I z)O_CL`2E{e;8*%XeHb6bMQ)8R;y(hhvdr&6AIL}H%BWZ41tn2h_xjOa*v#)kZGUXO z0&mx>8?Q4yBJZcSQb6H+w0ONAGpz>wsy*^k)VI<_{}`_`J}BQe@cTQrcH}E5#6!(o57{4~eZkMaBJ|%e zM0F(dr#_6^kWk5%F~6bA--14dn12NLFT#J<#CpO9`2_n%#gl4ybMat@^hbGy`dmER zX3JR5w0wM26^-^Khnd-3Dj$PMEO`Wmdd|!+RYE+jmA9?&rOOx`djJ~ z`D1=)>VuNlEYvU3{{EsX_fov8dfvC)=yC8#zMPXRmjqtO*U`9_pO#1iK{&3gkcW@{`~0XZ?uOGhYq#5$AKC46FAeh4_r)ukZaj+c%y;E#Bkcct>oR{$l7u z=2uYuGBm<|3ib7*4SD}YwO3{4&mp`HzMc7A75sJb{j`Jc4X&kz&wj7o1Cr}RM?Df+lMF8!;A>U*{R&15EmK74QVJN@17 zdiW_sz0%&=k5QkLJNZ5OE5-^xGGF-PvX${(s87A0#d&yTqL==wzFqeBVLaAKe2!@S zvFCWeS7$sf`fN<=Yvgx4Xz}+!Yf~}mZD3jE$N5I58_16~KPTb)iiVH)iu)wLk<<(P zfcMoTyl>!pLr;KL@`)<@>DST!9{71w@c!mL@cx#D7xP`R_PVkcZ>*1V`riKi^eN0` z(TjhP)rRm>_FX)Blz%Yth53_Sg9Rt^$9!tZ7f2>sA0i*yX%;*3(jVl_sFFATLHuL+ zxEJu~@#Q?N7i*>4i+^BD#voGJI?Btu7&#v-K+I#ZtHCZvWzVz=2f}Ffl@LG8W>>7Cnd>}vd5apA} zpO!)45 zYtUo%>!U7THSiHO_3C_XkXJ0mQJ9(z^&&v3iUuWFw$uEo-ji%(+n8>eTEniXJK>m!cQ=F`CSwE4y>lc{{#k4Zjl$#1Rk^Df#8KYz4SUQoV~ot1ned_MvBjl3iMQ~*EZ zo6FBF$hPp`SWllvj32V{1@pE1uk9PiFWrHXca(3TFo3p?e0vAqhwI~k2v9B0AipMU z|Jd(Q-lgRi=}Er9{vj!!deQ!nlTSU!7j*j&;l&pvD}Ua982R)2LGXsOM;BO6%y&O~ zYF~Miwx=FU-l+4&&F+-Exvk`l?5F9k@Al-$RmhXvsFNqyKNW8)dqU`$^xk$RVP6$; zBO~ZR@dM?}w~ale{M}*4$cVLvAYZcI9@X{}1RUkf?J+HH!0%Y!Vtelh69k^2ya9iP zublb?-dyp8_EWECKkbw+p9;K2o_O|N0^WrEB*?{#js3)Y zulU*Xj}aU%JNqe-&lUKEy`%DHJ_mjf`7sg@f5sll$Iy@FdyyZ=DQoJ*{^=F_N4`<= zqgUBC*q_MxNLI-kdp?pSJm{gMtD$oDX7X125{iKh1F645dQXQt}Z4Uhucee+>T{zi9Yt8^v(JD_jCe_rhu{>Jzx)O>UI8@0dUJn6~g z&po|y_AIDR`D4H@$d7wgd@meAmB-LP{j@(OB!WD9ne>8uz1CkLW#)sWzv9nu9;WoM z)vxE-p7y`?S4epZ@iJInyFR(p`8?xi$bV5#C+(+ErauMzx$*7M=U$3itX@^X?EtN0w_O#H8LL*dN@U zK3_tAQV)0wx$$w1FZA`^WtJxizseVU3;K03k$*1i7#~mS-zk@m4&#NlCntp-c|J?} zZJ!=z{M!Z63+Od`{lfMX$K!b{=_#k|eVhL-w=-YleGgxSNZ~`yuZfRH;iFI6)5w?W z<_CQhMi-`eRv`Wq>ce?F_egosf{=X1ZQE%hnE?l5Ko~Azr_0<2@yz$|`6McN% z`ZM-`2j3%pZ=6SqGCuH~jmF27epdY#qv-~$kjwvvdaJLwKGB7PtT*|a0k6(ihj<_0 zvk;$?`3QbRKO?{GtIUVz;C~n28~OwM=S3cv^RB({`Dwu~`dY;+A>Ze@3xLk(uWSYI zLthL0n1A{{m|1@pKdILL0@we2zE944clcR-KK?l7zPOt|g!_X@BdXp2*?N!H9iwd;AId+8hP8jePn&$h-c@NhgmcSRUv6#J_p( zGVb4uYk8#UXLxEdA&=exe|%Nb59QI@I^RFvPr!J{Uptk!kMpLIH+uyWKR=c{ntVuk^eMn^MKY%Y2 zKV?5%v*%H1`zi0qCo3;$uTdV+-g$n@$|GYx*?3oNKgoR^=$C{&M0wPml1I6eJj$iy z(YK8}f`0Y8X=$e+uBsLLMo3rTVA+w70xEzl*#AydJ+xej%}+ z0KeEz4*qvBK6pg%3489L<<%pHU*y#u@Qb_x{J>Y*e#%7C%DzFh(5uF`9<|V*Qz4wIuyTn_`{vYQ_opCNl_Bf{f8HKp5j=j11V|6^P z*Zz)roEOxQpHw~0V=G7x{BxQf<^3iV53IjOeQ(yrqoTec=IrpJTblT*;QGQB`Mu6( zyD^{e7lf6Qx!?<^{{TdIhwb}v$#~UMIUTRccvkpl&eYLgBJiRN|40uEOywW>@Bqub z5b%CE4+N_62M22SKh7%sz&7IlxFG%ydEW!@;JuiT>n~-YhxvI+4=5Kl783K}{$KXz zJ$X5A2R~mR{)K)d-e~dy>Bp6)#6NPu#vA$XHOcwl1@gbdHxNJZlEf#u_Im%R{S%;1 zBv@s8bv~Gjm&av19dC*Eai*;Q1n}qL(xhLX@IN$-*TC0Iuz>#M$N9%)iQib*!#@H| zh@bI~Osl&|8b5%yto$SJ?|^@y-_(409;(V^nLp1rF<#<+A^2xFnx1Y~&l)dxMfC%C5BY~&BjDPy)olW?W$JeY59|#cpYj@;>-L3swP_3OjsL9}&(yIj@3{hB@NdnsyH&0S%BU}wP?mfj zBJbDq{bHlPa9{naa^GF)=Xh=H2-;hJzRs^cqxCWU1Fw;wH9UAv+u0v)wjlmzHIU_| zyyf}GE3gi^Qk9pAGy~fgh{?FUo!7i@WOo8QHIt zt^Y*b9~O9MFU2d8Fu>{inHkc%JI|PzN%}`t53U$^A^#Hd<$6am4N|ZDLkW5S|70tG zU-mC%{Q*BjFY+A-e{p@2`hTWO^oqP9zehht_(88>G&{R$#>adGeq#?{zS#=k|1Awa z%4z+7V|_=yQ*5vI_K#HSF(B#tLyW&ZlgMA1k5|_0_u?N}35ahw4-x;!%(TKk{`S^Y z@Z+lZk3~Kr-WKw1)yg~I6X&TjO8>*2zxpi3JFo9+sZ!jZDl1X-xNLj^6i=@Pc~n{YCgZ^_E#G_ z@)e3 ze$<#h@HLadm*@k*m+(LEQ}yMS&1Yo!|C+Zx$fqRnAA8BK5c7L*`E~KZ<(KCFi_*V} zugO*be?oo%{(a<^*f-YyyHkFBYVdP?wLZS6?IVFdA-@3s9`eh`_Z92!-H~4g2Dg)E z;HO2A4=SE)Z+{EqDcU=E0{RHo*PJ{J+h4WhRms>}+Fp=+4>jf0>I?!1to(rdnq|E8 zHur-VKU*oUCgm00>$m}V@7XI4BClk8vA4=IC2zbeKUYOcm_Es%<^%I3ZA+G@c1IR0ve_qMk)m`OR8P~s^ z{6hZ91+tsaFX#pK(gN|}{4FakAEn4A(6{+s?6EZ^Z#weYKfE$c*#xdK@@XaMZ#k~& zjC{IzobaG=3HlK7sT2Cx^RMuH=-q$s{4Zez$H^~g`W64kG2s{IAHng?ud*KeCiicr zvcXlBwLiqa|AqO4m5E&NOQ=`$kNdli<$^D>3@VlHAI}B9EcNO7v2Yv_DO$77@rsaiFsc-7hh24J@k)Y{9L>^)qttG_z^E21NUWi#?Q=n z@iUljJTCqa^WJl<^A2bV{9vE|fcV(q4;fec1Nd)9|K@$=9P%ZovYe;8coFZtvj_Bt zD1GVn2P*#ppwj2BQZBNG5dpW?bNRd9;099oqmPA4gEP@!q@h^u6`k{U&p9_Wq$yA*lY&%m$#ID z{Q>pslDsFRzQ4@!9N}9M`nm=EY4V@m6n{$Cw6rwH@n}zCzS*xMf96+3o@ZDNZ_dpr z`};qt^Vi0iCEiz&{U7jA*i`wC<{Mk2eIeuJGsX89U*w0cU*GlcWAu@nx3T?B{VMoy z`ys$z1-#Z@q4KBs`sa$*Kl1O2zhd0_E0q3|@qoWfG#iM2mHr)!-x<$KJl&j$r;8R2 zQod;a6z;FgG_Y*-W3<$O6;${@f0AF;*zevwf3Wblc(`SOkN#fzH$FtXu+hi6_%|j1%C#xU z*DCk(q|EywlwW^_ZZZTm5PwJ+@h|EJe1U#3e*H53a8133%6~1!Ug#WEP z`vWJ>~D=co8x^J z;ZIMVEi`^Z%QN*JvhX|jBa>MQW--3lBcKQRHv(A?;2-+L@atk~zwkKA=pX(aH($tu zFj^{rK*8_ke#?y9Z<(b(2>s(d_@$J*TT1U2e0@WC$NMd5c~=u2^#6(E2l1u-0S14V zpWJtG@*3-7;?wFNVXz$4rx&K>BUY3l!RQ#W?ryfckivPothw406%R9(FInO;7 zlnB4sU;MjcgcpA(fnKq{IF!794EP&GK1_+fW2Zd(BjfL=W|H=pZC|hKvFj=MrQ(gP z{Q3?d37GE>C3CBl)Rc6Um`qKUj1uh zf8o3W>svVM$wSDOaAtfwA;12$wa3Ih3IEX8V>;esdS;yWV+{Wl{#$F0N&CW7${w5A zX^-7M006Z-H}qPQzm)t+*kh1i{VDk+_hp>?n%h@?UGv7Lf0p-+o%~Yvgvd|gCmx@f z1hl*RXXk4AJKTJh4%+q5{tlK!zKeZ^^)d1a{KWGb@~g-n!|y5k?OoIx`~m)y{q|#o zAMhpQG3ZO|(T^do9^9T|__?#^689?r5B9HZl;78$1AhS?$|K_2-M87pKHF0s!5$KM zlugQ`oBn+p$RjB0(2p2UqAl)u!a7O!84Tayl->w5bO&to)i3l`r%`?z8Uq8%Y9Xe?^N|8SzCVq z=QU#uL46f>9K{|vP^d7!mC64%f%y-&4x`-i=f6vMGsvfOII#1-4EoB6KSIwB@Sj!i z7r`|5`Y`|I=KlorWvoAAq%|-7{Q>){N4}X{31#zrCTem19pSer)!#q*it-0B{}aX! z&Hgo-Zx#Ek1plz~*Wb$Zarq3JLyq69$In(~`fWZ#`m^HmBA+B)4C58!uyqUY$oHtv zM#o#Z!betaiTp%7TtDqc6Ay>=&0;up|5^BJc0Q3W0{2_Q-=fBELVRr)R59NW?_;2S zA(~SD7!6-%+$!{Q)a*Coxijqlaa|wA{YSYTBJbq;$K<}>l&Y_XeK=3}j<*3`sXu;@ z?a$irCqmkb6Z(CRLKMn=yj9zmVO%(xm;SZ?{Q9uahukkje_=d$l=Lh9y*n(=%zO?i z(!rzh%e6LsgX4!G?7`20!Nor)@MJ?D9}V#l^u`V`OR2Z;$a+J*kAH4Jk0A1W-q#B$Mw$ofsxv$3ZMyvC0N_|%7 z(ZE-Tj}5W?6I?&3KR(K`XD@KSXZSmeN>gGV z{5k9uzz2I_iu|b{qy9hwH16+}{wTyN62JO*3+9jY596m3 z@n(omka)JoTR@M%Pa-}H< z*2H14ZOS^HC^Y4bC*Atueb)4Pz#e{5`75Bm0Dsz^$9yj~%6#FkL_Pf>ArYYcAqS)B zwI^9*S~uVm{h4?zi7%r+TH?jHKD@6N1sARV0sST7;cDN;JstB`j-hI56NT3>? zO!SoU=WsuT`4ysPWW6N50A=Pg+Va|4_;tLwi7&5tKac!gSw4h4yjB^t9bSpnu%oo96vJiT9?w%RMFdvG-$g zYJ5Nb{5AA%@EbJSV*IIXTaoQ}Q16CFU>ovO2HLR-V~$f33vs^m?&B1t0j| z>+hJ~pV+Hjf4}A5Cllhb{V^W;DRytyU)?8rhWse|>-2rHryw|-y_)7f@jn`R{}A|G z|BULtBQNxY_yH`a{$Biv(=LACE#BYwjKphxhA^r7WS>#~LY()Az1k8;o!LL%rXZ`L zaS8qF{c|mP_3po>`AySzir=jNuwL=ok5c^hn@RuQ6OlQesY~;l@9!f&y#Z*=dYb!u z;_sz=)bZ$YK1%-kvmo&Kb@P==jvuZvzR06riLV5D%UhOT3LBR$kzQQ<(eyOoyF`5i zekfkY`u<~0-yH8{_#aSj;KTg~;a9PjKyP7mX8!XL*iJx`xY^2fPz^#5Pd_8Q?W5nRh3=N4(dr2EVH{U!JV{eeHE zKk)Yw^o9B(^FDq5Thaf0<3G~+2IqUgm-QbVzn0PGk(&Om+51bA z9zRNcJPc*ls}NlhdFtXRl>CwSCeq`#(9-)pP5+trTu{&MD8D`~{r{RL-!(iU-!(r3 z-uMZA!2ApGGyB{ZI`<4eclU)L|ElB<6K{J??hBps;#ZRVF}=wBi1TkN{n4iPAK41} zGyWF9ldYgX@Q2@D3EvxhQ-AcMlnwEif>3kTVLp|M5mJJ@?qihcW>$ZLGRw8Zt= zzN^k#O+4j_=KnA*msLH^FJS+Lv5Mz5_Ie>w@l2~ckHz|jh=2F@GlfXKU$?C7jf6h? z{$=PpPoM3{&&L09B+1V=j}Tv&VM+1xmm!b;iV&##JUoBD@|Ug*|3yy=8NlUd?>(9< z=Z}~&=CfbE_Ds~S^0`=h;Dqq!DAyPE8}hlg1ENGecjy0PKKC;&|0n1L`EJfw{Gp8X z8cF7JA3eeTTt0VHV>+@wApadgd<_@e*w1mm{e2>z`}?dm@;_#Oem-~AUpwK4{%TsE zaQRfR{~Fzx9KraD;~WF_{3!fGllUk9)8%pgd)$u5xJYRdJ0>m5!K%{TL zm)>7?zD#M0UlIRFes$SAdimB*N_9Y^O7g9%qRY2FEFDO`b?jf^4;;>*iIp#vlP5)= z(Eeh6^$Jo^-QxZZ@<8r`ojhsV10PcV4b=1eoBUG=P6n@~%D;>98tQTWlFo;osbKKe z@gL`l{xb1MKyhHoov}K8-EPF+z~7s%bh>=ylPxGWxP0KWH>1ojTIl^0{2|fNlW2i+ zUD}fquqPXj1{iaMW%x7bAM0m(`hzGBqPm6x%PO9vsTenP5+2D9&h}BJQ|h(<=*Ieq z#^5FzFrNkX2gU1<`>ucVH`pNf((x%b*73aO*L3@PEkQ17*d~12j}za_kAcj$roT6_ z%-6#~+n?08wxGEhub=P^!QrLhm-@aY*FRV&YL@)=GC!%$D&{A=7{7QuH)Q+A{EOGy zn*H*P^<&C`&h{T>0N-(LZ`JtneSIPLy2hvM$1+5huFs&qrlX7}5`2Fj`Q_qz!Dkck zkNnFw){zd*%=ZJrbL1$`>!m%;Z*Hs)xcPh-pgpdOn)WjO_>gTc^Xsp-^Z$tOGT*6z zhy9NYS$G8A{Fti;8%2CegFo;g_8%;hG*!9v0LwTK(dAoG-)+mSQtnHYae#^+`U8Dq zJ?rfF&>z6>5j&qB)XVqk1cKu;o}J%Tu_as*`~Ajx(XHPPn$Vt%!5`X#KbqDX1NjSE z^&{Ug@>xlKttO#&j1T%W_`OH`hDR*E1{)4w{g1OO_!oNU8cep&I{LepVLopRcWF7; z`b)?M=I?JGwDZIFH`Y&e33x(ppy#+z*8hme7uHjM;3xEj_5EhX(HG7~ZhRB(6_KJ? zKg{-r9ls49K)KKHQ~v?rV={MIIs`uM5Z{n@Uvcxv-{x{_dr#J*sSy0OrMDxXuVML| z;}s6!d(b!NP05Rirtq7MDt}~09&cJ8weosvlWqU2btsFqqu~A0f#CG(jj|l_Kk(NT zulJk`st%sw^{(b5zE1Sm{xBc#Lm~KQru}7p-)z?d?^oPdKMH#cKf?PK-c^c^6hz)| zK=_06w?|Pl^Sy=knZ$bJZx46a`tPbYMyG{pUHBljOzuWSYMXzYKiuj#MZw(lNf`-8SU@MYTHYi&3c9X@RNQTR{N@hbck z4xs;&&Hi|uakIc%(C0U&qT*zcb0NRsd%S0KMEYlZkMuX}@Y`Pp_?l%snlq~Xsi^6& zl^dpklYm)IyzQ9w_K>L8#ALNT#PSO+LKNaI9w5B~$!8~#Z32OAF=1bH#xU{3>Igpc@9`r;Px z-w6g))HFNp_48342Vf9vo2`z?LGM}1Y-KWM&(JVv=r_?P(BWlL{T z&e!D=?eqDeRN2Z`w9m)GXs-2>l)KTrmN(Ex;d)mf`jPSi`r!)k7z#{b#$;R!5Qmk z`2K{h2R-F)@;$XGT9mM66BvJh2u1(+5B4&?&+uDWgEzw5#P>8)o8l8_P(`^a=c$}8$CLRI-dr90ZTz7L;LAr112O{3;J2dIo zzJg=x7(0?a35U%|a+N&So`9<#U@%5KW!4~}Oc(3ioH*?Nj zcpLiIw->M;r=mhao+kJc^R3B`viKMe_4&9^07evj34Nbpc~S5y^xZB`U5P#v`d0Rg z@RZPZr`!LM9&d9!jXu7Navt;1<$Je4{~aeR{bRiFn?3423;E|7&X>Rs_?ObZZ&LsE z$OAU~lhVIkiosaE@@z1w>xCvSjg$TW+WkeLKim(2{33sVR&oD?=NI1`(DV#``#thQ zmpniy-yiPv<=Fx54^i*v59h7mj}FBj=nwu3@T-j1bpY^i{x^kRQ78dk%s)3E@ehJe z$YaoR7s*4$qrU;driwEDSNsj2M{LLqJ@yGb3a&l+5&G8j8O9zxf`3SlRo3x8O^@%3 z!ToXQQT$Dg9)AJ$Qi2{?_Uu=o$HAhN$Dpr=r^i8jo}fpTJ$meQ^!O!_w~#k{j{`q> zuczCSw+o=RE+=nE?|aebd!Wx9^w^Q6$9CaojwkkDM?2S3eu^HYUj8QZ*e>!==%Xe* z7E|=tAq*yKUXva@`l0`8L-nuZE$Oca^;iWsCD6R+(=IE|L4WyN@hBJ^Kgdg=$9591 zlCOAQesB4>_;B)3(_=^h?a^aN3{*pp?J48d^yHtSzuqMM2mw|d-S)2zWq@T{Q>W%wr}BYI~8S*x&0FM6EF7xSo}`mzpKbM7N2DM1>slF555QV z+8&1efiga48U6{>cfOqG*UEp2@0+5N?0`S9uM+YY`k`sPP4OFXQpm!dpW@%d_k~Jd9>t)K{t>>Hj`xwI zUi%yK@1^XA_q_Lh$sgb8aQyLB2K_;}V0?)$`9AvlPM4xh@+bT^o3B9nEN`jvc{$KS6qxySk)BoG(AO7S9T@U-B z^JSqLsIQMh3A}f(KYm$x*TkO<{n->B;|Gv80q;xHk9?P+xe8bi zpVSZg=sSm%td{*kJ=%Ba_EqKwug^zqZEF7y{<_zC!1Y&^^W!}19p!&RJ>+xGdl(77 zYxnQV{;dh`EsKFI>-Q||>7E|jAL66(H~F4v6HR9_DM!>!); znS9id#R7Tt`CcEtSnqC9gwXq)%jmCP;>lfq4Xw6+@z-~T{cNxO>G?|C;h<|v^$+?9 zEAVG-fPS<;CLf(>O^u(;qqW0df0q48nfR+@8*G1={{Z%b+>g{X9T0lRS28D(^<5{4 zzbxxz{A_dZ8yH{vLolCK+duk)zrB<21*8YamjTcZ`_Jg_aXvuGQvQlJ>95Z8@&1Rj zhdl!Sq(TS%8K}=!3jG!y>95en{tBu;_;+z#9sWb{e}I4T(aB!c%Y3CjJpXyq)nk2g z!f^*U-^*CYUkAaPDNY?6N3)=&pJo(Mg z1Mr=XdRtCO2TPn!(?B%P&2kUh%le)=N&(T!^7kd)zD@YWomc1BUY%dl-#nO@->Hor z#<%=;jvw-^dA2A2-T}XCv(HRejKeJu?OFQFJ?c`^z zf9f$mM}MFfw3qsU%mJBC7`2N(P}Y;{ADtMWeh_-c{DeNP>h*?yTIl1KT|Lgrlmg&- z-orZMJsi>Kq_6LBz55dQ4J++Of?w19!Jh*E>!8e^?Y~QUJkcEdy6zwRhx%S6|4=XZ zEfiSpBmTZC{k!pj5AY}bWmQ8@q!(pjENOZvcC%d2>oX7yiM;md#o=Gpqh0J@yB^8; zV7wkH4+OscR`Nr?tS{t2rBC=-;JtSl^XorC{o9 z$kE@2EQ6kmzj&DP>$sz@e$og0=Rc?61wO(G{M}#B@W_0cj_^GjH~&M;!9Q~KH`d!4 zEqr6_U!Ipz@b(Km6lDUW7m;T}YJFISy>u!%QMCR|j0gYwpp|#xKMmUzzp*{#Nnc(~ z0QA9fCEI7^4ax(sCs{B0K>8aRQUu5G*?-$fMc}HOkHQwgH~AU$15sNC;b{|iTOqH8 z4zt`xd47lW$N7R6?z5=x2cpwQSs${jujvo#+2q!f=TjcOg#L$m)ci5Nz(3SV z_=ngZ>4p0A1t0&=Z!c>6qkf<=G{pG}JoM*8L-n>l`5yY>SN!jxFa9(AJ?vq?*C_2R zzw|o#5c)dg*lnp=2 za}bJO?)3tHhYyq94ZVRMPFngE{I++nzFpxL>)qBO^d|Va1$sTv&2l^87knQ-N_)`I zE9|kf{%REdlJysOn|%7k`Lu)g&2fyEmHT0`UP7I#^a^=?3S}!VqJaYSxzkU; z*DvV$4`5$c4j*Csypx~6-!IzssBdl#{tK43g&zhg*xzA&gx_R+PS(r*NYe|>_dBir z*8C{;mYyHZUsLi^A7@$l8anzB`HA=oW1mUcTd!ftyA#UX=J)-SFM+c6xjuI;qg)rt z{)A{;@%C8tMxjRk6K!kyj$Y>fj_X%^7JFum-StCeHq`2`-Cj3`8K82 z^RP6q^Oxt!6uk+51U>xTt!JPETr_+YKnr}!BV&T^x_Sja;8XTbla$#%=zYKVL3Mth z;{*F!YUUrAq(MY~^Z%mGL+%3c5BI-c-d_NC`H9P@h}&zHk~f4w`vgp~tU;s^Qp{YCK?>;Bl6 z^ry;Q{5SVx3LYLO`0ynCbATUB^>`YdJipcO;C(g>uj2x*IEA9wR;cuw# zj2l$^8KtPyD{qC14-{fo{+O$XpQ|W)&cz4Twb$cQInM*V7AnXG0a}oFI>raaK^^Pm zJwxCpj1S6nWoZw8$YwL-M{!H}J8(W0!uX^LRzBYADsy~Gz{Jmaq+exghr z4HB8Z#7}0#KOpn@9{pD>GQJmY*h2fKp8I{Qe=$DX#_=Sc@PpRy#(JI8Z*MU^>WIK2 z^`I}<%TB)EgFhe+rT#Gc!+JuW@N`wl(-D@liW#X7uGV2btqsBWmcqZx=TJjX@XNV| zU`Cg5zPS0y=>~g0N6JkN!SlKv^AF?JRt_lhg?}!L8xPsCtbZ<7GWDR3Le$#I35q`t z^plB))PigISBTo%X-`Q#zAxasomH;feheg|{AZXi^YxK?WPH-&#!x#+eTet~{y|R& zXaqgxa6S+G9gI#$8GjOan~zRyD-KzLe1yFk7wi7zJ0pwM{)-PE|CjH)v!Kei;9qOp zcJ>YI{WwIu*FNgk39iuJoz?>balG4O4 zs;v40d~$!|*~fDipW`;QK9d-hFcAnM%a{(+YUrS!iWh;$x4VCcX^(r(lmA zLfP~`5O)^|ueJ~C2jVj*zq8Px=L7%DHtkhsUz`%xg!qGG{>4UqUsU7c`$H(dvmp3D zJ>m~fFg{NB4frHI5FVii(9b~BC-@Ni8twD(V3@>T9%UbYg>A)93V->yF=N~7{%PM_ z%OM^CW!PH{sy*-l{2^W|a|-o({#c(7-@EHh6RO2fjXR>~Or=o^N58vpoTks=JXzBlq;O~saAL5M~2Mm0G|6tT8_>w2Qj|p2l>7^C-z=Y6@D9thJ`-_Uet%tAq4#C?}48%8Wnrr z&JLUIH9iC$$isr< z?=bk}`oMzK}B@3+qu2-IjaCW1E}oxO z`?GwT|AyTkT{u5a^Q-bJ@K0;K#_|Jy2!6*d)(1nt+aAmP|H|zf}Lk?@xvGXqUAiv)C@73GA&iT^6 z>X!~3JBIZf@@E$=Wcvtw?cSNi>Ub-hck9sqrpBZHmG0J|=$ZYa?xjQRXSts5;h$NZ zuQ5KLFa9Uw<2`l{gb{s{Q%bhnm_k4)c7XRGu^zRqQMh%fOk zmxM3tOYl92PvK|%Q1Y-5`&;R4ZfLw>|F|IGK4{r9xrhsPLcoRs3aswLf#| ztlFEN&*0Ce_@Q@cUhT~)wWDEvy9@g}SENB+DYWB!i(Ri$sIyW#!j#Q(F{|0%&| z`O|!sfv@m4{rkLM(3kSxrUvGNJw9uDlKFKN{@&zHiNrta!M{}b8S;ev7|ZZSd07m{dwEdj=#4*A^u*<_9gb8{ddan_hQzklt;T$DPFL> z>~zo1+h2?D7k%RUp_i=S--yZ&$#-ES*F#$iL-L>K`!hfUP z&JllpE5$>=XL~lS{hB}@`=g7Bhpn&Bx12BZ`O>7{xj$?x!vlYCKiS$~x!oBoFZw)Y zqCfN7&iDV)Y`=|z zK4-i&+Y7h1zC3=sZFIRk`eMQMAo&;QmvDY1$bXA?-}Yf8l!0%{_Mxnwtkg7r&rk68 z7OlU%{$l;RWPc{=W4`xu7GXd5vD$B2Ut6EK+@`-`ACRxpUjNqk^v`~6s(-A)Xb!f5_IxefD$9_p(PPI--y3B`+hkrz24w>_6o8j$d20 zhp|2Tw+a{dC49_ZDE;p!-W@OYM)O}EEA_TV=j>m{{;)rzm3qN9ZT`;VHP2*zf*+Bu z;nIFr&C->KwD)qtsdILlCPh5`iUoNkke@gvk_76h)IgelJ8zo+TdOz3qe|ZDo zmxq2o?%SAuQW1{`6d$m^R_+t{o65HxpVxk!zjr?CqPPM6$KQE} zE#+>*!^QhSXdm)#+@AiCpN7_VN_iS&R?Fm5-HGK#GrDgem`nBlL*17_K1yzn{_9P8 ze|0+Yi}QoO8sS-2z9-vbsr=-!{Igch_jEnuCHPs7!M>fe{3{>iUHNP5FQ)JD=g8+A zVuE|d5Bq6ry;G;f&mQ0SsQ826qtl%U{<8XeZ(sc{iuIHJQogU&ADsV6zI|Qi5zv2@ z5BuYbEO@$s<)z-ooBMOI9{J$=R>eNl(f3Qr*D-#95BQJd$1I_E_z9odFTKxw3<;lx z|11QF^~>^4mX<>Qw~*g`+9NN&6#IAk)5V`9KPt~h`q}w`XPm$8`99i(f3XL{2SNTW zkY7svKIr^R@)tCo^JC)r750F4CadGcbSv{)$bT??G%Mt*-91we_yS(7Z*ABUHBO-@_T1T@=(cN+I2Z7kR%_oGugjp&Kt4c zKA-o$;eVYcGXDxH^gZ!O;4jJJW1atRG$yEu`RBwR^R3ZRW_<1^N%Tj5@%`yw!2Lb^ z)~Xlzkp4JreGvFv@)zzmN%9821^y9#(;w&GW4<#i&tG$}=srYH8C3y(@$Gh+o z`E&ftpYSXC$NJCj^|`;9M$j**Kj@MA!+yZOLH|U5Vt`)XP(E_y{vwwv`gdLPsqi2A zf%V#&@?Rr=P*46^;=k9`ezNFamqYrM@o`7^oSN49iSY&eltVsT&>xgXrerTe{XY6a z_>A;sKFxc>wx>?9vi#RcV9`(W7d=jfglf}U{5BWv8?ZhW{paHP#WCYw_dnPmgnIa4 zXioM%!MD;Ks#nXLFFKlU7YwNI3w@5}+x=esv(@{@4&{IOe!YiJ`(OA^ht7Z1eR+&u z=h-Xi4;aYstiCZecz^f(p+o1_#`gG2HNL3b{UZB+@T1P}8UOm8e5KW|)*Gt#`0_{o z2lV;QLCIhG>R9oYlt22_T3zyOeuciQSJlQSJO4;!@}nfLcP~6UpJ}z%DC04og*St_ zPW~nLjj6k!Ux9b7J9MZ&Siie{&@QzOe?sk#4mSWjri;idH$vc z`U!j3$oW>ZU+uLf>$G?N66-(dex0Vyqu{^sK8F*2ll&jOUv;%R`$N0O7J4lo zN4Eb6{JMWX(@*&6Ei^S=x_^i7r{n8R-tv9R@5$aYK*U==Lf-$9q2+(}R6e%a8%6;pe99khI3G9QbC>?d$2CFgPvh5_ z3bmo|J^}5gOpmypI+&05(DE}ZiSYgMqHk}?^qDgK_nH6rIPwtuRo4$A0N`KqXFT60 z2Yu3d(Q0?p@*4O@_#L0zQ+u5k#Q#|Bjk^C_PyUtHzaM|a`jh*K3O~{Rz~Gp0-h$s2f`WF;`V|_B?_a{n!E%%q-+vU7Kh7bES3q7QfydMJo=|7yu$naM38QuTMnE`n3 zPZs z{*Nw8f8Zcj;H~nb@p;1e3>AI~=R*zeFKhmVUx|-adnb<%!W-sa`15J{l=(lPzl9Q? zJ(7JoN}r?iAFt47SNwCz4y57x)o09i;s|{Le-?iK5PSyy953{L*8GnT^8fwmBm7yx zXW*xhuVZ*M|I=mu@4NziP97hiPn7pU|5oAmr{rDquE@LbIeUcP$1C!_!+3Myy&cO> zIPY`>pTXgf{-8hjXLb<2K<{ARr9UP=gnvYzN_=VfrV9Uv|FC~zuw?(xZ<9fOc#j-? zg+26vlDm3u`=Rn1D*A-)S9@cA?{!4>jWYZ(>G(nTe*agkukY$Xx_Ezes~e7!czq}M zZ?-44Kdi4wzyClEMLZvXeJS*{{ytgJFUsc*_%MIT-gYM|`ds%HO%;94e29OdJY$an zJtwn0ej@!{nr>$cq;RMZ{itG$`XuNl6|d_}Lye8F$B*S`Pu z=zQh>a=tCdQ--fHU-eg64>7&Qi@eew{>uP8vVW5Ok0Hy8+})FXqpRJcRideh>WV`y>N@%D*^S(TC#C z*>Inw{4u^y^nND42l)x>hn|o6tDKhuf4s-#_ukMCQGU4IPw-}cs!{ko>g(c9sXx}M z^^5Z*|FG~s>xbYo#LpU^^|_CVmw)f^@03HKgjOP7x3%eH`Ln^K0~H z75|EV{`2GCK<-NXtNwz2&-$d|U;E>_FB|&jc)7!%%Zg9Aezvk-FxMOVN#ox!@oR~H zV|;y)KR#0bGaniMT7HC2_~q&Nx5>i|ygz9ED)H|~j(=OePq!NXeq9b#v^T_~TwosK z)knKy+~?|eq{P3oN8;bpBO0#~|N4A)HU3rnmi$HH-|;qO*FW0FJ`IKYZZse17xEc| zAIHP!j}-s%ACH9z*p)c$nw7dQZ=@#Qc4 z81Zno;qyKre%x)&c89reoB7Yfubg++c_?}c@gC!^_9p%O#WUk$;F;}?jSCfrUT@fE zeWOw68^0I4Q;Mf)&wA59ybQj^v_6sIYt91}eo(xCza#^iCWF2qzN3Hk z%ZmSH{tNz)`HOnl|J*+M??r#ho{oteg}h0K&eLCrN0L3Gzv<$C+y5*3DYjn|_U8+Hb6k*~;e)>_ z{s8k=yqCu}{wn?}`PH)j1wVp+?1+CjFn{cC#hzI8~Xy?0IGW z_(LiFtMpgFhu}LifDhsWUvOZ3qxn_WN02|>LpWWXzvf%wIrBqE2TT4-6@P)B3Vy*S z`-_GDI4?6eU((fzR6VHMFr}g!WffgeJA34X>uEdG5uKAYvhGx{&C*B1RB`b+!}-XF0% zRqm^>ybjod6dx4$lDuj@(l3>Gb3k6dVtXig7}Vc`^7=GAlRk{_-X|PN>%+(c`5BSl za{ra}D8V1MTXQ@zAN65^H}J3LZ~L|o9reQCcJde+G|bATWx+2wl8>Pcnr&3-W-?8SHneb%S?k1M{zKXrUY zyV^n7-|f}C9~{;jb^m6=>42e3{(5iN@h>0wzR*$jZzT_@T<<^6NULw^V#A)c4~c1MMt5D#NdnI8#o!WZkgt{?GvcE=~*+9&=P z3F~8yKX&t{KKc@xyYmRfzv-K-v@a%zZ>7- zd|8#=MSfo7`@!`D@&$`LKT|(74Nt6e(!D}PJ$yI;}Ah9~H^uzzFvHw*uX ze=GX>Df&x4eVD$sJQaQI@2mP+{8Qy$(>I)-H2-Qpb>RsAhyA<2|I%+kA6Z`o{yVZ? zK33?-_}RY6pRVv<&__Fi`VRgRzh?Ux_^*=B@vG)f^VbLOClz`3e(G#x{ZIO-Vfv>1 zRNfPOioY_yKaqdx>&Pnn74VVrff7FK-v)S{-&OIC3qIb__`x4e@e}c+$FJ(=60aWF z9}52QWcKg>GyLPD{_^j4`6u6hVm8Si2Y<@HlRsScpBhi)UrL=+^DnJ%;(mqRZ&ibmk7@4X+weX9aXHU&hxcB4jUmy$fia8zR!;BrnDbMJ^721g0T4K@{|NnFO>-DDQJ7#}ocbI&~iK@J>zR@cC6T)ZAzns!8jQFEFG_8C^ z-;c+B-fDN)?=iYR^1;YQ9cfc5AUzE6d!SdKhww4$`y|u;Tb+2>;fAe%Y6?={?n_{i$vv6YTPnG^0U%5Z~Bc9LHKt7)QF`rkl zKO_He@H`asbw0HBOD!LZ&ObK3=nsA>_@bWvxUh+z`;&j?>nejkK>p)u?@Y`OOYpW9 z3%v9f@n!pNcxQRQ8~nulPWrF-H}c;m7ByTr52O9c6IFcD-(YM+whR}sqLxwX}-cw!YAoPiT^@> zmH1EioGAQ7KG$k*q2%Y9K9lo<@CN>~z6|tVID*gC;QTA=1&<^jCknmkAOGzrJ_qP2 zd=~#)^r_I_`IW5-KEg%+B5cE}|r}oc-JTQLXugdjl>8k#h{7AigP(J4>_xbo^eV^@~q|bsrFZ44!({Vnc_m20641o2U=sk0ne@%%&k3+4TZ9|^w7dR&O#!+Q_v|Gz-| z{?YeOhiF-UoPTQn$oZl# z9)$Q^`k+taKUw%|;J$R~X+Na+G1IHh>KyT=;|269@5@e|*LdPj-$yz*mG93Izx0O| z*?-zA^{vI6ucrC*MjVfZ_v2Nba{%T=2I#%eJMOaIi%;e};I0 z_pK`X2k0l>PnlDD`;X$+{>1V8z6$VizIjsb&j)`_?Z=LX_ivCA;2X%t_j&N)A}{Mh z)Hfxb;rr!dwYmQMVGVlZ{k{JDyy)loV=v}<<9@0(tPkuk9@jO99#OuvKc@Kb?$1I` z#^?O}$&63FXTAJn#-HrZ{WFJJAMkn#_`&}Bei6^-&Pn(Oa1;M9|JDA&nc5u&2=Nc| zKUMsjJ7duEj173C7xCa(>x)sx=ey*KPL%VskCi`qf(!Kdi9fj?UGG&GAu(Rm`xggd z$e7>CdvSAuKgW0Xxqk|NO7N%iqKnGXG`)C_;E&S&@mE})?T;^--mN|F_s#ZCEQ+2J zCm4|Sv)yrDsDG$>-p!9G4sN9EeXGrI@hh&TDiJE8fKFF!j@_yPQf zt+xaI#*h2Gq2nj^rGL5qc6=hwm+@pz2jN=`3;x3AH@Giii1%ysQ~8O`-?s|LuV5y$* zS~?(FDUZbfpZ37d{Ki5+9?IOWz=K8tmNNES{^kr{JHB|teaYdx!C&&W?0;8)u7{@Y?L$rJpw`o{5r^+Vnt8?X;vsn z{X2E=F{yI4?ehT~xKXdbjwSXj`C{3rau0I5Co^>E>XpQjG=(fumEuVT;dB|H|sNcS)D(QNh6*UA6FpKA5yeIG!iKlk&EhWFO2-z=}K zEKiINy&Db)><{byLFk+K-}vYKS^Y#`_?!EI?BAJQ#`nZD_AAVv{@4#L`~g1<$S3WA ze?H6OqaE(gnk@0=zj)j7WqjLS4%6SL&1)E+c>4aS`7-|<@W*|I$v)CQ=OZj%^Oi5p zr;j%*&&3`N&r80BC122|#r+9Yd4ay8SwFoe`4|fhSJ5|ReC#dwtE{I-lsel;?;<+ zPJKlA2!TKFA9MRGA0s*s80v$(j4pwnc;6BIjW`}n@<4gS@u$8AKfGr%0zUWh`#YR} z%JgLa4Eod;9xSx>iwfT$9e=I?!n*PUhYU@v z!~bzV(P}>wL;T16e=5U|A9Vj;y*C3w`Dwo5FU7Oyr*OZY<-IQc4fmypUwvI*)F*ns zYq+NA`+MWN;e1Q$FXYek>c;WWZ!X`9^rJoHVcp+IKBnYZ^}~7(_wI#%)ewK=^_DBt zKf|9Po~qjcvcD^NWqV8$QW^WQ+8>$md*pFHsosbCzZB<7{P6Z$=qKVk_klm}`x^gf zoImxzb3*zq#qaDVk4XQz{W9%ierVi}MSh2e<*$YL?^7NfJ)g?-x7uy`Je%_=?a#10 z^GgxG))y?#{n=`n_?4*}|Ip{a*#PR0Bdwm*j`CP62RiST>!cE^t#CxN| z)@QX_!QS?c&mqqveBcnjeP@^Yp@1*d-!c71WgxP=bQ{CcZ)v~$ zc()bwiC_TUweCpBCyV;(cy})Jr+Uth%=L$cM6bh75s!&p-Puv$H|+d$m^$)2imLu zyEl0s1bVmL_WOnbKltyhuU7WcL;v2dzWXZo$5YSuLmEHHQ|q1CS@4&>ueH80GIET1 z)AymrQ$6_<|JLy!@_4BE-2Ecs3qKzp9B-~)cfHqlRR3$E1%HC~^OgRo=lz)IuYpFj ze|x0h2mcBGdsO-}<%95^lb&!OC&{@A~p(|V5U9p5Z0@@>#h zzV8(IdNtPbJ^pk(w|D$fx$p3Y@}GzYUW@Hr@8ck$zu#0n{(PxNAI9qfr4JqdSJng8 zrO*AmeE5Eu`S)4RLZ6u5&<`WXgY9|LCs`jVe;@wfz1q0Ii~Ky6e|$pstM3K>d$*+c%{}BJAd*)P*$GP8grF&*t`-i@-obj|?^|NA-eE$c% zzZ&ro;_H?jEc>5YuQ}UL>*9YRJ&7L1H`*oPi!%O3xnJ7*e<#F#`TOQukZEAj76zCV8a$oH0S!~b|#@KpAD+<)c#m&+yJ5_%l< zhis1|FVUaC9+!9me;WT}Nb7}`C*vRVzFO!v5RW1sy!TuezI|)i<6X%|p&$Gyc&-0U zZ~G^O-uBVq9KfgctQ2l}aME}rVW&c9`RqoexfAKkS$&>qI{ek{`e=d*md^pE@v)$XUV?o&Qp7i%;$UX-VDK3DuVxF6{If@xp$JNa6#r~YJ5!N(h^ zyhH!T?Y~s|ui!`hAH`3jtd|>p@|%7!^;huY{(^oQQan?^|A78{8b5)&hF|&w|3dS3 z{2bdN9iB$SN$2_6Oh2O@TP#}x5mF^?T4a`|1|%tdgOh9`zNz} zyS+;MI{c$O{=}^CY5jyfc>68(?_M|v@`C?Pd^Vot2mH@=*>m7i=bs`kbKJK%q_Xa# z;d|~6tHhr>$oE(iP73nQ_`I*H<*pl+pGUj+H;u4j^c%hkdP^P zyElcn#{QUZyE_>dyl786(V{<}mr#4w-;SOaK+@-&N z0DSz2hZf$H;OoEn2Rswq+QgyCH~*#mueaaoj2HblioImN@plezl9@I0ZQW~@@$ZOU z=B}`R4L(=;3x~CDmG&E5UpEq*lI5SHe*Uobk4k;LkN1%1OaE`bb$&eS>vu+IfBLZY z-T{wjFh2TyrGM(M_74w|zekz<#P1x0_h9(G$$F6Wo92YRZSo$n@vAcR8_-k#X(h5e zU1$E2dH&#={gcXlt^42)d%f}7H}#F;|5ksxC4C*@i5>Xygx424Vg3GCllxK!#~=3j zV1G~l>_7Ux81L7!KhnB)F5sqh1)6+~`e`e?SYI26cYz;&dZLUkc&DeqOy)<^JHZQm zxu0~XU8%<&b(Sc5fB*5!3EnsF$X>Wi|GeMe`JC5$;Ah%HkeI*Cd$7R6^!BJDp1Y&? z`>g(e{|fw!$Ne#GAJ0!TBwv=NbiYi$d0zAm=WV>-e_rxeuWLN`{i}M9lKyKqDeFGb zaQ|}34`1yr8UFY^^P4O4gFkp5qSoeX(+Bx&|Hj#~xxa@ytS?p8r-(m^ZtbGjqvg`c$EO#DBr z^#kXd!VeQYEw3W4KS2Jzzw3D9ZtCwxvL9J8SpZquA?Q~bqNwtUgWf%YB!fNe*KcIX|@HSTZ7gw{q1OG~& z=P-ZgAm|_0uV2XeBh*_zr1!e`{;>8B4#N9Z%#ZI~F7@ly7k;18-*2wf{!Z?n_SFC5 zgYbT3=>KBv?;hm$o(x~oH}3z!g{<$~p7HtqqV$!^>+7|HYX29kzv6q8jCb*3?YFDr zQUC1&(t-Hi{jaZ9^j)LfUtO*J?TjzJ-?&iwt!n?k&-Z11;1_(9_ZOGXE`x33|KYyo zyI%Wy2etHGmht`Y0P~yR=X>T8-%o=+8>{L+zV{COR+lUE(|j(}-mT)F?+g6|??&zK z55Q;o6@08O57Hle0Dq<4WzWy}*}5=DKgLV;#rWS`&i27&`h$L@Kk%9CRjOyc75uM@ z{_*`y;NLWT)B9g5ea0W4@2csW-Va^rU)U6V%lFiSKi3<6;2W@KTdRZgWIWoZ@jBhL zAV2n>#ow!&qF?I2-KW3AAN1epUOacvsjQ7A+`S`|c;@@6d)4$Qq-_N%4_sqZ3oozebS3Tu6_qFT&v=9%ezQu!N zwY{LP7?1NA@}S(m@Yh?DI{Ph;AJ$Kr)^B;eXwaU3pXI^+HkM_7Lw~#UhkVhW8tM(InLAmHBz6YLY z&w!WjOBsAn|L(x|%PJc_%X_dJ(O@;&L(LXvWACiZkwS*;k*oX)0f#=~a?`Hws>(M{;{3bVo z!$tjj`|#IfkoP=a`D2y$hq{w~pD)P+^3ooZm#N__ADrive0+0M6A1bNeK4X@n2+?q zYB<2H`B)!p6!}?~e^`;9JCeWFnmVw5YI&TURrmOpQGV8>ZlgXq#(XXm`FVF&`l$Gq z?`S;>|1kNJ^k@Gj*>{(*r`X%XPqJ^T9sqnHe=Gfw3)vo{f0$3ne|&^o%l=pFal5~@ zp2vfq`QG&-!nfsRbaPN1wzdZSjgb-Yx7UyT{g&Y?_I&h0RbG(S^$ef;r#-|XxlJZz^ykFb6&{aDq9Gj-@UEBKQC!}|S5p1=F!d*+w$*OvZD^bg~? z-uBh_;{D8ns{Ta348S)!tNE7k&~Lz(^c(XV8Jr*WjPH8)KXPP#vl~ao8_|3WFZ?yz zA6e4=QOaKi-^Cw%SM{X7{E28!Xg|PzfuHSPdVaKLJ#)nDEczf{_*WZ2fJ9%FTP6OY z4F4AW>+*6dYJjp)~_%8A9Gx1G4$@mv7pX%=^d^>)u;CpQlp74Fa_l4kZ zhyIXn@KKR3>~YbbrpM;RJRg^tPr{$e>?iYm;eY(s0eUk&f6FuBN{xbNE@h$t!Ee9C(2MiDTqSTAN z7d8K6PoU3+%1IuGzhEf+kU!`v|G)UF$X^fns?{p-#;oFl)V{tF70Ap6~H@2fnB5 z@7;gH^^M%$u*<`_415FYMUxZNa=Q;dC3yh;b{~F7kVam@~bFM=KlG<_~XFO z_oXcO$F&|%zNenD;j?@Uo_}cffOo(@Z;pk4)AEFW9?na8S0?!9A^%45@%ZU@miuGR zi$9%@qV>#f?Yzhv%kb|~SdX9KkJww~YaaYFZRjdr^S{LYyNA#FUCu}P>&iz8`BU{i zaQtQdMR*q8^zLZb@4BG%{kkXM^={(pg*TNA!|wwBUe|uUcRTZbPYZTuK|HLFL(kdn z#q;Vh?SGMvf3cnFp+D>Ies9eC5%E4^35@UK5&i_E2`IhP|%b4)M~#$ z`E!(&Zz*c}7vhI{f4NrstNcOp3+&>8oeSMT4Z!Coi}KitP6_`M!M`v>`KO2R zJSFM#pvv&WfADLlkNE^^_dnOv{&TG7Jj$muodExr^}g-ooc4=L{mr0WHNP(_pPcQ- z@;&+XpZi??-tp_lCv*7@=ZU(Ywv71%Bw!JXQO7+N)RgqaNJ*WU+^L zIDgWwpU(XG?k@EoEAZYKMt+8lYr;`}=znz$cBw5pUqkcz#0b@qKgOUp`IOK*?U&7V z>rUtj@&Ubijf-fe(BI=-&R-0(AP~#o3wiMSnRmbF{6+9P;`@<3e#j@Op5JP$_DLW5 zbvh6{;Gg_ot(0YWx!=hAb<*`Slk`7ad*J~6L4G6rv)Wy8eazpStamT4_QNmglT~Ob z{!I6!&30G)zI)n#WdCng2s3|+AA7^g(uRhY`Lys~GCYs1FM>Wz`+eQ|ZQ0X^uST8w z@=VYuzs!F~2u}D%UL60YeA9aWr(ouT3cSm=muc^OB;cv{=WDfJ;}7c3@SLr+`Ok)h<^fnoJaC`@KC>leye-`(fSX4#(lKs4Nrpqji34{olgq)TWWv0eX7izWd#iiyob{>Xm+{emPT0Box&Pbu3D0)Vhy6eG=kd>;g;n>`eA#b5RU3}|J>st8 zKD)Ek-(Fe^MHsD3` zr^Z{?Ofr31-P`tu13ehOJ6FHz`gk9}{mJ$Gz4Ki;-?B#o>9cp(h3y_6q7>GP;0N@> z?c5&t9^AWJ&*#0@m9Mm2^xKoSDeuhX{=T8}WLqP-{6ys|bA#W1ezNu-IiH~MeIEP| zj^uhIf%Uki@{c@U?3wjtFU?=`YfR_)q5sJzTF>p#kKETSPR{draPPCz8J^`Kz8`7k z?^%yW->)kl&f`7a!5&DYtv9|J3$A zoz}~V*HpgYGW#dWPm({A@|il_pZ@93rti@o#M3{sIZ*!TpZ)`>%zQVxb!n2|ga6GI z?MGUdQoYwFU-{`*QW^Qy`L8devipDKm20U?f6aTNH7f|rL~Z#Mw|_3xyZy_rygX38 zF~Vf{flt?8fBAYU(;xYtL-od$puZ@yKed_rBfq56y?x_$Y9GG8{(LIap7r$!@bwpJ zxBpYz-@1MKrBn}pP|t9x5BXSIZzw)}|Hg=vCiz>`)4l5d!%&U$Y+K!R2k>Sp>f5gq zZ>IQ}@!QSo>hCkAkIH{U{%tHX9^a3M0gd!KEuYt+gOHE@Xc&GpH3L6>hkUAgGXgNw zFLS=9=j+LD=}*EJ@bN&wO>_~z zw^tAQe^Z;8{=$EE^VCHe+g?y^cZWX{;&ndJ{CJNm2q0zjBlBAqZZyZ*oi_E;B_EdW zbsqi`s*CSSr&W`FK3Aq@ViVr~YHL7jnJy!|g`xe~j|({y$#( zWU6<6pQs@`VLZb>@~I3zW$f+gJimu3k1pmi-!JrT*dJ&_e_)|^&E?Hlu6JLk-Aw&^ zyiW?!FrLewu6-_*8Bgmedn(8MoVng*o#*;Wy04_(-7fwb@YK7Pf;)#)Gh@3U{#YByK-Z`}&=Bkp?buGg%8;`jCLMr}vcvHjrw^N#ep*(cch z>DuNSBIPgKtR4LOA?4ZEdmA;YL-$9%Sa1Ed&u2FAx4yLtJy`Gi^R?QB{155(?+u$3 z+}}5d7rwW>?hd4niRaqizYaN~K6|tazK0uiz;nE4|EA&cjruX#!*Abz9(9}A?-Ora z8Ls^W@#lZ?eI%{#T@Lax-$s5Fuiq&C5BO~LpKH`G&DiJYpI*HZ>^t8hpRMn0*Q`JE z{g<`B_F_=i_J5{p>%V)s9`rdtlE1qCyW91k|0%aF*S09D-hX?o#roIfO~a@CYVO-j z`F@59dM@;aZdB(x+uzv~eAnWAE3|ig%GY~vZ}UpF$KbEky=Haj`FMWUhXOwE=ji{z zy;}iX!N02cW3R*f%}<nTvyvcrW-l)^Pbt~ID|ME*?HBf=^}Wa&F@JOGjmv!c{*5b|bL$-X^Rfgy z$gJ$kS1DLy+ytjP()U-gzQ_L4{)*b0N%j33*WKS`^~d*}FJ55-P(S|gote7&7eUPw z*q`8HN| zD@FZuWPSXG^bMdzeRB@}lfKYT{Pzv^@4t6xKz~5*7c;%l5Ba=tyl?hd{#-b*ANZ@? zyT!z#eTE;}y_+gyANfD~SDQ!Zz3JinKcdg~uNQqpzJIH?y_M-L`}O_jF{c%M^}Q=a zKasC4eUF%ex>v4fJdZhkZcskCZ;twH)mfjJztCriU(KJg7kjk0 z3IFVhKesb~LXXZDw+sIXzhAt)9pn%EQa`}If3Riy_$s~8r`LbszpbPEXWUo#&-nQe z{=0ID?kfD(Rzh~LkG~K6_u`9LAN`p8ccrfJ6aT%4dK=(Bl`H)BA^PUo{8#kNPs)FH zb$&d`v-s^D^CJc){%r3qZ)X0py}Rss|84b%zQO)%y|HP1WPbeoE8@q?nID0_^}Wvq zU6lE8(*kB1{{ier)m{(}Z*@1fRcC%2xm@8l><#|!)*IU%Z&Unl{`@TD*`sjN_M`p9 z&t8G^`0>B?$2T|Cm&ZdNzWfWJHUFFVucH6tk5%=b;@KZV{|T2B{`(sX8vlU)cldrY z%s=z<)`$3K*w;4%YSfQE7yT)9XZ`q@r}SgHcLQFE{Pkn^kv}Bq94tlL7$pG(TCVu@E7%C;KwV2{CG9mQn=pwv0{&( z$&Z(})%S<+qsL43xcyc63wwNVGxFor>j*r*#E;vT)tBKt%8&ot_PC-C#eds@cg;WI zr)V!CKRwGH-#o(r6@CmCD2N{ee|zlAkC#4*9|5<@kJl>pTKxIqfW5BwK3{8Sy6PW! zUAuqfr1m2|uXq9buy+6QIqhGBvev(D2K6KUzH{s;`@VL6`<(VC-2SM)OZ(=%m%QHY z`!Ie{{_N*WD$C1jW5hEq-ZVVi7uNp%HQcwz?+}OP>b?s%s=3>{Z*;YJqEi8Jp0m*st@ZM;J3;86MqOl^g;V|&X-ia zZ{FJq{)QSczvjKEaQ;kX=2!pSR^d0k?|gBy$SdV$Z(RrlU#u@YRCzm*yn z8eZtt?ryw+T=<4ql}z(;-SI0Oj& zhxW$Au*Rru=<$?LgpKn>H0RfcjIeem)ZY^id&)qBqO(^-P~I|JB-GjQX82>k-?zzipMDyCU#||08-;=DRF= z)ii{PBqil})c5l|Po}3p}0W=}+vW`J?YU%gyJIw>{(c(JuTr{Zk4b%>VEk z`eVBGb@a!n_kG`0ll)JQr!hR<))z8;yq?~C!RwnEU*n~GOv9scGw`e8^-%wD_$iF< za^$zL-l6tQ^Ls3>bgwmKz&@+;cV~`4kL_!gPqfrC@^e_PJDct8qx0-%!SDKsU+{m{ z?vuZp?6L8G?T9?E-j~{YeW)TolHWf3!uLsDp;w{bGWiaD_$SGu)(h`d_yPKLx>q!x zKrie8^SwEi%QKu$85_W7yU+4`MW>xR}yl-0{ zue*QS7ng&*$o6KY@DKXA^Tw4~;Qg&ckIoz1&n-=@$_e+i1pNjH8d+B%6)9_2b zkI5a0`d8;`qWc#4zti2U?AM9k#;#g^O%LIF?3xVjSj6{Ack{N&1;1m)Z^&QVhaSxe zJ;Z+-BcVU>+YbFbH>>Y0&jJ6_){hb2(ud}k4F6<-AN;qwWAOqe`ZIpVw4fI9Cyg)c z^M75%5BB(vNBkf!))%kGdfGcb75tkYBK|YH?hk$P3-NpWA>f-X_|<(<8yY^~_lfX( zspyyW9r6tW`*@RmUHOMW8c2xt{s;Eus^@Qf?}ML>Ym(oMjPJ|0RWA76s9jQh;O8;% zzsgx&!FT9S_-20HnOS`w_@m!8) z1AXh+-^IRQZ=G+L{Bz6OFEZW_{)6|QR{EDNOI|NU`Dk~qjb!}0Km6;TQ+xJz0>5ku z-r~P{dpgRa?9tKtd@A5uD__Yyx-Z~gLOs5d{W{kY0Oe_ZzZ zOyTEk&(~$;lZ=V|1HP?4npXlm%nyEA={AoGAJ#{vANu*1BE6|^_0hk7CgPj*TISmn z{XO4DyFs5+;wj?cqVEEKm3RRB*}r*J{lg!~3;N`;?N^4E`$|(j)i-pXIMI&)7JXf= zoF{&y`_%D=eqQjwAMh{wXPVZb{ie!sc|+eXiyjl7n^1kG|8|LQfRFtBiA-W%%bQe#r9kcm{sBaYNIM=UK!LQ|c^CccM{o$uS8^34$)BN=3M6b~Pnfz4o$J^aYPxI5gNN@8~eYkc<{bzn!H$DqL z1@&tFk-nKQxdK0_OnzJ9w-6r`eslQ?pU?PO7eDbFQzPOJe&T%_-xpo@Z==G0S|6fu-JcS`*FQ2fjJ z8Or7-^Iv0B-~&L^M{{!(dx`%z{JiSp`4IT8q2-yq!hgfq-dvCVm~}p|{nwz6APB#R zfB6fuxh#Kdw60>|zs8jS&#kDB8oof(=T+bz;@2hT|KDa6Nc8SqxB$7xFToyBuJ^{g zyo18^e8@*Wp=$Vx_IgiXY02em4>>QtbFeq2`_;iui~Aa4`?~w@p13Xe%XyHqw{t!( z>j&ib-bRyD>QCN2IZ(cM`(i4q|L*zQ=Tn*aK#y`ir0Cxr9Wni6Z^HUW-DTnL(NM_8 z`6q(#+2>9E(!Zuk{S%={{@8!Py?_5JwZ8|xmZ!Cz2BGy+f4ZOO7#s8|v!3>UhV{3c z&%piTbG_@A=rQE`z%Q-d&UKBR*AsfRox{Wb>nnbLnDZEO&F2ue_rH?v6Ry|Eg;V#U z2jgjd@0*5z@qXld=<5`ZrSEm$^bgct@KDcq^w&P{c%pCj%8~u2%V94g(p&iqJNjIE zSooLZ7hKlsM61!awITym7_t1ysmyxN==}YNPUcPwRi+E|%H9 z6MifGZ+iimKc?@m=)c{+_D9}i{;G@fTlaeN*FWb!&1wC5$NJpxvp>oHxcm2hjPorj z``@8_S$zX^81D^j$5i1N%(no3n#S=WJZ*g&;hF1+eylUMe0wg!FZ90!zl2|) zkM?tJ>JP?0`#U{r+gKL8E{D0heuwf-%^ttYGqs<6v$p;Ix5QAt?febl=lAn|`;WSh z@T2Y@%=ZmmV2;R7y^l8dQk*aLF5id0%-`<#enI=YA9Oy6`>_x059|Iw@pGTR;l+cD zua@*R{U?6c{bpM34)MVay}#!38|gd-=et7wS=MJXel>oNzM13wdVhbwc)-i~l=5C1 z^2q(zb;;+zd9pM=;8Q;9d5y3B(MOWctS>B|!$a1GX?*TaQGeyUT;+W*;Hmdc)~w$} z|8L2E7@5%emd~f~{?&tfbr8ZY+h>k{Bzydb^|@Zt@1+|a;O}&&G~QnD-*zd_43+Xe z{d2zHkH!AsU+mAwlmICH(1>r?&He%R%MOgs^VOB{xetf~mT|m?yY!ELPke3oZBLKu zzQ732zQ(KDAyfbVe8^=7cpgvo5C3*xJkAGH#^b(0zyId>f-%ipL>eZg}m$|*EcxD57+^G^+F5W@$)I1l6dMw9;k8Tc#wqW+h>RN?3S2a(VE#{5&KxK|r?{JSH1 zjEJ9HCcnx4nc8Q5B3`KAm-&w7`93!P2%njL__uyvD)evuY1(1(d_#GVf4HwD_5Tg| zlicURdmbJi{)K-EzTqG4%bpq>Z*oNZR2gsF4pqVLxEFj})_M!~2c_}spSC9Rc+1FF zFT9u8G=3ESR_Ob9pYq989{<~3f1fP#J0^aeJSh$>^EJO!%9>BC9~C@>pI>)8U-12o z=U@2C`S8bQ^7!CCy`Sp$r-HmT%lrer%lz#>PUrb6-|k*(dT{>XJ=^g9x#oM6-V;aX zKYe8W(-V3A!Z-IL{>dDy`3uPfdF`ULNtSC9|h2S6X1zwpn~`?)?(hdk;2D>N1IN&IB}P{o(_FHY({ z*dQO8U%nsfE7s@0Q;`qzPqXlk=tcTH5*y_4Ym`rv_zU^)`P9V!@MC&E-Sjhj(>!QZ zg|EUt@9qN6%+QqT75^Ll(AQeEnUd?`6@u zmEnWF*t1D}ZhU$CiNj1U!yDcMw){ta6oXXS4=G+Q^qngD#PH4(ee!M7yQKw_ioI%i z!z$~~%6 z>@~v$dkz1H{+3|D_h?x0Zd3lE&(p_xR+Qp=%)hN{Z=VEy&Skz=y!C_pp43l%Kfy=& z&%f9DkM_TrfPQQIgTH;>!E5}t{73My@Mdt=YMoGzKVko8z@Pn-u|4!zcr&OQ?>~Im z@2T3qzWaxGSjhJy$Xn)@{CWBlzux^rcYR*hV+a7_$Re?n@XO zYpXu`$Gk`D`&R7F!%y<>iV(_ur zot#j;*Z)~xL*Gw|f5QF6TCcLU3G(@l_9O6*#ov+<`se)rWbM`1p80Wp+~bA)1l_kh z?fwnFe`{b83{}Ru5{7JX>{n!3}+T{TMuD%cN zKl=M$)%=V7@%LfAejmx-SLb8+TV?)&|ID1gN&e^Hd^P{-d<=iR%wO=^8>xI>ov*&H z&d2aq-UAimA*vK4Sgh@z{^yzKUAbC)_u}{S1aD^XvWTA<1ikNAhx< zE(5=0{=0`l{_gqqY_)P&@elMHvn?>Fw zudJUN9#&ONuSvJB$cxKCUd%6SNbobih~J-*7q?IG#2W7(Yk+_c^Giiu%+j4$`@F8Gq8Kge^}_9EcNzpOx@uB+>yOzD<;|NAM$o` z@@F&*`QqrS;p{JP)b#DQR!-*oZG@(m@8~|GGacUBE9sSJII-yjq}(d!QPP4ND(0TlmJkAG?US^qqm znP^se6@LT#uIfEC=o{Ma!vD)Yk3JL6qm#e6Ud9`y|3&vdEB;`;lkt2X zxAg`5wA$s&79Y6&(fP(~@A$$H<-->3AMI1W;P2CYMD_mpBERDA?l=n&asHHNyNg3Y zaC|?6`;@r;3wReazWIG}Nb`3+@XU744GBTH{Tr=%oAO#{ulG!fd<@o` zQSB3dtadN@Jv_?;?b**9JvLC^;;z5w-@q2j*_&30_!1)!yw;=d{ckTY-rQBZr?0v2mu6*C>wikEYe^`&=eZ{L3 z1AqP|cnIN%gJpY1U_seRtN zX&mr}TVa2_fA)&<0nWz#fBNUbN|H>w<4d z@WM|I?wzx`@_d)kZ{5YhKgze%{qKD5_U7+1g@0VW-pc&U`se_?4A0VK?RN$IXnkyH z$@DP3wB9qmBzcMW59uZ8z8WPil%^&*k{>k?dJ}Bg@ZswH^)r^;7#t z+7CE?HW*Og#h=5z&t?3Z9!sm%?^-{xKZ3n~tqKqPP$@(If{$ z2|vhJ@-J8~f#0qKgG9aYQ{nG*;p5}3x)5Gy(#s2`G?cO@zNB*LHr~CZm^TM~s7r(8? z^LqSkS?{s6pO-weBfoUIohy#VLVNQ4+Z~Oc>fw)*0YA6kFX8Ljxt#y@-mdz)mirU@ z-7{y}3>D;UU;J=U`D2Nn+TG``nqQ=k()^PC#lOQo&xk+#J{Ix~e*rK*#S4#g|K!qA zwhw&Y>YnlYMdbUaKk{?Vo~_yk^JDH`{P-dKV*9bv)^LHImd{zmze&Gwe(jRhqtblL zA4wlu|5xmh%jo~KAL#P)i?v4V-({zdgz=U|zw?(fzk*N7=beipdQooo&Qo2b_tNQR z=ARwty%;XA1zo;hqx&2Qd;COS@FjW%fdT(sKe%uq`*ZY9ymP_vPR_TQpAYNR|JwNr z+^=W(d!nU%Sg$DM*}CG(SjIn@nlgN%FZ_VK zY-ag-yifVuj`f@QcNcl%y*T*0V(%3y^xoj`Q&;6xqRe40d z)~oVGz2(XLuJ+xtXT-lg?_mDsx~BVuU)tTXSA#tP{~^9b!SRdyUGF}}TPFNuFZsUS zect)MrM#pI!z%S#HS|ZNJfTdmO8K;xdj0)F$;-w1MXD2i>)jK@-}iXDaX;{VlU(E2 zANbe)!u$V56w&_v`JXr*|ETyoukT-A%ypd?7}n_UGXGq5Da6O@H|Knu4u8j<@;-W9 zr1pL%{O$Z5?3w2eeaN>7`Kq!n%!l`){Ts5sz5~Av4Xdl<4`%~28o^;4}F-*yw^v<3FD3MKj5G7YC3P`^#=MUo}A3_{}sji>}IC* zNza$3*yt~;Z=WX~n&SdpesMkn`4#WOPd(C`RUhFYK02uYF8IT;_uMy*eRX`!_^khp z%Reb)_RD@Q$M3}7gi9|R(leKRJ@lf1haEzO{QZh(kOd|DApAAFO+-wR!6K zp8MXWEHAP@*#CA<>xZ#D{+ZriT>w0{U%pKKAN-WxOZ}SOM-BV&dLNbb*^RE#u>wwY zzfw2kXQ>O>%Vu|ISp4B1{ky-7-@fTGsSCWHN&kDmrhHBA8@YE%e<097D=lmP3vH12 z1%6%8d#S&3K#t`x^UF&0eO2(g(qAm^siI%nUp>Y82mRM>5+8mE`kx7~ivC_t;eKZ5 zb4L7Pf9{mXwW)|+3(=VTvK`v><{3O^`czk8wZ zo8zf=;0OC_P55PcPW%?XZz6BSK7mi(3o88a2sLnja#Qv>wr78}xtZ;m`#*1WX#R40 z=vnQ*d*QfLP11+F?-TM%#Gh`@{NZ=^&-onu`w(xqUhxm}|Ffxn<{0^Gb-D}u{Ydi} z-z?t?{^5X+-2eJqhTrgxRPf>XT`1pceB>$jukp!8OY`^lo#3vi|0nW?*>6kjT|T$& z_%YY7HFLe^3;us8&d2^H`)~UFGvT9-z1{GAi#QaLpL)ALw2|LC;C?gm&xdONDDo%# zK>1MbE0*^ME^Mg0nE97E-ckl!yE%H<1<{NAMD;eOZO%H#1q zCiA0zzwcxDB;PZ^@ABA2c^^gRYv}*m2kcQN`R07{-;M9Jx&Q6a+TT0Cr*}R5Umn$b z3Vs=n@5_0l3qynOaH;R$_!(*IUN@R#>5rdSuOzQ1&FyY_DN{g@fQC+YLU z#!tiV4aM_Rf{!@zfP8821$_tamk96m9@ybw|DAgAcks_>Pkh7sVO9R7zs>c`-^R~& zm7kf^=D#KQ3_thD{Z8f|#^d~1!7u$!_2qyI6gZ>0X|&#kNd1%n;nYxg+smD;=ia~&)bzfix@ z8v*@$p9$~vp}%|JGqndFE4?wMyZ4zyPvYgl_uhI#jocpnr~8!5&-yF==Sp{cWQ6}T ze2l-+YcTxYXR>|j4vlF-@UmWdD)SHiXOs8tO^-H> z-jRPkJ|6h#mi=?a*ZOpAyvg_EH;i>x563Cv+4w##{PAQE;vnP_t$YK>hHmq&PUt@G{*G#CGN}he$8Cm@0#u7 z4}ZBppGMS4>O)?e0)Ba0vML&ThSVZz$kP^~8g^Pdnr9 zitcxv3h}(^IZs5qb0XuDcuDobr;jw@>bCWM`{Kc#`O)#v($pva*8iIMll!Yy%@2;3 zM6V^*_V~$5f?>o4#}cWPYqQ=&KhLBG1jkN(d*=kZ&E<&N*~iuIf~ToXg{ zW4`P^alW4i=&R+4MlR#u4c-quqx;0D2A&^;`_ldX%r8cN5PXLF%OihKewIIw&%01h zJbv2oczn-{_cKoC_yT@lebVy_`6%S~4%I5>_qb09=K5}hKMc>^pvOX1}pgPk-%p zTku4GiSwt0-sXqpXm5be{jID>UfWT>(7*MK{ZaZ~>8>mTbNU^Fkj{T8^nJ#CMZ8xM;@hx)ivE}_>u-;B-+3#n&u0C^ zT9vxb<%{gi#WMV-{Lq^|AQ#Tl{LGuG)Gz3p-|zgFy#6MpgP-94a{nCo^ZB*EOr78b zzJc{O@?FSpF7L%Szt-9}reFO^*hR5k7IwfMgCKJpdRu< z3a{@GkF)+}bD7uYbe`_7#r}Yo{NPCuxbps3wVwU`rlA3=es=8dgsWn;B~&lL%;trS^JgPKk$<;NJ3)Df7?}j8{7-^e@FYz zq!Y5fWO)4E%;K=@eOwQjWIsNXLq0S407D$mOZ3wI&Z))xJ>#w2KQW^HL-*(Mxe@Ij zrvAwfWj%_Y;_ENZ(tf_3zh`{bLkqs(hrHgQ_I~ecsh#`x`#-Z(#Qt8>d=?jT{X=~} zXt=y8r9hUu1nT_0M@Dsog#!N*>4UApuaBC?;GaqH&zkth@^QJH;dlF;k7ay5Vm?tm z&jtJ(d+_TE>$&~1__2LG^N-%=`gNXDZqP#bbA9K!#`|O*?`q-KWyv@En($?KVm^hw zUzh$nRp4{^)5{q?zZdq&GC$XQeIks%zQXrxa%jKY@C?`5ztM(0@W3-}v=Oftv)BC)iiWhE*-}YHA@O^}}#Q*Hye%$-F zYHxo1MB#trk^T0{_ll>NJ_UTAF?{G_`hQ*ldFgNQ{PsZkQ=h8JTf6r$__4ZQzeoZ~ z_4`kKD$A?;|0#XIPw_U&Q<%dU!wU)20XeZ>?WH z7w`XQ!!NUp_vuej8Ttc0z4rjT`TZ>Dw^ixi`iBVzd?6og-gC(FN1yY(%K1KPt=DCE z*@A;OMb2wdhD?OcPZR&r6myHS^u@g#kR)NkNmFYy~_dqh!6U^68igp zWBYUMfMD9+A^vJAUnKIA@gJXWw>*sso~WPxoxlJ8*?a%^sE+eo{AeXWfDj9ou>jeu zK-kzOAcVjIlbaP1Alt;qSWc+pR1!!SIkL1_ge?^6tR33Wmd0{I5^NJ&c1TJR(kcn< zbz9mf2~BBB6Oz!B#3aEk{eE%dPcOISwm6~Hecm6l`|j*n3{IN+565P;^UV8e-g#%v z%PYzRm;QsmP8JYft+V7`l zn*O8^=TqEN8$?ptzw&wBa4-1-?;|^d{^u*`f9N9nXn)ODmSp(R|3>;NDOc8OsK5D! zZpU);->A*d^Zp#$A5*-|S&_b95&!oVWauHkxc^pC5GN(H-=#9SY?<5u5O45baevI^ z7m`14ewn@>ub$gq`u#3s59HnQ3362m-|789aMQ;Y>v|2UZ6nz;drn$Dx7XWe-_FXR z&$Z`Wu07LuefG5^j_((s$NPJwy1D#xzu@Vs`0rI3FWz)h5RAz967fLq!{Gjg;)mCR zmdX3aC{6K#_2U@6O8-UraR2`u)ray&lk;vGi(DD+FU&r_9^=id@!iG(yua|qc{ILu z_qPb%CrheaJn{Vx^9h%qo1#Qm)cCU3ueIWtf^tV6t%yuHMw zIbNNamEbp-|2oy>me`BoN3ZQ?8|fK*0DUwe=?Z!;%&E4`_}iz zBY(+~bUy5heZ3k7pwq?jf;nHFSx4i&CE6dyzFu2v^JBAbn=bb!rT_XOzF*cl`kI;3 zWq^x(lAoMWlCf`LQEcU+=`}`QELl;){k!U~Ox|+4y}x3=+A7+y;c#ihYjW;X@`tn^=v%*V zy7d1}-%NRal=S0%QH=c?Tz{nR#Q^-Xrp|KwXUHE5R;1-&zaq|uU17?P^i3<$^i;lq z8GPPmx_krpy>Z5f*hBILs&C3lCl`&MZS>7a&Mu?=VMcKQ$8*+v68?!zT|6BFFkG-7 z`fy%v88y)PL=XGsB&*A4d{QlG*stfuJAe1na3}?4{EzV&t#`JKA$ci1&uc~ml5~F8 z8ou7@=usZDw;92*5jo!m>n*gtK0*SFyoi&B_L4(S>#aqWzG^J7kD>iS{QUhbV|l!< z&u6>$DUVH$-!Wau^j}zys2R)psFMW$^!{2-XWnOw`%#7-`^ze7X#K#Q4}tw8;$CY1 zFJitsaDA;kZx!=_TX+SF@;^`WRcs$5`zie@t*70<&xed9d(j_bJjm}8arcYLIYF_1Ee16b5G2(t7qNJwJi_9oDZaZYw5z2-veUzSsFV z=|4dBRAu(7!XAttZ$*yLck8WOK+<>oNs>3?RwwUOd7nU>yGV%#-`}uz0(F&aKjLwE ze}(lo?oU;+o}v5oKu_b_6pt5~erBdV5I@m@8!FQNM?TgIGWCh_Mh9liO#2`6f7pA& zZR~GX{_OgS48Xe!N7DD3$N+k;r(iD`4S7`qGj65#vGaal=tupOr|*xr-(mf62Cd)l zem=HuMupUe?59P34aHYty_`1?9hf;&>Sr_vPC(voRg`DN7ve7+ztE5I%;dEHx&D_$ z(SB3TKX@MKR=U6N`ih*#J7bwG?}yBOa>QpbalggcZk02FD?KAZEh8wQQjNe+ZK3kJ%FBEV6GcxhQ?E&o@ z{eh`J?jJH~te?92CYA3R=1@hJe)Y4dyr#|PF6 ziZmZfuZS-`&nsik(y_Fk%cURRx?JLm?!To&T z1_;po72uyk&!ZqcO~-3<22g)UyXS{s-wkH`iSo@`Vat!_KdNlJB7ZUaJMGVfc6>wS zo0l~{8Nll$%=l$aa`9sF-!vUx%t_Xj(fUjsrC~qT6Ru}}slAoS<%^diU&|lN>6^9! z#eGMmD^GG}9ofH}+Aqe(m3<}Ck^j{+ee(K+lt0hO?_0tA;&0UF0H*iGKEwwW%;=(c z;QGdbT_%m^U8YgK8(+^!R?L7vOv0fb@x;#?Kwc()?sU@c_Q&CQm_-#NPUZ9Z^Zl84 zM|&F^Y|hN5aKBnQm&o~k&G)Zccs(n9|E|rnKfZr27xC0y`2M|2_Dhg`@GrNwElwZJ zk82l8dC7l>PpmJCzp4CBVtjZz$7ikjcTRHILW)=RC;O*LC$L11@+X&1BmUb}-<;&! z5~8ot`ido&FG|a2e=VO&{$H;7kUyR1`S}f&za&GCH10oqexBN%{iDSv zf3SaQGyMtQ-)5B4_(9~6KW0B`=fSII^NJKF2yDJ+<(`V&LMr`Px$|qiMaD=8vXGArnj#D#(4yD2Ik&E{TH`4lo#tk@;nXm zuR~g&hvM{;;Kz1>G(Y(h?hiQL=g*{g&*a}co%r4Js@NZa7ZTAW@x%Rt zsZZ(;Sf93kq-)uKoTmE2_}x99#=no@_lIJLBY$&xuDSox^P5<2?#|Q~_dji!G=9I5 z=0N;hf45}%7p}h>C#A=0Tpu@2m`vug|Ed0NyfNGVGjAsU%l_YW(2wQfzKp&~j7QV+ z8@?av??n)1OzZp!#?5!}n9vXC{9RzaK8s-!EJw_p@|;&a>r3f0h~V!(Obn z@$c!{UQ1BF^7~w-zWI4b>F=n%b@-BQuXcP!^SSaHGx0#_+iuLn1EqDjK3%^{P+uq@ zrBT0F-y2KMJGl1D_m7R4G~z>s18M#nGX3jp%!dZ>ywb-pK9}bU@w~>h*QWPVp}(t4 zUMKZM^~>X<>+pm32n-N^RVK^Jc|A$nGxkSK#*EDM7l?=Q@@)DgQSSdGUeMlgUJ>Hs zI@kXWlrNz)?|3}@UgUGUus*bh zImwb0m7p(C`Ev&Fd{^pAkF%*KMD0eZ#pHleIqUJFQW9T*nE~8 z8^kD|8Xf#e>oFrgArJp@_7DB{pZ^yj>uCVRzyBd#uI@jg_OcPrhh5!&bansH)%{0T z_a8lm^}MV5kFM@NI&yXY(c@dM?mv?GO98L9V1LWi{YN~2bpE)y|A^<$SN9)X-G7An zC$I19a`W}8`;V^fKf1dANY)4I_5OKv{}KJ3!0Sy%u>O5@|IyX`M~H^2`;YMZ8?R4a z-G6j-{}Gnc)BDk`?mxP^{|FtV{yuhf|IyX`M_2bBX?wW3|A_ZPU)_J?)*E>J;p+Y) zx1Ry~4X*A#y1M`9>i#3WU!1+V{|Nh^uI@iVIPf(xIrv5Q8~OZicK$e@7modhZvWKu z?PX$%?njFB<9K;OXnz&f(|Laq=o3@%yb0C^rf-+kGi>0(CTBcP^GIY2Z6D+F8nAy0 z@9V+_r;+sYyH))`Sq!B7z92sD2=C-Tn&+30kMoowG@j%%_PgS|BYs?l_s`LOAnfmw zD-{I)OwZRKwGIEAef>cp?FVK1L|*27@worMem-A1zdRHi&x^4!5-&RQbADJHfc%RTD+W#r*0Z(H8 zk zgBR8y{hISf=@g?M?>p1SNlD&je&5&>s~_iC)AKd*yceJ66y^6RseRxtD$V4Nhy68+ zjePj4n5s+oHx|O5*Tv9+Qe0l_Z@~N7uA%+wuDm#ZiMNBZf49){in?Ew>;r#Qe`(oi zxJ&oT;{8q2uBGSiq<+YMH{N9IM?73Nm+HsW2i`|HmCTX)TSfI(N%`D9VGqvtp2{5n z>!bIV#b(m}&kFG;YvU1qt++#rFDn_rcj&+>1i z{+!}v05`b~Ef1bA#ra<{oTd1Bk)C&+J2~h?KKUR1j1Ek@Ax)3_AD7iJaRr&hLQ!GU^W( zpMHwsxd8gErSn)vs~*Gi%Vf{oX#o|O?4LIU>8gypdDP!5na0mEQa(=3#Cad|yk&~_ zi{pGpJb!{yQgG3JbKbu`$9vvn!ED-Z&d&?5|8SE;e7ShQ^L4lIEuHwk`6TR}GdW#< z;=i&qJ?f9`f4}+{@^BtJzpsYRH$WQxr8}*Z=O8_wxp*2`%jG*j@5`G%jo;@+<$-^2 zK6Pz1(UX4gN0QTm7^P`Ef%DrV$?Jkjm;M`yj~Ku3V;c1j?7vuyvYo$SPc`kwcjqnO zJTQ6T0Q-mD7ciTj*N}XA-fBVB65?0=IDaJ5U(Q~L_bViCa{0xc?G<`Ep`nUaMeQ|orgOoMir8&f4m>7L+c;y5AF5V zbo|5rkT)^?JOQ^aHHYf!#Q^!W3pn0LKIo$Zu^Xtrkmvm=J}PGg?MSEF-|RBV&-jbp z7pwjPKb|MR0eiUUd4hkTc-P}>NFUG7YGafw^&3V1T2(KY_7?WM9N`}vI;dS5U&3iS8++Bs|=#mAW^QJ-^as6FxX5?ubu z$?5X?@i@DX^ev8%K9a}ukuvHJ*?x?#(4ObBJzW2s2A8ETyf*04@_`@vYt!wS>!&J` zXytR>Z`{MP`$_Sm$DgIjkeRE@TSv>6dCY?7Ii*N_W?UCNsHfJvRgX0D5AJ1n} z{iGy5*JbOM{8*)v_bT-tu`+r;OQyanuMOS<`!oGrjL7--3-s4q9-}YTUpqTH-e(8w ze}o5(@1p~eo2Wlc*Z)A_t=ymL{Wg}IeGLTQs(0}}dk#|aeC#^J?_4i_A=K3ew+Hlp z&flmX#HaX+;`5)q_~iaWpIm<_NF;gl zDP0*uO475by`epA)beAzg!sB89Y05?z6#}eQI6Ni1?VrQ7J)s}UslEf0!TjO;k7f5AON5IRlY7l+MIE+WRJr zUv3}h3RB1?{Rim&P&GRppPa`1g9a>=f0ptQ54$vd2L0Fong{IRmu_J`hIlBW_y1(# z4ejN<8gFPXc;8?R$0xO~Z&AGS@fYde&tm;ckZt?dB{+)+my5UlXf!<^LU}QNjq-ey zo+o4Z^lULM@;C0k&L5fnehv;q(|q_hmaM#n<+DHO{VQl{>|gLh9_DL!fg9|9<>xZq z!~43j--mbejGH&HL?8 zpBUfGTuAi)^g$lKRrTL`D=Z0SmVP86_Dr5hx8l)%8kO;3e;Lawlldk1-!_xZ`vHH1 zpBKjazmW{|{i(Pg%~`+zl^5lUB-wVf|#gh(pZrc|~iG=Hs^MdAX5a z{`ynZBL$;$AQ_KeP@doZH$*c`7^PFqsQi!ME5cW=Z#Z+C7RLSpnpMn5~YKC<@r21uj(`xN#ZHe zFT+of`)?XIHDWJ(H_`51u$oWyqr}j$i-?d-JZ$$m1DoEZ4_fJk< z;OLcqlFFz4E5;s^_#68HutHui7?b`%?Q!ji*RPSEXhuBodLuj z*RSBuF?jz7*XOxP_IFhh;Rw<~S`Xs$oA5pnvY-43`{yPjg;d`WvJdhpO`=&p@?H6b zAL)Sz9%3E|qTGLE@|hmvKiG>yLt$?l;s^eYPQZG4gz5|HZB!p`l0WsCi1?SzQwM!L z;z=&?S9G8h(FOZyeFpi_fysraf0@rPy^?$NTgv|bYJuP0T=^zz{ZM;r<}OU)7x4pw z&>pxy;dm;fwCzu#jvno=s&CS05wczVMR+j;fX35r;(i-La)RD(D>Ogx3jBrm%EYVu zUP1KLpdYXFS@Pg-%8w(zSo0l!^j`35elzmNQU2Kirf)-ftVt)39%Ireq>D@%J#;Y1 zq|3cDjSp;ootJL%(i^<=7B5XMvGQPfFwyAWh4knvKwriAbx)%`allJ_RP_~&c2GXo z=PWMo57P8hKVwGe*6Hdetp7?)1Odel+W)lvu|?5GXgq}L2&IcTT})~8-{k)j_*%sF zP=3Jql#Ti#Xb^mtBFx9#``@pY`0XIlRR&c|I-`JBX$Mj=BKbiBn&!zR-zOke8kQBGTj1_Do^=DI|mK zFXptAe<9NkBWrxxo)Wf)tAza(Fg>y3_Z{}vSMYU0+MZIT=O%>shrgJf{e}Av+4FVK zN7MEcjivHY8xwoRb6Wf<_Iw9fWol2leVs%5VtXdAeD?3F>sbCDf?oVd{)w_Y_BYN4 zB>mqfU1|Mg%+LPDe3Ig+2if93X^$@;&HnrUsD7-!r2Jn-ey04!KdSF9kUuG{&-erH zQz3i4g#3)ZC$PO-o^MKdzJYx47nR4vgUbJ7x7kLU8R|5W~0kzcC*gFiT5;%^<7 zw-focykA3lGSid361IoyU-cbF{*<)7QqJf4R(+pBekPtLb3VtXmgn!0FYSxuPvLxy zM;f0Xe*2Jb?fEOD#lHpF{#Sj6kT2z@`Z4jO`i>z#(_XB9B_6(jZ1F$Ix8;@k89{!= zf3|+5e!ho%iBBqz^}opfTjYyBNq#B&pZ%rr)`fgqUUY%lUb#PD|8RV2d7eUkCcce- z)qk5jdEZ6a)mK&DxKRudMW6cbTS!ZN;Pzp?)&1Z2PVw_G3J2EE*0sC;+_4f47EI39!1Zsgne{sW|4 z`NG=UA0gkxBmBknFaDzbYV2sQC+`zTOFWSNNvz+N_cO@P^dF{w;Py9mwB3_;5^3=d zwTJPeSia5j?@^>(e_Yi!VHC@4nlJVDMWm&DQoNXW*7k4!`5FI?W&iVdg#8=kcy;|V z-5)*&dhr+cFB8bWa(|@wnJ~KC>F4oHF_&NN=hUADqaYXikWcdd25IT9h`(f%#%DIZ zK998Y7nDC~l$JOpU*hX|q`AGE6?wmpH2Xu-e~vWAr=~xOG`9~;??aOPtLY)6xqWE* z(@1lDYI;A?Tz{JWOQhLKK+l|N5W`G(LlU zW?wxk8jNi)+|FT@PhG&czwj5?@|2if_XfD!FYdMGAL$y$!5qOhxZTK zw448!`I_X@`VYz*?H|MP#GY9}HO=RPRFoSC=1b#}W5%TA(fUGv(HQb)ME8%NeO?o7 z!F~$Tf0XVIMFFMR30NN^dnv2vr)ZHO=K){&`dV>jeGTQUN@9B$q+CU0jXIZ!veCdZ|VA2o5*+TV|YQl(uc2)6{q~CHV8y}(k%U=)UJE2(* zn=nE84_ber^{`2DuY^pp7wci;i)T>+_Q`q}zq&O@uZPh{+pdR|`s-n(SGFD|>s=+f z9umQNSTk*)qWb3cE9+&vo(?YYX0@G zaa#Y>zS`JV3_Yc+H=%#e+&}n!6uKT313j--fj(?KtQz^e zzJ+{uKd|dz)PvdeuyQXw&r8=K?e1^1-gKM?tMCVxFL%8OKd&l1;sxsit&~=O`s+gK=cc%bzgmS4>Dd>7L3cqizce@S0G(lWlM`S1kR$Gz@1WjspbGZ|0Q z_}HxXuz$>ajOQccGV5bn{te*I_{*$6>3F>n*%|+ouzvQZ>c0#5ZhTJT?HJP1U&wp_ z!-@3#k>=N1()kP7|G$Q`n{Q;#U!;6@BVXowR6a9*(fQmedl9KGsahqTl$wU6`$IAjLDfV@POU@o&o=}y!3oQe&3P! zq46!hSsV8QjPIp=bMN5#FMmFePSbn>_3y@)FNLCY`m2RC1tMDqdY&zdjL@0-gozI&7T0rk&jevmaE!2BRHo=5-T z?gy8eA8>!q&lmja=LgaLi4$qQVSX>0Nc#=a&vWqD3IrMt^m}5QHq`6+!8!XCl9*i) zc{*P3xB^nwQX0SaP2Gw;Sd=}8yC%lJ^gc6A(}(=NSc2adXR$pPpH4wO_hlzz{QKhE zWGN>({^<9`Z%(H1Db;6k`Y8H_6pv3Z9;!-S$F~yBM|}|gbkGYw<(IO3{Cgbo zLC@*yN+E^QlR3@fQ%=vEM8i}5JrnPfn4652P`Wfo@$Z9>FZonnjNgzyiS$JS%-3l= z*MHq)@;Bm-?^n^}l$o@)Ec1J^U-ef#Ci{7kC6sOKoiv5YtIv;cdEpRK-f3ixqq2E ze%k+~Q%IkyA6MTQ|4+V7?8Sa^%)jR*OL*v#i4U=_bnHi5JWS5^|D+Nw&nw_(`zLdK zX*?EFe+KpP`!wbEM#NnQGeiv{h*JKd|n@+@fhBBPxRL+eWpK=^_X#Z z|2ium9@O7Byq|{r!57k?C-X%AnaOw_1izoM3cg!-o6b73F$W0Z(~ z=`XP!!U9Mp=iB`Z&{x$bKUcH=z&|cIX%aVBq9^F=B0vmO5i`V^VlF(K&b?HTAy_HK=J^~4@bc2N?`*pNM?@ z*HQ-*Qh#TZ|GcTc_lNMmS8j4S`cLi`{pSpSGKBw2aud(tKl)kWZ`96>{I@lPe<6=r za^t7ubHcyF=%@LyU;dIPz>xCq`n>R082)V`{QsVZfBzSRe-Dcn|34DKKg6S^T>I+| z=JHdQ>f3)e|3H$N5G@qgPFbM<3LlEeQudHByO|0(d$MfFF&SNisM zmQil5{m1`6^tT!Re;|ba6Fg|l<*yzV{tbqIM+pD#&>%lV|E@0yzx;+M_S3D*xBmdo zI&$^z{j%`mQ5?Rg{Evn3&!S00i2nE=2|xWNOBeBf5dVDrf02j(l=2@XW?aOd!atw? zi5UPx^zZ*;(Z9v`@9_}+hh~QJm%JqWI}QI6A^bnD2{{++YJ`5O=C z^6w1cf4MT8|H5Agf3vawH$(WB&I#vl8WH{u&KCdwRtW$5s<7uW#Q(#}e_Hw7ACa0F z$I)#ry;R|d@OSWQLfNJm)j!>T9KUp1*jf(eF#dDOKVtal{^Rox;{FrHKm2u}wEWb` z`24>M|Ap}T%@oE(pf z{uJS#&;L_k6k=*7zR8vN+iZS^JARj@$5q1khrcD1mOgC!`0hOXFDXBMT2EhL{Qm=n zhw0yUJXik~NFpEDYakE*e&s)5^oQ|(0*(#S-~V0FZ*Oc}Q0(i+*3nS@v&!$rKV)+l z|LYJKrvKCl(SO9)A2$B|X9Q&!|Iqhy`NPJ)XE6Q^DXCVDy@dleCA=A3l?Zf4=gs zHTuKmAD_njBh3E(|6ep;piI5O<{uA5!}$}h<=P)M|M*lM{(j{@X7q>g---E0nEj1E z75#4hL`4Xjzg)<}KY}wy=(7A_^OqMfe+kpS;$L#hA2xqEo`=6t`K|si{>LzX3DZCF zzjEyloBvF}{3VQk#s3z5T}EPGgw20m&clD=UvtYJHvgG{`A?YsQ_64epJDvvnE!e|kL+|DJ!(wLfhBREhahnErjr{}N^D6~^C!4knDh<$~x(^GIJ|^RGY1 z!{4F&TTJ^8hqUhge_*3wNfB!j` zhyVP43jgbd|M4(>%>TmlpB~LE{}Unnw_*Ml#(!4%PaFMV{Qr4XY5X6?-#sT>{}Auy%r0-({P(kY`1dP+htVI#Ujv^K35LO0S89TkKP7*7{`Fz} z9Gl9b3W8_A9L67%DZi{wG5>BHSK;&jaU`5SHBS|<5QT;K^Ls&Xlh3~t0THG@)uH-j zeU$ZoBnVVGOk|BdJ- z!t|$}R({;y=_3Dq6hB*~C}FN2=i~o^+JB1>6aU9T>aSSG-@g69_m#gY!@mc|(WNAr z{ydq7KlL-U|9@rpKOO{aK0lr66@l{ z2Yb|h$ft|=p9$gb*YT&XKlpSm|Fa?d^K|@}!~bQqU&WCAeIfDlUwQabf3Ez-{!fMI z{{tO==IH-B8 z_v-l1=MVl_^_%#4AqW| z;y9@kCCv3$MV|V9zw(>@>-VvREoFG=>o}~Rhs96uiCq2zA^d}t;ryvTResZde=el_ zv*v{J2Y;vhbH!jP|K~&eUj*aHe#*C3>R*MQj=!>(mki!OCRMS|zw6(G-;Uo%j)nt$ z^{%xmf?#D`q@dvJ1ssw!p`iV>sRgh6bVkABuLT7K7iI%5E@*$_7U0o>SAJfDyz+v_ z-&l_P81h#le;)GhM1D2$A>*fY$d4nh2{@EBu|n!kxe&iveb}^v9X{B&6JslaM6#== zZ*y$pw#}P6ld;}MI+L5bdmqJCqD>uLz1#XXbgtU`;F|XOp2Sw6Z|F@Xww*?b-C zeeJQg#o9OaCi}X29zz>7rm>!ds`&q zwk>RbG|}4Eo9Lx43%4dW@!$7#CVM)&7i`)FNe%Zk*2g-N$=)PwI-0w6`P?pi&bt{~ zp0+N46>0seySn>2lg;hP_J=$1MT;GDJkr^{slT-(mkDzQkwk% zyI_1PRd7c#k?h=**wnhIy_?9CP2_B65@Hj(R;^#ZZvFCDnx{RHh;8iL+?(u-Ng2pW zaTS*%jJ|y{tj!_MlHcCZ0oQ~}wsMs&RO063CU_!a|F#6`z7u=EIySd&YLzf*g`c=^ z_{h$uIFa0JT=|S&vh$gba~0qEXnSIy7u(K!jedScqgdqU`LN+4_b;kNd^r1BH*EtIm|DB;ZT0^n2GG}lUi`$=%}np~r4@&MY3^X9ET^U>ylzOj z{~udU=0bl>tC12@bls;1LFccpCLyG^>rnk!)y&CMv1tGU+um*U2h zSln?rVqh@nxr@GpS`H=DYqiFM_F2-xNey&EPP*Q+`?T$jf~$q-!sKurUs6t*!pW)K zjE3k+$;Br_5f9qcN((~a++l*VONXsh6qT95dHqwBhJ-NM=tH8-tT37E`d5*^ZP17&BEnQB& zH{;GM+Nm3qzAvjkVOx!V7gg)MA9wyc)^;tfS+%ySX4R@kAS6%qyagPds+P9E>bZSq z>s?w4y>-7Dy$Dc@ec-6D@{-$XTJ!x+=2JzZe_CY5NNImQ*xkFay}Ox5p(}Y1DuK+j zn*~|h+4ErE7QvI9h?cHRee1V%chcC*(lz%bvEzNyBBI3K8u^Qj@0{-FqYP|>-y(k- zTO_}cZ-^bO*s9L?*sd;r2jnkrXK!Vpj7yq@b6U2)XYwWO@|Q19v_8_mD3H$}kThNy z2b5?i{U}C|^6ApOobF}$n=v5mO=9Sb6xoka0YR-By>z>#H$U9|P_Ga({pN?edTe_A z016Cwq#m4o&)Xd{sq&Rz)GFPsb7>*f{IzY)WHsJftj zSrqwaksmK;U)EAk@KjU5*Dk~gzE(FCyzzopF4PsgQdbO`bD(*k;PJr?1uqOn3m&g4 zFL&FB{f!Nf-5k`vQ4qx6-W0rY zp#?I}eCW>Y&Cs_YsC)x|mlXtewig7kWo^ONE^LAA36!NDvQGwIt2-UMP&X1hUUv+( zr=W8ebPPi7UdS2>3f?#d*(3OOBB*@oDE?t;M{(7L6Q$?JgD2uAf)`RF!Pm~74C-Gy zjknX__&Mo1H~KZ2i{ks~+esHrws;3tV({e>M?Bg~$vt-kw6TKhc(|0@<}090T>%8w8celF4wi=ouGAN*f(nz zgC6bBC1SmLOt#!h(blPN$=`2g!-^}QjeE3JA@(NH^%Y-6ejxphj(n8q&vvBe9yE8L z`GU(E3}h~Xxy4U0xA-aM6+fllxN_ztXqYsQ34+XgBr^wbGDi?ML-?1%zgICA8Nu9S zl;pQGHUlk9(S zwrs&-yhJavr>Qm>|0p{CkHI0j#uN>fG8j+xT*!3HqZ4@T>sn!NI3lj`@BG<;%0!$(W&KR&Vklj9rq7S}&L zuHjRK^`!SBQ|q6c((ugK`h7(W&qeA{{I7qj{@eA(>%UX~-TLp)9^MI=h^dG@drKzC$T2p$i5Hut`f_K|Al1l&+oqLA(Qgq~J_pAcb-BCJ1@|?wy zKIi6BK{aUIbHx|QhPz6S6Rj;_1n>B1;%Yhd@()2mJnoe}%ER(6#WNo~2dQkh&XArv z#iooOBdGi}szu6rO6d<1{hHEL+9z$-Vwo{y%~!fTM7O&1 zwARB0R}VzftTcT>b6jcgdJbtfR0n-Z(=B!l6AjnZ+KgS)7WOIK3Zh$8nj*SLqqGLf zKdkxlCI1|SQY4%zBL0h-f0pu_N{1=G+vHaiQ3k)Fjq-e(@$ zDqLBbXa;2?D4QV}9ngdnY_SzUi4_82s$GHT%YXYRq#*&lm0~U0Hg%pm0$E%zWqA`i9Z}!mR~; z*bh$r!}tIGL_KYXu_%#T#q7!XC$;V4DwFR&Yf4!s_odM5#sLY?T~N9<(!IKLBqDSsz7uM?b*EXG z_=E2^1KN-7LjG>e=jSx;!2QnogWRzerCv?Vjv}+3%zSptN;ESulgDj{ZZ-443BH}^ ztj5--`QLrAfd*_SMgxXyD{07v>^np}+gh%BUC+ZV|K8aMs7~|aRF->SPWGSY{pc<810T4m+IMI}Lxs z+Gbe0EQE#@iK38(Sw9gsH*|L)S#n>fmF=9tS}J=}DUUm(Yl^INeNr2;9#Fb&D%%?P z$PIzHFG6UcFQPFeML6{rg9vWzi)aj=?r0k(zMl=s0wI!OYD9HBAThzqC}=x?L| zX~^`Bd|yES8zH^$wkhyR)GL*3pUTp42e%hD?%06*!>?E%yRar%zQfc{E~Ijec`Oi zY{_l22y+=nbb~G$#Ro2)C(>AkCa(=Ndu^cTTI1%gsLE%@a2r}hZD=KC7Y|BsHJV69 zXZ@XqiFcI-_l&Lgap_A^s&A**HAF2@`x4BV#4hUV4k#VpuhxO+&H6eW-<&IWz91=v zh4g2Q6ES(q*VXa;G&Y6ZA#={`xgln?Vjr2-q;zp1=W+1^ip8#|e{LwHn|$QXOBkKV zZ#32Q3Dvt_d^%!$isFjRM0fEr=*ag~Q>9Qt)Yh-S_tc*cT%s75T<7&Y_kXH4tesTD zl*5|eMCGKu-7O$AP)N!|6L*gE(gVpnr#w}}qjTcNbPN&)6ukx?xc0K|Akz)S8cBHO zrqL+3J+Q8|ohSEWEh;0Q-F=#WxpvQkJqMJhgUc#w0qOOa)tU8}EucN2w7jl?d3_|a z_(V~)iibHmh%#e6lu*W07(}f`3wt4Yq8QJf(bX;O zLe`ql1JgLF8TdTS?{MQ9cO%G5_*T*smKU>VNOPBI7L5}l2vLi0JK3Q!c^tV4Gi^9A z(v%sy?bCc-gS-=M(T&}B)X0r|wX}qdP-uo~D<^KtO2dBY@92C5y7qC~#(V|(^j`BW z*DpSR{4zX8N7o4|E3IRM-D_yjy0@4|TA4vz=`e=YAGk!9$M22rQ~A4TY)bP!*N`z^ zBOeq_C`>o#7)bUj{T_S|WUXKoFLz^3N1Yp$?WoceQ`yK@GP0#v!Ta3Iub##L5B6*e z3TUCAh$urZ$|wr{_h?vVVW5jgUS?sSiw`+?v4=>qFyy4Lg`A}mQ^U0!-y>}qy(_3* z^eW7}dB{Nly}XO)<4TuJuM>haHR@UEQ$+&CHShl@KBD+V!&4aOVANprwa^VH4L%We zkUb+>gvLx!K(9ApLoaf)6F2x$mXpCbel))jr{jlRg@Fc!$-GbH;D;=}IA%1zFqm#A zGhYjX8JUEB+X^`aL8gA)x8GCTrPX}_jUR|!hjM97dG5bB{hO2H`&*@tsXmAQSn+ut z{_l#@*nloaKM~_E(px7mVq2~`ipMqW=ocy8q`0GBuJ~FHZ%~~2NxB^UI~8vcIE}wc z@ixU>IocE-^zeriAMtR!Hl53L&clC0@fbB^Tu%On6>s+NrxZ_l`16YMT9=XYMa55h z^na#!6!k!t)BD$o^PCvC^UwDcckR>R|ERcYzf~*^{kP&g7X#+-e^-2u>fNFAq=@4U z`E)sag5tY9{2IlJ@z>H{uekf2LbHPfiVrFpb`w;IrFwaS(I~<$VwQ8z!e4`0Tb!Kkw-OF%SKJ=D~~cdqJ4|nR)QpdGNR8!E5v2 z%k$tX^Wb*^pWT+ZkL=f~dlL9m+;^h7PRQdZ`0g(icWYS=zo>Y#t`#_Z5pL}yC!s1X zs{D3`>n+LQpLV$3lFlgoamCy8mULM0am6A(rnjCWiq|Pl=PJ>)NAb;y4^{}?r}*zG z9@QqpV_A@VS@D!MnH5U^1I0&TB4@thbX*ygmtMa|*LnHFhnq4!TY$5Q)A2ThpPrMA z&sY3-mEbhapsQ2y;Tt8*zct|NBZ?<(5`4GPA5=WJIU7H%_~0$s_%t*XvL`k_8^2TW z;kOB1q4IkbKfXY4SFR@&ACZBXtdW7_OHNL8HvM-LA6k@+)0~0q8LSa}h5QM=gZd6@ zU;pOp@#rTYj!8~*u?QGcIn#lM$*EHMA*JtA`kFlSx97oWJ(m4hD+2g;PJC_2L*J$J zZMO-%EAN2fLmvLIJaV2<`qN53gt(;Z5Ax9eQ6Btg9{k%XKNV-O^7|#ezM6;rU-RI_ z=xWJ7iF%Ra{5%VISiLM#`g2O};`}bfQw<`Af5*hv4SD4B=D|~W@O>&jSR?ZJH%)x~ zoZ=&Q3GV9aFCG2bZ2ZTH$36Tt#Zw+m$7hg#Mm+qY;=wz!@#=RAUZ(Q# zBNfv(ZxGy_ulAdYkK8Z#dHEB3$>Hx2Ag*#=QapIC;QU({zHY#Mi0p~B3Z9TZ!G6V4 z4%eZ_7ZpFZQ3%(n{ELdmI|S$7qwuu>_q(w8oCuKg4sRCv2UN~uibuBy&c7+)>xUI@ zdnlX!UlbpCpWtr%`yYz)A>zn#{qWmxebFbnQQF={pr4`9L=P4#le<6TC&s^)1B* zKPdP)#s5L^)Z>EhRQw$nXK*}xNN^XQO^PReQ}8oN|FYt39~L|=e}c*~ku#)tOylQP z#YcWe2=}X;7ZgwI&c@3zzTx`%h~PuoUS=siGAOw7|2oBopAwwcfAO_TaXM6ut}500 z6~(Lf2+nKL`1)6hAOE=EPX2ktM?N9AlOJH+i~Y7&@D7#Vu6XKc!QDPMT9+gG!F}2E zFDp)mXVK;8&pY`q2=3(Hcb&*dy(qY&Pbfb4nQZ!RD<1rQHvL(}qn{VNTkU_iT;+d3 z<*5I+D}L^ag1dg;gyQi(6x@w(Usb&AOM>rH`S)OaLVgIoA~>%H;_G|!j9a$l!FT7u zpUZEex>@I|h- zEp1JoIM`-*be6XaWS27yAw&JXr?Q|ZBoaV5A&sa(%dlN!hQ`?FQ0B6Otc6atL zv@`=ru!*S|6z|1L_6c|PIR#Xtx{#v|xTwM}M;*`+225;0J^ui>oDs9Rb#sEKYWc7O z{Zd275_-?yBF)1A2M*fezTxZxp~tBQl1axN=rePiLZd>Vp4k3QN*+Wb))#Fv_i|F>rlH2WomN;lYBIbqxyw38?1YL<7z@!(nEdyB^$@Z13yp zr5O5u(JOH)Tid>^XVaFu_&~H=JANe{ih3r~6QI#aXTTP|v-9Dtoqg`>ro{G^-g~z{ zys@`C*!*a+tFP1K1ULd@)0SkgIkBy8D<`%ldXVBnM5J`T=!qq7?f9d&c-YcgI*aSd z4@mk&58}F_qjuinIYd`{>=D}36`V)rig3wOq9F2ejzR+2<($k#2OQ-d@RW1x5em-n z+iK4Lf`&Y2dcDOnj36-k5FVUjmG5-4OPp3_&d5ri!zbtLg$)|y0HaH23O%|h%@uwM z+a-A}^zmJJB-ngsdbR|kW6@GK9$Bx)8bLMPU7EQoqd}2$ zd$^VKZZbKmdOA3@I@#HY4zQzln-B`0j+unD^I`O*tCPJCYj27J+Hiv0!`r&`NI2>* zmnM7r=oCkaz)f9=_U_G_n>UkO9GICo851`%cQPjq&TFirY$7 z-nMm1fR4SRKACJsFRnLNwuWGvmV5KP+i`D7_V#oQbO!hJq*=*mOMG9?M#G-}z|O3r zI?0=>aqk0pL;I#JopMKJV_^B(_N`*QyKTev-1~OcS)XXA8z0=%zG)L~`#59I9Wh4n z3Rf=O)cbJa;l9n}K$mrID>9aBOm6Gx+`JiI7k78zpeuZ-eK4`8n!nxFO=FwRWLI;? zy{-74s4z73rZib?x63h#+P;RTb5gBP^SY!GWU9@w|QnK55$aujyj@(7DhXDmUs`fUYInU{p?zTjN zNJ91zn3&|^^k+Vp7rj!BL6OUcVi5fs5VM7y-XV~Em02sWE*pPlQ%z2 z)YVCDlh%%^Mq+u9Uqx4RuxWlR8NH}aIV+VF)-CoG{t`}Py&N+#2GO^4Plh)2OE5qW z+*Y6Fg#BAMtoBNZ1P`NU$mx~d%F()4sFnuUT&;_9${ad5NFV#VXo=1z^w{90bWTX$ zeHjxOVb9dD8-MgwR%g}84+S_u*OTXa4#O2=Rks~f7bmc}#d zZXS+llB`o^k-w`QOVU}0o0MgvX|Xgp#cZ-4lh@Y!FMGkY=E@gbX>Qk$?1Zj{E$uyc z)k9mt6aatZv!HbK6AhEKv>`ndj{hiyf{YNn76_j_{viXJPm>8Rpyq^z7O#hsn_8JRD)?>CMV z(L21>$k(kvOy8Ubr+ut+kv*1vR~~#s@f`mv?)%@J148y=OHk&*z8Jb3zD1Hjk%!My zyu`zupIa0sKU?{29`5AydAQTt@8M4V9>vK&?^Ijp&k=*)ZE$+OH(jp2B!y>VJv^=% z?z|96Q$5mOy3Q%RA3tT|B%kbACtvw9Zt!MYHY!5j17ZFz8aE(Dd=`Z=NWaSz{@N6v`B zZMjY;PVy-ZNgiFN6{mW%_!%R|#+BPg?YFP8i7YPg+t*?2@1u*vt>$m?aY}Krr^Vo} zD^B)U+%+DO(`4w~{%zl$S}F`K-=0$%G`>9-6(@V{V@~-f!M-`V$R3NkXX1T(+`e(& zo)(qk+jBn3;&c2{hW%)Ckv;F?Z}L&4IN4+II>mi^()-mxzsktzQ+nT?*QW}R@1GLv zBcqG#c{hKPj|#=f9*b8io@0;VzJJ{Fz&ZAmiJlyLu+NJwvS$N-laC6;$sUVWE1qMI z;yLyx?%Q(``@HD#?YW>h+4E~mAs@xqw?!A(WAO^beS6#%Cf}Y8rT6VQs5e&Mo@0uW zJ@=CVdYw|7?6LScBgeKc_dJ4cPZjoC(dFBdm?5}t&!FODk8XWs!Xd@U9*Z9`a;!b> zISAjL^Gg3S$e}o=K9sKV3i<2XQ>QrD^MH`>XOrS&kHsHQ+^;Y9{KZAk+xE3b>3w_l z>LW8`HGW0zs{D(#|p*C z9*Z{{Ikvvs^CrGMJC)wIrzIwOe0%y7Cwp3jggyl{ICDo*xnHufA=ob0jqaU-Y6 z(7Wfwe0z#+79!uCidzKt+t&)k$({#|{I!acJr-{>a;!b>IW^y&JxcG}bMV%1dyXki z_G~fsoKl?ZvG_S7$J*nbkMr%RnlD0qdse(n@Co>{TE6n<1B#P9T?X$~ob0i9%E+csB8>^LsU#=>}{c^<>_si9& zcpTzvxtctB%BO3shYN}$e-!u2+v3TOD?^(n$CbCkqj&gj#mNtMJEi!0*x+{=ykdzY zeELDf$q%LY=i+LQ;&BfjHuU5l%BSm)p||);hJF(05=@QtRmI6a7C)*u+4)YTr9a1w z9Fp(sJYnQm{G>%-`grEf0Rc;QfaFqQR}4^4o+cN50~I z+;%AL$L%g7$N7>ZyXV1uIs5a-Ihsd~drsV!b0&|R*A=JunTCI^UP|i7Dp|L&cvNvm zFH|_^#iMule2<>$jIKtH-r@9y54yrELsR_`vweZ6}Oz16!{abNF{;=bMkMvm1x zthlfDu%WklM-=z<9#!1ed)&yedQU3u>pf%Wt=_YW`+CnQ?(4l^piWwulKBxWA&a>+}C^2&|AH3V&&^CCIFYOHyUS{$BkBRx#GUwDnoDe z&QqNJSiD+sUvHh_{{1MfxUYAup||pz6{kNI-=Mg!w@qXVeVYWgC2e$f=pb8;{1nyrzU!bANFu3=eXidzHs9lS&!b~Clx0@JnlgJ zJ)Z}U)(eqOKR*v%Yw#zGe0Ls~@3%gs_x+Yq+?C6fcc&CJbI^kw@2^ry^2%0 zb~+G$_vgWf^WcZ`;O;yzzr5#_-Y;*(N-@Hf*O?Sk+?Chi)gHauPg&>DJA8%WR9-t@ z>&}Dk%Yz?Pob0si>zLwk4?kh#Jcc}XoicK$pD8bpoHL5McIWWdJ^Eo4bk4)wIRCsS z$I)N#a7Q0Bh(PksdX-IoN(}x%gO?jTVepvZzJIC|kAv3wZN8CX{Znh?SpTe0-1kqD zp||qaD(>rTQJl(a^*&(aSiK#J`+D8^cz&GkRC+(o4;lIQLbtn)82J`&ZWIc#^TUo9 zf7=Yc%iy~V{@VuMYj8_{ag`8}eEU1v3QZ91)#{X`E+xXvW@B~{TA47`!{@Jg1 z9Awr%2aO!-pF>8D_0M6&eg7Oa^j7{c#eKae6sPi9y{C*EtM`oJzFxOk-;e*IH4u!; zkN-1@lYj1D3i&v%ILWtokp>^xY2$ys!EKzcF!(Mbf3FH9IpYm}L~*i5P2k+)ijzGS zKW*e#dy4NAp(Ove<*R(^j|YU0GkCG$ew>sj9tW+h$1)?w)>nm*L-pm(nX6LV)tAHP zd-TI1c^DNcUg>OlNW7`(*bdkk*-+x?2W ze#7ZKpm-cIO7YL(hm4#@jrm5=&N3Y^! zza9TXwNeSU?J;KXUB=GS2LG7B&njL6%+}ZIipM?typdz;@uHDK^|(djKhVh)$tQdm z|L7|6a2L15ijyC#oH7r0a>_m2$%!fM$NzkT+xV|Dc!DjI4|h(uU%xF%@7Hfji}3mJ z)~7i6;n$4(or+U=Exy;tvGL~4C-?0+q4d5z9ruYcU+)gZbMz|i$J>y>ZCo8SxQ)Y; z2DkM4-X->s{Ey35{@kxP*=ghOfZ}lvA2xDq9KK}aQ2eAc4o4KH@>=|;M?Z{wx{i6c zi>u?F97lh`!yWx8#r-%uYj7Kf=MA0^Q~2|u;=X^}!&h-oS-%y(TbN0&^-olBl4Jc) zuDI_XckaC(Z?#JA$J;5R*Y>v;joydEH2y5vAPLfI@tERdzm0!)-o9^7i_-h{RA{53 z@>=<|iu-z-6(_y6zfBn2#`)enc-j3BfQ#gOlE2AEwZW~N0|vMB?mYs2d53*V^~UU(##+->o?Lp5?1g7QI)9d^`94y5PRwUQ(Rw-zOyec~o(--{Pl?9P2mt z9tYo^vQ`o5+mle7?0Hs5_|v`j!I!f$kDQ}z!tC3BOmW}-at#9C|8)kp{y)7@zLmyhk@>_I1u#sc^ zdBn)E_)#Or_LFA~Zp&4@Su~L!o^wj^x7Ogcyp0C8<;A(6e7W+D6iB*7aaUf4Z!mI( zgp@zs`%V0KIHdG`JnVl^n92UtM$Qq%$)5WSenN4w$Kq#=92=kRy(+#vWm`n3Z_ggZ z$sX&s!v?qhKW1=CKd(#V`*Kzo-1@&sap!+`j?7xco&O!)Y~&1yD*j9u{I?DMy1`#C z_&I}H``t~Q?6-E7JS5D{&hm()ql!B_9bTq5$r%z-{%lj+ua^$R{d#G6pD>dg8z+5= zlRbK?WWt?_lRXySYveRBrF^*e>G<{>QF`B=4c)>=_E^8A3~v2DXmCs4@o+}Yr{ybu zb}LThvg6N$;&Bh}H*#!!rHq_O;E8K}?NZ#;m%|4=`eE?Uwa3HVIDD@s$IXpy-vP8RlOqAwnS zk^Fhi;5N>Ow33MaGlt&1XUezpkkb2hR=;1EeZMs;PWEe)V!}4X$$pFX89CN(?)_H2 zJ^Pj3w`Xlq?D6$Jpt!HMTXElSdkk*i4vOMlAXmcDkY*hzYSU%v8ZOCJ0I z#cM!Sihoh%X;VDz;aiLx+l~@O4z;6Z?PvNGC;wPH<vKI>shjV3>n<^GY1WxF!YBM_xh@Tzf$Bi6{2lsxzlZv}|aQJDDeweKcf-@fO+TB@C zj-!9w!yWy3#mS%RRW|>5R1$>Sc3NWagrP4}-1kqp;&ISg|HOz{c>j`dHq;=X@Y z7D*ElBPwD-3an9(q?KIjCLvWGbdia}s#1tpJ z7Oz#D?6>XIz0c9Nr$gy|drG#89$#;T;=bPbij!X3PFoCa+g*pjZM)lTa7(|>;FkWp z!M`9T^Jm$BB*-3%S19hsVNCHj=xv+2ZzT!`eE?U)#%|D z1P+=!IgWm`aZ>d|MV*!2d(u_%E+<)*=6Kd{|qYb z`)8k_xAKP+_w^o7oXTtU4jVaE?@NmNdfod>{dRFe>3;_KtMIP~|LAJ|fcz!Bww)#v zC%@^GlnGOclU|GOF>-7>b?;I2?Kz_KzCGPLSWQmN`Z{@p2=<6+3WmI0PH>wG;-|8(_+}G>gBYY9`)E?bctMq=m zh^iAwuWhH*ij&^=IwANQSDf@(yv4||?bN-$*tcho();!lr$m{rH>$X=w_9Nr_x-lQ;MQ+#znP)`l6>V)_g-n=&OW90?L7Tk896rIT;-Ad zhm8EFRw~(V@hZj1e(Se3#eI7^6!+~JG;+RT^bX~bvpb4Q zeM;}!GxU3+jO18*MieK1-X|pdd0cU_$Kq#<9BWVPBf{+4Q>D0X&pE|OuPyII#eF}l zeNyC;{Tdn!bQ?UY9tSh@|5Lv5r+Xi|Z|4!E_w9^7m62op)}}bwzsbl?C{FfUe5a9P z{pQ}o?%Q)n>3w^S8@)6JELPoTJUpuS>xz>-MDOr(9`586e^eN$Ttx4#62+Yyhes8s zdeJ2!&Wahl#1Z3fi@|Mu^&9+84E+wpYk-yFpR+Tic-+Hx8#y|K1qFVOHFBt2<&5HY z3M0qjLms{J+kTJU;lqlPA9N{5G<;0{`1M<)xL?1A75CfeDaC6bu2n?x=j)17y;$76 zfSu&nc&pwc%)ULfiu?BLRGjpZf1LmKc)0V!Ud72COTW*<9sPb!j#!6ru}AOlVa5G; z8!@%n8Te6^c`NZM?-5k9+u9Bge*Dvyo%ts>R5$c$-J>{L|sl zJ3OH{*}o0{+;v=WzkW|B?$>YgCxnya*#0e{IQe0t6OO+r#i@QRzQ@S1@iwBkZ_g3M zeS1zT?#J7C4|jgJs5sd}{&cw8?B#G5x8HVsab2JZrTyYmyt{zV)9)}EyD~F#l za_qeLjFB@5^dk{`;Cfwg@{h&Od-TIh9RwFV{DR^aJvolvZRT_G9ewdWVI)7SR~huD z%-}lZ<=mLT6NY}C;=X_8D;@`}^-rylWBs$j$gzHCRNUF`{MKyft^5|neZ3DTPUW?F zJB%Eww_9;v@1WurA;+#)>{0w@ic=p!*N#ugU(##u3;Pr&zda}<{CQAu(rfV%BgeK= zxB1Msr|3Bm>f1A{IO(mGg~4sRYc#l}Z!x%~zhLmM zi7NhV8j=L*wRp4QejK(a9tXXRlLr(hIgjC=yE=yC8_A(~IIZopTX7c;4)0Uk(GP=% zuKpqZlRgK=wYwdPJ2{R%<>8Kgm*QmSdi-XP=aiPy>>*RfMSgtCCG^Yk%(4+isV>wBqH03y-oy`$p(}nQ{AF~ z+gDH}5g<~fSET|((M#P#HsV$(hIi=|pk7Q-d)*>mM6aOktr8S`&zU(t&DoEj z_RV~3&CGXy&v~BbJZGMH=9$^qn7`@$9UAa=tbc}uyY#X4&!}+gpOeB-U-)4{IO+wS zRC;ZHO1SH!=6hDS&G(#eo9~=(n{WOn$uKSUxF`^AkBdd&oUcAkH+{-8cbZp+gp+?J>M(|%&EueM(&+~(UZob%Pk=?TU4aW|-Vw<_lu#kKyd z;#%J^=qKiUzoP6+hVZ0t8;4WEU9zF$(={ z!*Sd#8avSA;VRgNKJPQWLH5J#Vw+b5itFPvqIgW{i-lYNln8f8tNl}|>}da#D?8dh zRl-qz_@`Fswf#EbHs1!}Twk4Uv$CV}Z5M9y?GtB=!u;q13I z7RWLzob%OuT-njbDIVUk<;ndM-=Hneq;SqxAE#5oIbY4^gmd{n^3}XnxQ)X);Vvc9anhjdq{M@=!|@Q2gkxBeLx?vhsfXH?nI{yC}a zX#Y$IxBf{gy|zCk+~#{$IM-L_drsNW`OXQq`R4yA8KA`;7X`xYaZw--XK=pyI4u>< zeyeALvQ!D@d^N9EcB&z!bwao;PnU38p1ff{F_%Xl7g5EJEBmhET0a=VM-|t89v9B_ zWk0(T{}aODXYfg7XF!!_R&ia<_@DVAuGe2HeTU+@{N0M{a-I;5a>k^beZo;r@P1`y zK;=6x+_uXF;kI3-KIdMG&spI%-&x@{-%X>w9WK8TFZpQ}2wch<=VE=3W zruVm6IG0nO7ixsNhSw=Oy4@R;9d6$RY4>K~Xm{{-qaUF(yu=L0`8RItK;L0F^a#^3b+125thZ9d|>0PNjTT{ z3fb1H)!1354aoL2v|dC1M8PRzBwS@bTgb$L33vp>Hf+q^=bgYvkNs7Ex+ z8)TbTy|Rt+K;N&p){h9c`Hl-mzA?#nLUGiQ(WG$X3;mShT0bk?=DQ#q`Ho4xi;B0& zwzrZvM842(R9x#LDsHu(qr#Cde$T#C@m7^Djw9p?eU-{r>v4S9`r`OPzQvdMnY62X z?^5~3lzomj=y5!9d9=P)^fuoCWuNUdNxp-M?^pQ_nS7xiRb1;Qh1-0mm3_{)Px3vh z_?;@>8D(GV=M>j^uQR3eHs5^iWNCq)M+wAmn{PtdXFKzfZ$L+nJVpn-%{Zm2a!Euk~@owZ2=p z%@@~0s4oUb{VLzPRlWntKIaSlu;N-j9+GcT*=IWu881yKeo*B*t?X<4ImNXe<7iu7 zoc~eZYRPw_oR^p%Q2FKyM?6EnNpY=@3b*;^2K=`eujQR<*W76A^FZK z`<(BLnt* zTd(YMeO<}7L2--~IeVPvkuUV^DqpQngyh?+?0az{`JPaGFJ~wV#s$c?SM-A_U#%Yt z$#+uO_u@+IoKgJU$duMeWnb&hDz5c7Puli%q(4UcCMDlo#ow;-%@dCLLSLY`*5f>B z^DR^Mx%_xZcDdrsDqmOG*ZLa8wI1hHn{Q0nXFIN3?8X(}qw?)g_O-rCajowYZu7kbJ9^eJ+2m~tDC z;C&%>28^9?v4isf>I*&*V&{yplN38s!eIw|KE%#~u`?rf@PIMwfNzrifMwc0MZ(d( zvtp-2IP8E|huEn#cIL%Sy|Dux53$o}>@0|#E@KCLAjHm)vEyv;gJQ(k0Y4LBXUf>g z6FX;(9q@$^JLnhT=X|k~C;bQf3|=JMwpWR8*eMh{rN$0;ZHS$EV<#eZnv5Or&Ja6Y z#!j)==`nV|heGU(7&}q1gZ>i!0iO!7bJo~##m+h5umkQ$d|5x|35TC+#ZJC(*a0sI zu~Ta7G>M&ZV+XuG#7>j36B9elhIa^$8T-)34Tru3qk8Bi~-Jf70+i;giCVFZ5>&hyJW^Ug><#2}iyIVjuk<_>k}m#y<4u zpHLp?^CX?kH(xmHkH~(ZtYHVdRN2w}dAYGOF8fu+4tP_DomOKfDf=;F2fQc5&Iw~@ zM)v!S9q_RbJ18&wGcUSHV+Z_Ph@Cm%u;Xm>gZ+ZB1D-FRb9-q&7Yc`+JlT)P8tnyM z9%83TxJ&lslFlnowbFmnBmSRS;hZl|DdBp!PB`bQdA+jpx4sGQZ?ABk=e}9-6T+Vs zjxr4j=X{xAo^D7u=d1ac(bLD?GH&$XXN0q#zXeF^b0K_A*?%eNB9i8Uvak7q(sMa` zWL{lKrNNoIYU3jtaQ{!XrbgTWT?aL*vr`#m^ z-=MWjoqEJo9BCQhUJvxHBgz`=|23b_7~aGO2Q7ILFR&kZna`t! z&$ED*I>URVp*jrDe}%6{T*H21v(Lwkemvsy8N=sa>2vQOp-tGCzslzkX&>;JSNYsE zJXz#(%tJyy!U0c9x6#L5?Q_f%Lho$xIp+7kd$;=Bk+=Yll=vL;Y2YKT^*QFvz?0j2 z-fHZOZ})k(;Uj#2(=ufEzz&~J8s5tt7cDb}CxtHckI1|M$~hps+VDuJuOBzO z>3W~zzQK|m;qyj6BOLPp&?j8q4zAz9@jI!wP6x;Di6-TG863aAi0fZ){Ae4lH^K2c zTm91Mfa3=KsNt@3c(|^FJ|X;^(T@vXG#tM>RUp?du;aeT_XDo`z@0by9M^H+_`R8g zv4h`z!SxjMOTQOl^!VKlTwg$s-&eqO0XTl=V3YKJ;P^cNj8~VqOrm!gJznC1aWwRJ zA3es0;CR1$*+$Vli_%;`h?+lzc$7pu!Hwpm&*AR9Pe4KGaT>=uucwv=&!d+Zj_1M?hU2;90mJcp z@Vw!8ZnaRxM<_p@AMH?FLdGlLkmBMJkDpPT^-JUDZAadFAinobXWNnZVSn9MkLyL9{~cMRZ%&i{t~BW*#Q2g=hPSlkFYxWu z7eV~BoaUC`Z_*a~#9bo(#>hHfIU^Ui>^~m5%kXjO{XEwYMyXBx@N6j zN@#~|+Vr)O9`~=2#+H8veZV#;3{sab`Mcf!A_EhAY6?(EoYCdRK<{V#fd%}C{E>mIYe)V1_sO^$AKUyNL;euRdI9z41C$odpNCX7 z|5KEnBi#Cb_LQH$%@66ZJ{gj~`)NOAlx*|D`STD8>EQprMg5KcoYQ{(CpfWMYR=8I_4qAG zZ~dQ?^zakXqx{%^E2U2t|6@{rq`!(1a3~->_+65}E$6J{FT;Oi=lP0v*k`=(^S0Rb ziU0R$Nv|1iTkQjqo>nQ#qNJab@hLup-?5*dgz4&^l={!er0P|afT#9s{XatK|Lx+% zL$HVS?Egp~|F-U}jojc2RM9Z#^M0Q+z{f_G+J4?&1FOBSoMz6cB zG!nU?Y{$;1Cv94P-_13*tjP&1=Fkxy>;;9c{#~DPQCttZG#AbFtD)21?y^VMRs(3?1GPbUbCUj#)AZ3Jr) zVe>e1I(`-x)>oV-8=Uv4K(}s^?%rICJN<4t{(*n}-dpOOhuv)Q)V6n;GB_LjGUTsu zs?+5+wn91jpM!E_UayUdTgl(){7K&#Nn4kR73wndORYtqRIkka zwsKyG2U(B%F?#$|ZqHjwHrzK$M`JY|4>xq&R&=aa_UT}3;^V||9@{?QJX{&} zdB<(V$7XUGZzx+s>F>Dt7~AN$Y3(t#$u=D4bcN&WqT^!A`LZ>Qq^UmUIR8k;`47q} zobfWp`4nw`hSndTbyr!(ZLeBN8=hwo+2CWg%`3Z~kDrH5pW`&~*O0t&&~bi0y|H5Z z*qVpkz6}-k=g@W;#fUnV#yjcQ*ZT>x-$nbSp1q*I$Rv&9L~e*V6%R(}nB?s^ZO>Co z^L7VqkJEOS^T?@A=RW$+{mBOEdzzl1{HY&uz4cCK{bI4RVR3mMv~lsUQ*pj%^OpC{ ztZzJDaO+m`&7Sl32*dvSXutWTTi(n2+*ffwm7qM6xz0TIPfgB4E|-Dxq(0?G{(9pa zY)@xsoBD5Rms_bX{qU(GXX6~_Q$;>oy`A;rY~#5q8_Jc;uznN+UU{h9D2BFp?N?9n zR6*OLS8O@f;WXawRDbxs=+7QoL{tGfrl)>Br-`B-&+mmFecQOsCtE+mPFo+tIz)U#Z)X z+m73kKP#lqsQyds$8E-K$e+#stiN)Awz;3lr~Z?-*V1-r&cp7d{NJ5{|9h4Hsnc5O zSB8}T6UzVHS^5M1@69q@m>)Y<@MG-?ek`WXBILU~-;eHEin%_Dvm&Y+^UH*DEHbC- zGtU>ijXr-c{~?#R+5dg{4^{H^8rm*$9;z&(^WMmYCuY-~f7pLW7pHT@Y3d_b&*!;x z`qMQ2`{7&N8#h02>)t=A-E%Cqt@>E(XIqcey0;!{c5Z!nZS~e;+(+;^waBwqLH78Z z=$|*~4ZCy>+_!Yjifr)X>Dzn!bhWgP?RvGXkM9MF3zT^i#a)xc;7Q7_RklZHo9mIT z4tY8EE#&3!81k|05z+BE-IndlKK6fR<;%S0BrD5@l4rrE@mM7lrHm@}$eB znes_cxl3|ryiV&Vtz(ogw>^AON{o-!GFtPoSx)O}qj8CGj8xIOoBGCF>WkOVm_+-u zT0UdW>0zJiiR~KF)aF!>o$r^Get}}H zIOpNYvpJh@=%93K$j|BeX!zwUwO=M$9)so5*lIOnu#roQ!7|G~`|%hbE9`@?*k>Q> zxc)`?F>jTA{NnS}k1_JG-)Fs%j$s~~{mtweXMo1pX~z1$fH>W_O8PJ2Y@;HmeX|5e#<$2>+o_m5;~j>DszC%kl*=oY`Cijn_|QpJv@S&!?TEV;X5Qox{-iWuC^* zkFQUWU#4>(I={@*`1#G#wTU-|PjhXUL*pHP-uL~>uJy(!o&S02XM7E_X~q8iQ#6l! zBlVZd=aIj6iT*u(etgXmlmWK&HHV%*4x8ucdOCc5sDVBUn-3|a&lc3RFpl#C%?}OG zF>mLMT8U%6twzna70EW`^WY+#GY|vW#80~WT(Fbr{14`ovrR|mk#VHy&Ty`Y@6GX? zaF}lwY3?m-&Tfi63v0_^`i$ov`)Qt^*8{R1ly!d2=486IDWqc$_iKvj-XG1;&#{eJ z?_M0{!~OH&d>XcphH+Z%_k#KKAbmQ{HqvpvpT_r?aK8ulLwfTZ@1A7=)rsp`n6r6W z-TRn~c>DhR?$|ZK*rQjrIo?`n8*P_)yd6KK^6~o0iOU~a>bo+XC+5D(+UX=aIF9P* zco|E*59{Uifqy;wmJZcdW>ap|HPd5a%)dA6#cCZLo9W6^PWN3_W0&JU+jP3W&-7Ru zS9L&s*|ZVTWbWs6<9y$UkG1@qM@~&r{{H>*z)#O*{+u7~TcPaFWq#cM>H6B3=6LN? z@%r4BCFrZH53*^$q<7r)T--!s)?c&_kzc0erRPE@zJg;Z({%b+%Ct==rukVBuRlOJ zGfm5JGQH&2{$HA3GcE75@oT2(v|lrA3-+sx*KEeKGvZg>7iXG&#?&*@GN(I#_2jIs zU2UJi*NTX*%*zuT`}%muyxr2L&(x20oP+Xbdaeyi-<{!@^4X_fJ|5w|yGr%l&$cX? z`{L4N$=p`@cFnvl%geH`<{_8IoabchIZJE4wi%`|Wv)CUGeX-la&0q8+w@#dDCXq6Mdu{1jfd!3u!iPoVL$VDIllCKR&(w{E*~Qku>=!P@Q{b1(^KV<4|H?cK`((o$JsbNYE(7LigL16S zCgS`w+59ri`#nzm`rwQ5-dk{c^|8Sh-ReEp#&d*CPU8*SA55?Fp65-Hzvx+yEuP=V zH(rdfkNoZ9+ovh^$bTMZKlYd<~~=>6y3HXkqaPW5W;yFN?x z{CsBhq_6F|&v3rpalAI6%GLJdPu4U&gZ?F}{*vr)+Mtf>CaJGk?5$7Gv!hLm$%5VU zy|t0WU``?NOmDu!pQWTJZc02;Tc6528%<(^oMC1B#7(!wK|VbTirM5)lHRa(y5qEI*rqlUR!Ra?ah9QXOWgaij%{VCY{DUz|=4mn?2W4Y3+i{Sy{{J82AgSjI z;~;O$dVKqTq;XJo{Y-G3mR&l(e|oORLD`jQ^>ul!#zC2uALF1QxmUfB?zdrFmihH_ za7~(NzC3o|aa=ylG4TB%J*MURL|ydVx$Miaj`|IK&9rWkuiarM)3U)QNH?GHd3SYw z&~p}F;>O(|nG3Hh$KAvzNA*zVB3Vf33U4d!~%9 zzkLnn41@20W$zQeO^`10mC5Cl8yLjQtNoZM(=ih~FPQH6iWBsmP58Gvi(`uCW4KS?d3b(C zgZK3_9VgT^Z{~LS`6tZt9rvy&*(S=D%~;Ob;pa?XC)4r_&~O7T=jUZ-xJFa?uBy&6K#-%Jv@s@eo zS|E!T;hN`T~aO<(ahW}g>+Bow*`}isUSt|Hpb?1GtvE+wr^AGbwW_E5p#`*g; zQvHz4*uj5(Y`GsYx3O+qY%KX9^R&lLaoR9HWM=2qV}T9d4?M2G_pAB2;(8i$@b_wa z|1SL5zE=8-&rzI?)(^%gUA3fh=`;H7^V0LE^d0A=ZTc?r(ssJ@4?mwz-^pFl(06Z_ zwlAl9F?8O0aFXs@MrfPL{a_z$&(O2|Q7XsE-^IW680(5XU1rbIbA7medfcYR1>xWO zzx5cWwPU^+)h`BV{d0D@=lQ2ItQYH^ZN2n(G$@<@euJQF>FYI}WxbLa){Aw|wqBXN zYao5Sl3CVEA4hx)`Q!HBJq7i2kCn%598(;}wWPUB;tTI7C?*ZZIUiFt&X@Y_rS~Un zS&DnzMu86F#Vt#I40ORbFwh70_ql8~_Hj)T*ihe9QNH4|Humv7mLTo&{DT-=xn4oM zWmd1i?jHIMa(49!@>=JmT}{1$7+kqt$t53VR+-9?Hg%3T|C-8DbOIsZJ)m7d?y`S3Hfdm^g0&8Z0a@-G#sz#ZR&Oi^nTxo ze6_y=&2pQU>L1S0J=9D2mhY#d56M%{LImfoAP!N!;M|1ROJCQ(f6HwIep}f_;IHL2 z0za*6BdE*DvA?{2E5-Yz>YQ0#fgiHZEAUNbc?JH;KCi%sK|9pbu^N$c63;O$Ufe>@ zc%*y1aDkt#p1&S1%oJL0bR(n=UUMSAl-{xp<{`2s^gJ z<0SkzUMXh6@(GWn@O)N^tFU~+<1IX&bZw;j%)sY<8-?YauI+T68Q9^r%dR{t#b-9< znO+*R+wo_1#-olRvu#nX@d9-;x6<2f>_Kxzm?-N^D?X)vp=751#$fB$`!=+ z&!=2Lyg$2g1;;@4<+{}T$pH1Y!Lbt@m%*`t<1Td^7Q}y$CW!C!X@VFI(gZP@KF!K; z7}!}k&N8_&0pKk}l4}>;^u$wB5iLmo9JMk4xLl^mqxYLuSWOxWCfnpYE8- zCjaTBaqsHtpYFKJCjaHfV|Mk|*CRa62)oy@vhOoL7FKS9m5;r2WeEKL?8*?dL-u6| z+92~X1bxEF`Gv(o&`+$CXLu|GeaGtZ5BihUMyePwC2;=`od!KQlYl!pn)g_?ZdZ8;aAj6S(hI zMccSnqRSu5v7|l=VDAg)@&#%9d6{(APRL8QX^?K^ymXrdX)c|Yj`JYh%6aKH4$_3@ zHQ=2~Qr|;Q@0MPArgC=a-u?16gY! z_$Bi)Wbc>7OZa6W#4ka*RKHj~`=xl5erdXdUotO4_I{b&;6EQY@4X{oU2)`o!+(lREmzGQTw9UsHZ#(oGT?6YY%INp@W*=Rf*Ga#*_e1*4y&uwV z?){K{bMJ={C-G*|@RF0rb?B?}slU<3zsvW@i~jHOx%As3)y^Xe{5v1(%x_>swh-d)nuJ99FyU%jOFzZaA)kFYZFyLi~IR3Gp9o$JNh-tWy^e8{Cbdz|ae z+sqx}7{tB=Uoz%=f1$&<80w#Ne&bk9$IFOwd(nGKygKrBK0kw`_W7A4dT)sLIs83F{=SN| z9NY9PqWCG@cM^M^QQ!aYevgvB%Z0S$bMM_ZoCo_DoSvV5);3GTX1aE(qV{pAPO0zK zn7LT9j5+lCb(`nNPhQ`XX&Tn^_X{{J*Ng2k%X6N5Lu#J7`j>y|OUJcY_`Ht9C0bZnc;6A39#nS6hNfBz!NzlkBg z56AmuYQLEJ4QL%YPf$Oy^t}fhj|1v>q~nav8~?!PjjsjgjWs#c$)!7Qe3y^O2j!To zrM&9txNM-~QpNaql)e+E_bFyl_RGvZ`7Gu0QnOEOobq|O*{9f|&;5QduFg}nvQ71V zu!Od^l7FwF_cL8X$5y)cP~lkQIH8ywFCn`n^j$kum&sy!w~^k*`@(!J|Mp|*can?c zePaB11KFylcJ|*trr&8Za}l2{f8R~w8A|KDdv2@qNJ`%PK013WasR>J3$9)2KlV_4 zeTL`m*$@6Rmcj2zl8;i(ef%!-B%RCbxsUlUaoeXb?L|8qO&jp{Lr2#1yXiRpHZOno)TKH)^qjT-AKz{E=Qa4VJg<$zKj(CTCOrL08szVP z&nnyo>%ug;9AO%i0qbTu%{>lq6{6Y---}Ov)t@j_{nr?9YvKaQpy}c{UOT=H8mq>eUpDqUeBh5?r z?=17jwH&*8pZi_C&*NUb|6I;HIC;xr)En0hERWHpYqqWzV)Q>{jHWxrR_bSUjQ%2H zmVa}@%$0dD`$E6EeC~RsF~sw6o`wq+J*3B_%S-|SI%&2uJv&#{(x#5{+?yo9)8?nSQj z3=TgNg=cTN>G_ggdcLI3+5FT1Js&dUG(N@m+3CLKgB`Cr-r2$H*F4slpf&rhMAqcj z2Z`N(k=}K~&ppMi+65h0ZO~7g z?0B5*MaVw4M-y>M?{T)Xjpk6fZMs$4>=cIkyw}mbf1mf(V`vMi6FpbrKX)G77xwpq z`@+2MpKp*)ZH?`o|?J|h|CljFEFhTQYu0G%f?uj%#C{|*`&pO&aY$%OMnvYYy2>WiN0xM|(7F3Pvlx%ib1^Lz+Dqmyv%JEfn~;or^*_JiO0 zv(L}a^I?m{^c!J6FPqe6WQ)(ksm}%R`7t%`)X(j6M)bP@DbN1!Z@QIHIpb7!ddBO? zpl<8v8N<7up*qm-uiZ`O;zsk?da7UJlf}-h&ro{O^8N;T#&7OoG5y}1wnM)M=$*^A z(r@O`GiE8D@pDb|`*rlYa{4(Yepc`i(x#S&e+Ods}%;I8%Y}U{*^z*V6r~D(5KRvTHZGFOR#D0e_ zNkiMK@!`db);6~{KUzCP%k)86hP`%OeOX>k`M!dFcW(0{Ju^8?$Mhr}z%*ub zntJn6W0vD3Xcvydjf?e^hGUdtjblK6?#Czl=x)XLJjq&)Pv4ifKI4~tJ(VMf)794} zoo{=734VPjO`dnJaEzq-*85FI^SgLErJb6{=j8WE9#2z$d7j5P#Jv4p+2{5fSI_BD zzsuht_!{-YU!#6Fg>h=DZIe)!B zW-jD4jhQ37zV^w^VqQ}p?$Vl=ckbbFHDA+r(zB8|H14Hyk~hAl^U71*^bTjfX5`Pg zKE1TBx6@ruvWDkKprgFJ{$)1zVLCs3pxkk~${goTTJI}EOw&8V7kr;RwmnJxko_Dw zz8-L#$F>jCcLz1&x)0SK=c zk5q;qlzk(Y9szbfMcbdDwO>9w=gaK{8=QCg?;`njQ`0mp)h$WSnv*YY=ysl%?YN_g z%J!bUKiW8LeYm|ZHv9XBoMR<==bKC%A$vmH9E%HvXLN1V+!oTM^# z+;sUd_T5tcS=bom^s7uu*Ac5uJN_)vPOOkNh?hNH`%vtUqn-E~sDs*!z6W|L;jQN{Z5_Q_ zp7o7s`?ZBj_~X)f7g1lp?W(`;?B}KXupIUMwZLXj_udTaZgpJu;Z@fCsVwWhJnv^; zcaHy#4CSuAx)4L=pQ}vJ2_k<`;jFx>cwn`r?Ucv{N<)6JDMzZunsy^HgCs*l*XD;D~%<|9P z52IQ7Aypslhw)YV;b)idLuUDB?}xE0{gA2;_rt_0{c!OTe#k8U?EOI3ds+1lsrqm~ zOs>)o&SfiK?_`#L_I{Yi(hsTna6g<`r5|!G;fKuf&)yGf=o-73uCdGLJ_2ty(RLnf zm#yddN{8n663^)Q8lK;|lg8zI->F``6KKCM+;1UpR`+9{NK zgW09K^;n<}?t2C0E#~r_=koG<`}})l%=~*_G#}yJ%WEaSOw+YRU@N#s71;9cH@!Q> zmS2DNBhs$qH%^Q1W%4y0w*$?O&hc-Y>UQ8cQ=Wf?&6RwpZNi6CpQU>7_RHxytLWlG zmDK*;d_Knk&D-3+j(o!RF`MLmz%0FAiQ>i6aNN+G&XR_{oA2Eh7$Z%DVu^h=dxalY ztR0hWw%twJW$RPFSIaR%-+8~E%Trss<=CTiE!uy1(~sZ-p6}xF_tMZqf zjs?_(%dnBkKxOsH6Qwx;o)@Ec=AAEG-+2GG_sIJ=$j^As!_#!H`UJHJ{lDR}Z+6J% z4#ivQale(?W~#G@ zaExmkZDfPnGO&|*U*Y|}wz;3=c*jdW)sy}&D{D}8{@v{5{WBkH1C&p18BpYO4wjG5M3KVL#VPxAYD(%J5$ zb4IqdlXBk!=`w4()Ms9}OqV*xw=P`z9A8EnK2P(QiO=&qPQrVSTV))OM;bo=tfBE$ za2`58`zeZ{X*!pzG{?`MFU>Qn`G_I9H-oXo4EeT+>`zh|cwX3F?>TS#=-4GS$4|9h zQqxBB>O7CWmFBY7(|^pP^Zu>$AM@zE|6%&Su9M5L-^r6X^f$^J`tKd%*z36MY8qqu z_jjmHOYdjVK4m|$U-?;!LVA`>>m0flG`}u*w^Zo6zt%d`RWEz@*V4O{?w98*g7MSndY)?aHsxI{Y2Qu7?>M6S)^y$q zj`!ZYnTye7%zwvGE!CBekxbLDp6i5n3b9>gVedGi``OFNQo4*ebe}!-9Y@)uV}GDL zY@2O`z2k`AD`R~__udWj%cI|MlubJQjw80s+%)j_mME$q!`zYS)O8CZe|6FMTA9!@o|_?_s~~*mlEG6$NO!@ z>3%ldZ}pxj?dATHo+<6)HQgT{;5FSJAL2EgKSy{?_sPd-&BtXitw}@IZ2q;GOZ%@R zUL*V!!mDV%h&cJw)8pB$YTAD_@j6((l|-dwA!75%Vr4ikBq~zsrx$6A9Ar^O|gj z+m*MycNh}iO7-Ts{aDB|c`w9g>ia97>-b#b>^UFASP(NoeEKmH#Aop_zK-X1{zb&+ z8s}E(i}yVEe2LHP`}Q5#-g@Xj%l77$y$7$|aozUH->z-kcc{6gaqr=Mt!?+TY`-gZ zbo<_WV~z1cu|vGE{m9{c-ughxk=AYdsJEu&O|^R>Er$;uI{f;`)kj``bsPOH-oo4K z{m-vH;;-8d#*W4t4dP_weDp?+q$&sdR@99B7LNa_16yu8mh}BssV@PQG?BN_V6s z9=WHjfo&Mhb1AE_n=&<*}{sV0X zy-l{{S8Cs(gGb_f55^-$54P>?XxrN!*>~tb>~PDGBh*N2spa5Z@z%&8Db!NBmiKIn zPzl=(Ms8}|OU|K&+S|S@QoJ)7y>3fn|DnT?BW-sb*xR_T%`dg%+|0+!wk6yce{ZZM za^UEZc;wEONVFt!ZG;l-*tre*{d})U*vw`Bf1=zoI#JC%;(@|yk+@Y?ayeWl{>KlUfPuKI%qD(Y`2z470V#wsSS_+G_>KRUUq zecjtD9(wUV?P_`1ocq_eJ>b6Sjz>?wa`Ww#|F-qRyZ`<2i@R=r^4Cuv`Ob*@TaUcy z^lJ*&R{r3pw^ufNjB z5qQx8TZuCjN5p{yS)1N?eOi2 zcYXQ(ijOwD|He;#yQiY{s7P{A zR^I)IBfD$=%S$WX`Qz7~{-1ySQTON_uRC3Kms2@>VBPL-b$q-cIdS#rH{W@A<%XiN z@zNLH>E+|c$=Qmx-u=FchyVAV+&K5v-ipR8->rC4*N=An_cyJn*!}o5yFZ;%{=}c$ zQ1q26<_}f2z33aeuX^U&kH7DpqSLuQh`X=&^^cyuqH$g2Kh_uS-uSU6cisIzN~kXD zE63kC>b9?Yo5asQRK#zo+x4xEwu+CO`^k;3d)J36N?QJ|;+>zX*mZQxZ&d6%I8Zr0 z_xF!~_PS4>PJHQ2m4Ej1^}GM|4?b4W@R6}oZO&`l>t6HyQy<^@&+Z>i{j~Dhi5-7c zQupMk2Y$G=@`~@5p8oLWKX(84ZIA5gc;DM9I^K8nu6_62UvcGIzEkniFMYG@wzpqb z@!Rjrshodc&*QB>e&lrgi?>w{pS^PTjqATtasMCIo_go!eo%4rV|SeT!>O;i2S5F_ z%2)jQ-#i}O`s!0xU;c0IzklohIUW7Wuab}4iZ4F;)Q$IFv!>$xJs+pG?XP&vhdx_T z@Y#zMFU$S*t{>j{@zc(Oud8hOKUeMk%wIiK@yLJOF@9Io%PRV-uHOASKilBm`|#&Z zzab}Dd0qL9)P_^!)2ntpdC#L2k-vSSV)X5wagVNf$F8d{fBoshAAUpSSDH_bANcBD zRD9uotv%KBPb0h5x5g@){;Buz{r`OT?%Q8oThaGBe|P%Np1!5>%XhEa^}V87b}c^k zWW{w~|4K#6pVmI{`_Ejx>kEH*@9C45Raaj2>6hGi`<|D7`QvXGq4@gx<9FpY?S7=Z zrs6B#I)D1d`)Vt{`m;MLzV^unDkgTn_QuaY^p=XTSA4JH-p5}=$H&_$x*q<~uGhch z?5Q)q^CS05r$0mfy`%D}7xnIbYT$~B*Zf7^=_}^P-G5vE*3+?Xtf@R+nSA0`fAWWJ z&GmnOsv+{Ed*~(auKebM9bQ~H-tuqZr=2C55J1`Cu#qE zH#2kGKc{_OKSJxhH#vznQ2#?qq@DI@X-&8k6P%H^pXl1g{mVFi#LMmf{%+c*#r=r; z9#43MJ4oX1e0sLxGgGa1IL<~dZ%?z@KX1J0rq@S`-}vUYZHbg^d)>BZWM_2ej_B)l zltzkgZ)uKH?~VKXwL79)D35%}C+B^)JGmW|Ils9v$0;UOD17h`ZS1*n;MZPU`TqXg zht@v4=8>GrU)j9&TP&m{LjQdyI8GmvTdr&(sV7=f?`t*@Zl(XcEuO|N zbioy#9mWfyiC;z=Rae&ff;)0p;MJeYNy{jIzURtuF3(@BeSFOmIgjLW{on2>9k1+F zq8b&CNtf>jiNB;NXio3AB=-9udYYW_^kP;?|bJF+PomV^b|nh<_R2!BTiZw}#YA^cDXzlS*2ci=Dm z`g-S1+WbA{4vkf0Q|f2hi5Y|7kYhK;ylK4!1W4Y=8S9n$cL2v>n`ksPW*@_VxfBiZveC+mX6Y6JEFk z-&XgQo3=Uey+>*GiRaTAZ{l1I(?poJ=gkx}@|?!OyPW+oTE+K!A5`9X=y2TGzrXz` zUB|a{w8fpu_Vz>juB~#8h|1gFQRVFCc`|1|&y{#7>u9o}(Vy~a#FUr%z?;+Z_HUu- zszxs{m&@CuNvKAigbF@qvyFSH!b=)&0?DBXzavgn3zvz?5Ib})dAGUkp5}emI!E3^ zCHFs~;&M7F>fx5=qx)K%1AF5Kj<#Rx>?4zh_BnBK#1WeJXmJi7iqjljBiC(TTWoJT z%^@Ax@6cq_ey&=J(|+hKazo6yw}odgj&RM`$MME^OGo_Z;TDJII2yf44rebV#_TBBx!z^tz-is+4FJKqxZ-F1W-d~KYo)(UM>5iP8#Cenz zkq7$|_5)M818KW-~ebVT`&lx@Poi%!JoF7nM zSL}O(VoHPZfEQAK%M0`<=O*FMgBKfpwb(B)dT>5pYx}jLuQz(|cB6+M=)Rw~pgiEc zMqe-XPZ&M;fYGB~gGLWNV)RX7f7Ix~XN z#tT+2e9`Eug~J}~gXc*;?1w^VX}w8t?S~TKsBfO6LHoG0&wcL<}KZ_h93Nc(GSQz>_HDcWb}iw zKP+qL!N-gq=}#Ix_@vRp?ir&8FZO~g=s(d;CBji2@Cl>|waMTODTR5*? zE?Qm<8#^)iY{b|B9}BVLZ15AJJQ$zl3P*Xs^MtdxS4f_`Dp!27;xS`?Og@Vn`{13* zPDI)1H+IJ5vjJlVd{EiZ<(yUgmCAmuOv%9y)ACuKaQFdyqj2koF=dBCFJJ7O6zOqe#PHm`}(|462fakc)f70mmCV7;RfNZ;q6NA9h!37#e~BT==VFU-m~sF zomMYAVf59)yNn*ZM>zYTP_(=nR$Tk%q_WTT&670a!d=?ed_vjL=aDl;FJ_!+rPt?? zbBgQp$f9t>)jSMc>2JWF;JLzWToow(D%hZPwc^?j@etk@!Uu%gI2jb~QeHZKMwMR2 z$(V4|3vn`T^-_lks~0|L^oWNuMh`wE+{VcT#kGHO`Mw1$s4wCqPq<5;={VUaobBs4 zDKL8a*jpk>uj8adaUCaB!VxF9KCBiFe}dO2JGy^sQg*ofIA)rKyTmk)D?3GA$^Ab= zifg}3h46(Cjt&rhMi#mG{+3HC9ajay;RnP|p>X&CJYw~dL6Ox9FE)C_5B*M$w?yeL z$1`}Ta2r>3ifjKg3rBqsSFOTbvaRE)UD?rb6*qcH<}C@O*KyUOxQ?qq;qWKs3x?Z~b(B^xd=&1ZyjyIf8G zu@t=6-(s%Y#SP)jA-r8U+7b3+!d(Jf9xMr^=XxPNyM#vxY2IV?VyM^Zg`Y5b#Alz; zgAWL|aXYTK_D@pT=XxP-r-Zx2G@n*>bllDuy%gV>Q+ge@3ySNw&3}oX5^;<9sRH5f zCwQT7uCI>UI%P-4PrY!L^qRLSJJrj-Uu3Z$+%-J!SA7NR zb^L4;4nH8?3as8w?i5^Cg6O0VOjPB`j?IBBqYG1O%B!kdjA@z84Y;4$GgPI?vB{uxmAbvz6Tcc~nj z4=Fo3PDYGgitn6MdL1W|it9L;5so-nkT^Lf9R38KRd#foEE+q-GQWvQL)Zb&mB~c* zTQLex>oKV$%0n*z@s^XqVF!F%INQyq}O~(*^x~z-?;D!q>LQsM9e;=J7I#gJ?D!mErP@my{6;I+bSoHqz}$*%TilhSK{ z#zOS*5Phf7OYxmCh<-LipDUAYC=ceH^Ms>3;E51@SBQRI zE@ELH^|~M&_QA`p_8Y_M%Y|Egr_p16JYn?UCyhQS?K^Jt;EP5-C3@!?znmx!c)4(t ze_Hge(Svsy{aMi`j2?X4=wWBV=)v=3Fl5WKQ8>yEeNBkIHbj3SMBf*ppEmj#sqa~% z2Op4=F3KMj{h)A^AADR6W~-kNZuO%jsqqFoW5TVz=C$edwZg5wFGSxTq8}5^{nBgv zth~QxLhK|%?97Dd&xPn0h1+~PwxzFcr*K=}6T+>XrtPVAW~CjQg~JYbD+5~Cjx>e0 zKO-FNi#Rza9CpBmc6iB_?(d*|hlN8AK6!0={Tbm_fAV$d_2a^=zV5p8`g-A3KMNmtmyKvY6kKGWI zN5@a;>r?H_OB|L7haK=lh`uXCKlz4K`y*oijBwZoUo216M@8@4=yT}7hjyjvVP{x4 z^x*R$`U@fYqRRC4i-lYJ%~igh+g-X455z)vX9yn%;lm-kuQe#=<+K^`cb$IWF70bR zVD$N-A2fRKQQ=%K>C(IuNu!U5ohid%=Uj-Lyf!}}+kdIp;8nhGK3=%|SPF!@1T-&F z`pa0H%YW!vRXExUJZkm6+$pts;blf&Exg?5!K;LGy>PFClhg@!XM7N5|oS(Mxrm zVWrn`IHtIc!%5*NPecrzG4{ceMvwYV89n$p;p@q+_Jeb`pOH%|?ay4pVW&X2wNs|J z?hjqzsF$A`ePz$s2d`6l9dGr*qa@V4$?C;Wv(*c4HG0HbyU~Nkg>!v%9CitJiEF=g z8xFtqDLdN#L&D)7#M`j313sec=r|lRda156q4YWqlZxv&%y0KoqCCZ7s6e<&`&?h} zLZe50HyJ&6iEtY~)kY8dHHO1ZLx`P(;yMnyg`-|lEvLuW2k%#U9d84|qa@UP$m+$= zu+y33qe`#iZA^HSgqn|Ay%?IXdf}5sUoHHM(SuJ3w{dt*xJ&7E9L^dJzbz;` zIu7#=`UQZ0@}xW)g~L90zHly&j>AHu7c)+g((5>kDz4+u6^`;0i=irGAH3S=QQsP) z2X7E=!lNYAeA?>8&{?Y&K4bLN z!p|8!_?&PXhl|2pO0VP4IpiAzhu`vrTmMId!#{a`a;M1H0WVf|bR0&FUd%Yci>n zbP2b1`a}3=2roF|+uunmj<*G=aG`L-A$XC|`$0M7q*D9{_Z4TkxifcRlifcQQifjFh;#z+pgclwS z>ZR?JD6Z|)E3WnJipx~7XSh@G?aH4$A-qrV*D3vA2*>*x>~S$8dV753-QycYJY(K( zqj1DCc%jkfd7UnO=fdd0i;aGx=u3II_*FSs|geWU2Fgrj}I%Z2lCeVvN8 z`Vby7_EFBbu@By*>|C$xII&#dhtV-)e9dq`lz(y zkkNxr7=5YeCygHboY9wwe%9#0^WN+G0rf2x{YK%aFL<%hyP_{Kdhi;fuM&N&(Syf~ zzFPEgqX+LZ`Wn&q8$I~2(btN8#OT2%jJ{6vlSU7I*68a+KV$UZ7mU6^^b1B0zVUsj z?bRgueBo#>@FJsc7JaeNgO?k9tLR;$2d^{wcG1@xJ$Sp($3!19dhjlzkBh$B=)wDq zzC-i_Mh`w}^qry~GkWkdMxPLU(&)j@8GV=NXN?|w(dfHH@BFUc?r2}|0^vA*dqiJo z^x!2%-z)m4(SuhReX;1PjUK$!=ue2g-RQx)jlNIxJw^{cWc2-_A2xdMGe$ok`lQi= z&l&xo=;w_dJijybcpMUafpD}Jc&X73i@wb0!5fTzMD$HY4<0l6QPIbZ9=zM=$3)*_ z^xy+Ve^T^=Mh`w_^y8vGY4qSpqn{A{l+lCF8vUf`=ZqfQIhNX9XGEVX9PI^OX!J?Z zZ!&uDsL@Y}zSQW!tBrnI^fg8g-emM=Mc-`n;2lOkBl=FG2k$ldbD}?C^x#8AKP&oS zqX!>1`Z>{07(Mv3(a($itkHwd8~uXlFBm;|-uqMIp;z=9g(DuoON{=6=%YptUSss$ zj`jsFH2M+IZ!&uDsL_v#zSQW! ztBrn4^fg8g-emMAMc-`n;2lOkF8WTR2k$ldCefcTdhk)BpA`L=(SuJJ{Tb0u8$I|1 zqfd%{!RWyYyHeYCO7xqAqkX~4jDA}5N|=R`km^x(MH`OGJOt=)un#eN^-_Mi0Jd^rfPAKIGRM z{s)f;$M~~M^hHJwUKOIR4$-$8efbrBIbuc+o-le>^j$^|-e>exqVG3)@DZc07X7Hv zgHIZLjp)x9J@|~#*NXm}(St7-eVynRjUGI|+xH*Zt6ua4!qL9q#YW#C`VylDca6SD z^i@U=UT^fxqHi#I@R-rJiau`i;N3>wF8Us$2Olu{nCJ(M9(>H`j2_%Mp4z?%(dP$>_m5jlNs# zCyX9^!03BKKWOye<3`^r`U#^4KWFqP=d96#=Y2TU|KJ;i!~ft>tC#YWTD|Zpqwf=5 zZS>#`M&B>`CZh+B8~uRjJB%K@$LI$|-)r>XgGN6j`XQqSKWX&Cq8~SU@F}Ao5&g8$ zgU=cLsOaa79=z)JQ`>h;^wq-AzTgc;e^T^KMh_l0`f<^B7(IB8(NBoJ*XY3qjlNdK zKSM?je$wa@Vt?G|!DozqQuODH9^C0k^(T&tT;cF1c*N+>i2Wj?2d^^vr0A=S9=zG; zr$pas^x)k_k8<`HJ@{~lek4RcW%Scho@t{8pEdfkqMtK*aOc0I`hQ0Bxx(Rp@Is?M zC;ClB4<0r8S<#moJ$SXz&xyXq=)s$eeqQv=Mi1U$^cO_mY4qT|M!z8X6Gjg{Wb})o zA2xdMaihlz-6o74e8K2*^ZfQ(Go8~sMnml!>`YxMb|uQGb@ zdZUj?|I=Xf;4z~|zZ5rm@DoOl!AC>%Ve$nW`3qO+D zUYkU}NjTaIyxizfFW2b7n?m%>A^L8kk4SlXj2^t-=!--@VD#XlMqe!YF{1}RWAr7W zPZ~Y=Iirt?e%9#07mdDD^iHqeF7Q8ifpA<;m5IL4=)r4@zFhRRMi1U>^seYzjUK$; z=&M9OVD#XlMqe%ZF{1}RWArtmPZ~Y=Iis%?{jAZ0FB*NZ^bgL1ss0DwBpm*)6Z;XP z2QN4JdeOT^58hz(4We%{dhmqNH;KN>=)nh!zFG8xMh`w=^sSAoKiHW{Ic$7ZAjQ)cc8GT&z#YPWaZuA|Zca0vr&geTuUvKo_?M9yveaz^=yNtd| z^xZ}e-f#5Xq8~7N@KK}h5&f9agP$?_UePCw9{ilqpAh}5(St78wON@R%^iiV+uQK{U(N`Nic!SXoiN49`!Q)0hEcy zVSh~O)gv7C!TXJVT=WA*4?b-4lcFCndhiM1>^J>=fwRUA$}?l^fX^F!Qu4iE^x)1P z`~HC+rbVAC9DV>V6mH8|V(fHCLq?4qa5uzGjj=N$<*7Axz#EKyR`g9q58iI{_`XKW z=)t>hKwFOY4or&W%S^4MjsXX^F|Mz+wZrpJst~%qurt3BpmGy z9yR&}@k6Q6gEttxv(7I^lhK2B7=51TJB=Q^N4Txmkg=05c7}}|@Cl$ z`8p4!9!C+elPetl1dkd${9J1E;MKxyz6~LEnnLWvjUMgQVf5fVMvwCM8a?<)qeuD2 zjUIeTxUJU(#oyq&*8lr(s-L~V7ol9?@H2S6(J#pHQegDpQKLsWON}19Iz(R+qVEaO z_lD>PgXC;c7PYhJAQOO-w!uiVT9K0io1$;D*Ie7In6o=;jGoXOWApuveRSq_^40me*=)#gNpyA;^T@} zDt=Zt;$%SLZALi!3_h#u>{fPiKjrVRf3*EV;jlj>_BRQKeefb>XScHNDz5D}2#5WV zHGZNd;jjT%Ru%gtPy-{8$!+y96}f_!(b;_QH7~UpUGSUTE~NzscyqBSw$&LXpvfmk77* zQmVKM!h#jy_-189gQQmL{dw=Zkj5_4y($9R6qj@zP=JgLf~MYaIa6AOguAq@`KYo}#X?znj%Y|D%*9dpX@a6O$ey&$~ z?ax->@B`wr-Pi$-DLXnoJB%Ln>QZ_gpS_Cf_#6<9@}T^K#y8 z$4Ty=_%%U!P_I1UE`iGdXLR(5o~CPVa7 zA^HWyb(}aueoasw)GJrGOF+j-fzs;;Job%Oj5;J-+<8&&$j+1W1b)57GM|ltr{l-4{kg}ue zH4&muhUhOSuH$4;ILd>1Igj~UF0FK&FG~5R4wY$mpx(gJPox zj|#VO;tF>uy^fO_rPuy!5Dq`&Nxn_S4tTS&qvNFA=*5iFq4YXVx)e`|6X7UNnHcIf z_Q8jg9bK=<5dBn$enD{^C(fVx1weUFuUz3S0Uaj=O0VOjP`Hhgh|$A-k2;j+D6ZpV zKsd^Seq+$s2Om*(biI-x`m-T==fC>pT~8|=CwanA9$)1+8-=?BbewEbdL1Vb;Wkc+ zjUM((j2=8{^h@zz^x);fxn4R>YK6PRb$`;J^xB{8!r=$RL(JF#k1IPmPCAVq_3Bo7 z9VaIg*Ksl=9OXeg3>*94W6F-M*K~;fT!=nz*e|h-lYHSQ59(DQ+$Esnq)6#?oD>VU zaS}Cp*e^AD@G_%ciU*?yuM%$Kq+U464}Uf*z4m8ZIQ)Qk=rDG`JCz+BCtXI5di5&3 zj+1`Hb)1X{M|n{GQDYx`T-nj}nhDX*h3NDD%rCKxlS1Jr59+l^IQ$G=qVzgWqQY&Q zlo>tjlp8&`YxGO;VD#WM!fl*12}k+i&vvEP{_GSEKOi0w#twLwvZLdq$LLY7KBd=j zGN`zYlQH2a56XYi*ax3fc67aFL-ZFy^o5`GOKjsLA{^yGy^4gx&)}s>uj8alxQ!Fn z=wYYI=)tRvekmS|9=uMtjgwa4C_nreS92;h8 zE3V^YTsX>u@zsQ}51v$ZbiL+7^ot?-$e;TqwsBG{9OXg1N`%AD;N?oMy9;pekP51v1oTHji+UmzUy1uqTJmxbtSjlNFo z*BL!{!szQo-(~dRCyc&H^nFGTzG(D#zQy^X?+4Tu+!el)KGw%?mC@t)?G?`bScz}a z`#WUp!2YnY13qT-tx~U(Mh`w|^fA$&F?#SBqwf&?Iim-^Ae`%Uv#M9_U-&!lPeSbE z35P$y3ydD+DKvWUn9;*Oaia$xHF~tmn9+mhe#tMtZLfUcs8_ett3WvF1zuwGy`qmA zJ-92J^WCcaS!3+%)%236uQXMsI8nm;eP@5)z2E(~2QDDTZq}Rycc1e+zx~_a{`PnF*?Zq} z@2xXBf*&({@mr(e3tl;ysqcfT+;faeeJ8jd8)sbVEBK_+c|_?<8=dp4bJ^$!zU@D_ z%u?BN*y;y<|q@y`P5R5LF22wuZD*;Ar)Iu!n>!p9i5&+naM{72vx^EkGA{NA9=+%a6TUo;x{Yz+3x34#MW@d21wUr^qSI*jf{!y!{<+VY7Q9{z z!LKU3Qt=lQu61^N-H}LN^D7mu`L!WT;|!i7VpWAuWJ@OK1z?j_Fqgx{%fiZj{> zuMYOyOM>?ae@Njwc>mo<`O&BVsWrI#PEv=#<#&&U3@*Q8biv^AJ1(;Z*T0iNr^Ful z9MO)5%OJRX{-@U9@|2EsR+uif*)4ff{k@j}Gv`zN9TRNI{ z_qHT^z1_`Cy-nWk<2^mz?(R-^;LdiQ@OGc*eER8@lVF|f>}}co=;NRKU{7z;iO+#b z0xfL~t=&yew|KjsI(ce$Q*Uo~`|(q~Ej?WR29p@_Q`I&b9iNZeE@hvP{!h^NV23bY z08VTF-0h6<^WhZxRF1^Gj%UKTJ9nAzI&R996U5aUjV(!Yz4`YdFKO!7#$meralTIy zMw{60jy&(f*vVyo-G6ZmUx=LA{8hkn`7f1pHJ##ob{Z?V@_~vZ71Fs=a1e_N3M@18*KR$9ya!fKmPyFtLMFB#BKT1 zXXna4{hVX|TA-47vH5#CPj#PY*?nSn=bjjCd-w0%w=c1`BC#L)_wC=iKen$jvA;65 zx1!>K2P$K+2lnoLpdw&4ZhijYBaakBGKvxJ7nb>lN=|*>l}}aigIyo@Ai6sp!7bz? ziLVw!`-;5C;^NX@{P^#Fde>s|Z3p`N$g7LBk=GXMBRgMDel*^nd{28{MdZMX$@jg` zm!R}R^L=%c9@^61Na>S@``eIuUaV@wJMcQCZJc&-n&fnV(?L#$kxoYroQ`-e?3pfj z+20pwn4k0xR3)E$q#t&qJnxIJ^GqW7(f9SEwzV+4F*yIx(tgi7j&mmx8qdWa^PXQE z^A5~=-tX)w^yjnV65otJ0=j*Xw;FZm{;rP!E z@9MvBds+X|Qd!lwcOW=d=#^E``7U$*JkF1Kucad1SfbDyNDM@t$G)@wI_gK~3izC^ z8`)Ff9iHEZH2LJi{mC5lbeyvJI#s6D7(sn=aj4AXNAKw;d%#KCL-lTiy|@q8HhK-G z(YEQjHveMTvm;)^eDPzu`pGWT`*dAh8T_!TztP*t+<4#@$K45T96oxi>cZ`hp^Xl| zXf-47nbn2ALUl9z9NIzbl%cFR?8&wr?Xs+#MsI1r)$iWG<_u>kRs7h!{dN9hz{PHg z%d)^X;!i5WtNrrxvp*d@IE*$T-=L1KBgWGH6t0Ju?!Emb|4$=3(ViUFhi>nu*sgs8 zV!Ir%J?S-6trR;;OR*|^|81?f?^7Q($@|og2Hs}*# zRn55mIo)vzT(^N+ST}vI z9Elu2zsvVf?04}#^}R{nr~Y=3_b0JG%==T=9}te|TWLI06giN<*f#amP0>D#Z+{T; z1|AQFz?e!5L_7?~vd6%wrQiDT!qPW?Ok?4L|I>|yqg&k=xMXX?>og9Y+v3K-DM~-^ zJADh3-uLakMM^O)_O>F$xVQ)@_3^MFNJ}DaTs({W1mQ70j&oYUX@XOq(^^jFIA4m> z1x^<^^_Uk$3Y#!?ePPcw@1=uO)}>#dac8XRGWvbG|IZ*zY<1(>*w)N_hQ_sZu(u9l zg4osr>3hy5jDd~^$I-_v8-lF0LmbRK@rc|Nwv`S>d5D^@w5SmnIG%K2KHpM(8~hv1&u zvFT+Wv2uE|SN2}IU+cQIfh+Tv!L6AwLl^Ka#5~PoVlVp*>fOj=PU1Y?LCEd zzFOebCL;%`x+1S(ncmGsbXgSBq&Hsh@~A?TmKWX^m`AZe=V%=NMPO4Hr#tQJae7H)`8Yj@an$t+<}a5pjuD@dJ(#z_ zp2zy9Fg9|rg6Dw%Zb-flX ze+8}E)~HpRLyLTlHhA$8VvO32#;K*4b0MaKIHB04*b4eOoZIn}(Stfpajm3d*7hrR zA|^_u+<;`}E1sFm~Q&P(eiXCe(%W4QKY9-ln4DZPf_ zd0#=f4+Zm%G4PU4(yujsx7zdmI`J)UDuMIZ|81mSM4G++u|9ifz2xqPJg+@nM=4+T z2NAC^y`Dnl=>9g$Z?P5p7M|bv&E_S)4X)E~f0T#c)^5)m=ePI<{ATl#--g!dw@bIc zZ_Dj@pg9dNe-D9+S)1RmR)IuV?-^=7;(4k1;=)Ltn2@tc`n0)5P{Pt*JqbJbv+M|0M&G2cau2Z={>-M-si@-LgZ>v7F2)_Uo@ zzCY;mbE}+Bt#W>0mGg_MocA!dTgkp?Fek+OQ}BnxQL-@qIPwdZx3!+H={PDbTw5Gn z+q7IeSKLV)UD&i-KUZ8x9G%IbpNlVXbTo&4c3ltS`pUfDG>y5Sn`>s)&SyP0AJp$- zt$wW>#D?9Nn?Ooh<48$=3@Md4f|TqSMoP8~A|-nVkWzh; zNU1JeNcSOaL%IuTBT`y3PN2-;t*@m9x4s&T(`jxK<@X2aUNyBPv!0E$>K|aO`UlI_ zwKw5m4y<4Q{*qh2PQItP5AR>j40sJQ$@~7eFZrSG^(E;&XpE=EJ*;WtnT{^BFRf({ zQi`?gVM?)p(K5L%VisIl}p7fQLTb_d}eV^v;gl+}6ySxMQr8~=>r8uE} z4sAcbn=v`whhwtK9l!8RvITWd+uVg?-A7KOwc1gC^2yt-ueF>w{6_D|O1@NDbK~|+ zrnQ#amv1@NKDwU7UmNw`R9b7fefgGS?W1e?R@pbbf_?dxW9_4U=T_M_vx0s3mSgRs zKJr%CNBy(YTHe0-mLv9|9|`V3)Su9GiM}bA7mee-gZJ_p>%0RA(+7G3Io{g?=l@+m zzxWB&FV3Q0M8B}CU!*>92IWzon4%PY;sT}U6Bj8(pXlLzEPC!OiWJg&-WUKqu$MZ z-p=d)4EXoFEq%>zuznl#5nHEGPB6~=YGe!QG4MCW&g&iM@3}6)`t@hMrBo}%LEk~U zCl77L^Gy$-3*}bXPysrA-}E*>vA%L^_6XY9r3Ux9L8Z`sX6PhUC7{ z1+L}EeZz8lb8zLpp}BP5NPRa}4CcYt_6+60*Y*s9KZtuj>OB?5cmVMbj0?K?zFM2M{qX!V=3e`py4O8>1nU-h3BK*s86`OH|&S> zb2Qe=U-PBBH0^T{@=Qe2KgyW0y>Br3%Hlxuz>E0Dxcr4ZQF{M4crWe4L7y-feHHIb zFYf~)c=q&0B=a5#ZS`_hsxJEdHSI5Y|FKa$!y@+psrxwUt}&`-*E;Iiy-Gc^ z%UDmHyvDJpz7}%KQ3^a1ll|; zx-R0l@5=px(k{dh?iUn$r>Xy@eY~fAx{vpx*dM@t5p&M)K5+(lpEyIjzYY7tykCU< zv%Fu7{SoY!u+Av&lg?OXAJ2pzp2xZ1K6(!LAg*nc861z}co@ehD>y!n;}IOAjNll3 z$%|jbz4Z6cSAOU4WBp$X(p~+NsN-|Mzrgqx8J`0FyV#$^x$oc^^=TZ_Gv1Rbo+yrH z$VWNwS>R-AGuerIZ!2`58ECn=(}CCF@6&XhmquPbNOpFBTZnaRssr7-uVTz{9C_$I zE#uR1)QRToC!t6EKGj8R|E#x@v3Nf{pYbJ}r~7LPw%{Lgw)nH8N9E5VKb@PS^a*;O z{P64c96i5F&#_da-^`3nw#?_^(Q_^7zDd0&--x=<_yH-#CT^eVhHF1P?%aWAVNv&h zM?OGb6U-IqUT_2J(X_UY_z1>>bbg2O(Tx>+GyomabAF~fi~JvX2y2{3zZ*Q8k^JcUQT8`dT__WMRMz{cVLH=nyXVc} zd5-@PJXci_$v^*EY@Siq{H)p!=1S^$$ee3OIr`MNIoKno0Dkw$Yoj^)`_5iMRN(VVbe;XX*`guLMonqmI zJr(bK+4rzdeb04#K8X0kw-L{cEsC~h+F%Utu^?uGeqaaI@$9p4!LyIQgwOZf)<7Cn zV~CyPlQmh--VNW@Fh8)}J?BVmJ+NJkW1c*eetst(ji|S!inMSqLCn3sKY8dj#14;% z)~Hp)TDbpgNNX&p+m0#|u=Tq0I9xH`$R&Eol z*M@4-I1Qg|LLF#snRS22yPXcqPpqOpv5G$8H{GAO`u-GS=wMumzV7R(&A4|DsCbvL zA&rYYPq?{xG+rD*+)p9yb3c#vMU+tuKa|Z+fv3mDzf`dD*m(7_X&m_lRX10T?uVC; zi={sFoZQ#(?CL;bFps+D;!)j4*ID;>uc7X_%ieh1n^E`SJnEi{M|B@tXWiekhPvl2 zd*gK{pN{2G_gp-x`?+=2ea9N=p1bUg*PZ6d<9XCQ7mw;bzRtS8cMWyVUG}Z1`$V2~ zw>+x*`E}O)pRKX(%gbI{-DAN$0iX9pDr=4M`C>Xp&t=nG@(LE)J_1O{Rp}8C76&uFQ{DeLOOuRzx z+aLNvjJs$JBgywmcW?S|ke|i{R6cCZn%_wNDDwZu74p;gX{G$zkpCMY`N=-a-!Tqr zn7`9|ET|J#(dT?(Un{{_rDXg)IQz2v*PxzBe`Fg}I(CE>14W%Cyq$Fo!c?rbfi zxp<&6%zW`7<)w0Do=5Xd@q^2|WnSyo`Se-qGK@QkSJv-h#QB}-P~bT})iKb`$uH}_ zggDrS`6rEmY5z}xaq&#$v&d>r2pkJ=QCU!V)Wyzxux%kOR{w7*%hbv7tnK`U2=215i?H8Pw)L$Cnh_c=63@dX%2WXH5^&5 zjqmTTFUV;AWuUn+z0{_R-nCnxSFt^#_g8^lc$?UEO{l!zTVq~d<^Ah5<;}Ev3i+hn zY0eSL(e8Bp&^UnB%jPz}22(KSf>!`P>5koHHgFL`KOkPP~Y7xpBB^)q+h zug5h?>-KcNrt6vFe5TM_py!tar)xVGPS?4{^}Uz+BI(=5ur`bbqR{8LGVy>xEuD|z z8j${qxb7Nr--F?7aqlTO+uXfgo=IITzq2`$AMa}iV}*S4ySioakC^;nb&aF0Nm_?d z>sw@N#=oEK%eEbJimbkX)}UjmkMSR>Is2&UW8A$%)`u!ER$HGw^$ns;*GWc~=2#Q! zoMU}ul{wa}w{>lEGAZB1$J*QC;XK=7ZThY)oc8jzxUkN)_}}tui(6;w`r5)>YinoQWZW3a%bG>;7I z!hMxe{T|m@j8DVX_4U0#`t4cFcU&G>3wPr^%cZ{f?Cn_Fzdet&eem?!{?sZlmtXm7 zizBQ9<@5uMX>8qSt%3aD@?`vwi%WhOS*IVqxr!h1D}QZ%m<;g)t)++g!R5*LAs3hY zFuG1Zd}|dySa#@6YFKU&2P`IWymKcElE>4#v> zsK$!Ae{gv+e#pfoKb%{qA1LpaCuhu!}vP=@W-q8A;0q1 z=7-GvwG7XKy_WhK*1P@?bBu4@LHF6*&sb00(Qq2~C|(zRfB(?}ESs6R!rX7_xxzsD z`#vbHFgJYhH!v5GbtvhFtZsc;*Nuh#BG7dAC%K2OMQ_CDeK*j{tVgUzGhQflcQ*cI zpy}2l)}uFhTejY{4eHh2o~`#+>_dukYoGQ15tH|OYsgz?^8WQ2@(!7HN^xH5f33}* zDxf$DzK6_@AO>k{)P?Jho)f2a4EkMlk zvCp5ca!uz~K3&uHdv#WR?pOSBY|BeN?O(<2J|1#p-<1bTKy#QwC0(o58Tg!OYcQmodKLXY0jMiChPd!1+S%^DOgH92iv|- z@Ji~7;C=~h^Q}9=*XFxWhx*%hR*hiIlb(ZfYrOwG_+Do_4_c`&M4UnAKoza!#|w7` z&t!QX>l`Xfzo#ne#bJH4=+Ju%leev3N8ShdjoWw5|Cc+KQh!SKn-yY)?k~N#wvXa_ zg^`|4-hSXkdT$JKqx5=RA21z@&q4bOw=bnui^l<))2OjeJ$%)Ld|yU8C2xN%(N*wj zqPE}_{KN$HDen2a#t;tXVrfoW2nXw=Y0jW2+xg|&KL9>Ifc&ZUE-I;>8I!)V1nYgPYg)apr>qwBtrIKut#p6pXU0t5 zx^2_S&y3v~`_?v|TD{DSpC2}UMqit?{z>D`wfH%s_w|(3B0pbPr=Q<`i~PK@eQ%tf zA2EK$J!?aL&ggwTWwpr9lk4>J_FLrVmF-)bpXvUi`$oC`F9u_$<>#pW7gwx5#lIUX z*s)U4D)rB03ytm8IyTbx4Z5e$G1l6G_y5nmPM@{QyeCZ0RB!giFzy_{9Orno{w)Z) zCy{TwqV=y0>gV2nU%n4`3qF&y<<&)67cAMbv>4m6^Y!=^Jg<(qlSkhHj5WbRq*Q(z zuK{A*`+8sxr}X)T&0DhDrwwB@i*@C|&_^$#oYOR}UJTx& zOnK&6ciZ3L9*fUIx$oPc?~HqGCqMqlCk{Ov>uzakZa?`{ zthK$nr#IHy{&dTOv3q*9dS3T&%ucW|?{KW?>GD{2)5*_0bWd~aWLHo33G9I9^cwD| zxDTQkKI^g=@Q0sx;^R-;6??)dJQzFFbP~U?7VGS4If=qMq*(7n)5&`k3}XUWZ_kMn zJ$u?ZpKjUH+|qRNzP%6ZIrz(U4JSIATN;|WPqei^)3WEOu2XxOKHt^Q+u7AgJ9}WH zOZj)1Na-JRWJ+JpDB<27EEG1F^DwaR1d6)xH9Dv5kSo>==y@KI~jhctG_ zVm0kOT^&s)TIfgPV)t}3$Esr$L_j$WN1yF#X*dB_^tLp#pKNYPwlp^!@94y@$?5a> z!MXNc?_^Ui>frE4;E#r$mfnVE+FL$Pg<&JT04L8jG<9@1I8#n*cMGz6-He~;JOyLY zE$M&~(a`mDQ_trfy8E7|I@m_Ph&m8j)OQ!ji?tGws6xU0v zwX-`$XP;;}@k|g(mAhMGJuN3XPd4}L7B@P3s9v3|t$`O@rPAj`LEA@)F=bzHtn3Sp zm3_gnwvYYzRP3P~{>%83jG*#^_zJGbdUO0~bNm?(;oj0sJx51pXV-(V$DceJ)QX!P zT?K_{Pj8C^Lg24nbRbW)C~LMlzoh-h-9`>KHg}$EA#Wbaj%(>2yn9+=!Jjy^{balQ zIX2f^bp5t9oow!)YlJpuU-yZI_SU9T9lZ_gHt#ro?D47Y&Qm9w8=h&wwc6hMYy)vy z_`-s211|WJEe)S+lcmttdkgMO;kexhK5B z0L3c>i~)79&Atms?e?j6g7ea*mkS*4+-=0$fm5z0$8Q1NhJ%l6uXE?CBBFC9Q1QI8 zh1hv?`$PmfuSQ-epwfOJU^$)h%sWcyN4EQc&c{f_oxe;w*m9kZ0l!Wsu{G0=-95T} z>>VhFtu1%~GE}FcK+W?;$ks=<&rrRkMxSC^;y6WvEZXMYjhDmQ=iUR}XrZe8W@i_1 zo0+?#IN%P%4EOH~9hb@9N~a>2lJ{c0iomLWCJ@@kI1BH*W3O0KV8VqAXnSa9+m z@uTDqY zz7f0iA^Hs=cuNT09fJQ$;8gCwZdY#5-(q(pg#Y^?_%}oF|2qW#s}TJE3&H9R z1jqNpV%t!rY8dF31}K|vd~Y91(VLSM^CghbuVkHO0Nqp z?(FuSYU%B0KiT5-^k9zP8fegjEZCu$i`U%V+Da=BD~-XaAo5&RnCq(j46*?Q4m(nk0% z1bgm9#?E22?sFwt%NlwsSUw9Lh#`b{6Yvm8-m{q!IOMZEo=A9&S;BQ&{PVW#kWOs zGL#&Hw?}DADnDMd36Dl1;|Fwm*r|d>q@d{$!iONlwTAw8C|Jr9$xN+cP?v z9}mH6L-4i`{A>t5#<;|%#Pd1E<+>C6ywcHeK5cZyTy?z5Mn~`&rK98A+n(`*?#C)Z z@Y$jaU$^5mh3j^Y@=b#3%OM#EY-8LvcnRawzB>b^d#MfK9}VFr6&_PM1B{D39Nyj; zqc8Yb#ivV6=JO+rOM3}EX84m__Bq2BeBAIo?%&TFzTg)aC;!}~>NU%_4@~>{n&NAJ z-e6q(z|H3^8XduJDxJGkxrKMS11VShR>U~j`98(pq3}|L`;6}cM)u1!S;M$*@H(ZV z>opL<9}3}5C_IKTWSeAs9{{pP>UEKE-{6-OU&qM|<2Fua4PWBns^JShXZR8i*9>3q z>x|ntDdLM?>=!@pVBB7J<&5v+`bs=h7#+bYm5z>+YQq=FC> zjK1K5N=L`ZWC;IK2tTFp7bdVjQg-tUynx>U;DFJl}mhyhc=@lc!$!_anft};>16jBldk&lvt?i!(0vNWID#_d(SCOts?cIPn>mc9i>0 zt>H^N95H;s>kMDw;i%yYevEM&Cj*R&{o>Cd#n=8EWnBCq@i1m|1V5*Abex9!-w86-Vu8QZ{r;sCnF*Jb0Pd` zg~w1g*=86Qd!$}hjK1L46ko?lig6n!3x+?*1>Z1y!50l*;(>njg*MR_ypSiEHcsM< z`^cl?q*C#9oYXKbevo*mH9CSHQ93$KjvBuBtx@rHoOCE$$4QFbPsc{};w~pRj`AD4 zgtJQmJRXAAhTv@>_+SV=9)j1!g5m=^xhes0ECg>0!FxmSfe?Hs1RqiOJzi!T*xhrl5vSo!ABXVa?1jyd$|&#GaI6FQ|atd zI)2<8NZiKwTn*zsjw$|Q_@}K=@yYa9B!InU#>IZYI~XVX*@Zy{d7sq!EmrRItly3@ zE_Oy8&8uhJ$1&L{c(dY@o${PX8{=Z9;9ZPcI|mfbZ?Qtn^Uf(e79j5BatOW@)abr_`nG)C;3>>g$@vB^U z8&`9T`^cl)*W2sl#Q(K?-4!xU*{Ht~d>iA-{7(YdY`Hra_i;{_Tdnw7-)G#GTg$jD z7e7E2Y?P3Gi97TzG431uiqg4{xs;@o4%ySjez?xK*dzE2rNbfb)L4}4taM25TFf|Q zBmF_vFJWBt1&=8mtshr9RNr`@?s?^m`#9Ekh2m4W^c)Utm5fWdf>#?I@nsY>3m4(6mf8nezn5O85cXF1@2@8<6@`a38nLp(mASdt)C3h?+ejCqja?X zn8LOGr4aq;5d9gYqxG*VTyH_I!N--3)}K&1)DOg*ncfA)eH?3iO7W?GOK`cD7#F_@ewlId z+guSKI@%lbEszTk!2iP(18#<-6Hwf!;1rQPdTzm##YU+{9JukEi@xVFFE z=!>1ljK1K_N=LU#2jkZM0i)l@_Mb8Of)6QuZU2bEe^D9*=@{eWAM#rfpF796Z}9Vm z&vb9X@CCofIJK8vKbbLnDRBoeOw1{!3my9Qi8TY}V`U+mE_!Q^z z+MI67{@CC17++IgV826D~x7SgFJ9W(8m5%m*m*I>5 zdlmm~5kcB#_~N%g#nZeeDQym;_G-z8ov1RjN4wjZQSq$zreVSw`s!{{TYLc&eaed??G3-jkhS{QZMn(HpYEq)A6=L@pZh# z7$-Y49yff6t8&8^yu$D$t||>*@M^|wywxx+_KV++7+m~TuXJ?0wHdzXbSS=#w_d{+ ze-0?Vj<+F&>v%iMxU`FuJ7V+&A2WP3L$IAQe8DFexAAt#@J0W!!9`~_MCYc$V?st+ z$deGMm-r{jxDSqww-UwIakYc-3h*^vYWNaYal;q9-0&r?Dhyxn1miZ|e8$Co@msCI zVQ#P;RXRG}nhjrc+7w^MTbJRBKl>D4$J?O7b-WETF6|=ao;CV{j~c$zYs~NkKhL<0 zw<*IH{b_@X&Xo|IMTN(NOeqhtrC#EnLdJbibi5TSzK*LB#w)=(b)7#!vXTbwCR6t3fKh;eBb zDRDBa7^L+mRf+1DqQogDqQnpevob1`{t7$ak#`o z%pH0c8TWBa@esp5ZL^9`@z7Nez}{8HB_0I7#<*>-qC+m9Ew`9)AE$M><%&<`4s*E` zj7zzKCm6To`XTxwMt_X;M~%MVVi;KD)TmN5E_?^oB>q=jjyTG`$C;G6F1Niy61}lq+1@Qxk$WGA@2Aa%OnVjQcny`vvbZe5QN7hA;R4<76ja%E76#O6N8p zi(KCk#-+Z3k0~AfKEegYeQ0PqFBv>26fZMMN859aaq)k2lgp7}TkY-cs&VyECWN=MsyjBy_toAFH=Owr7ZOu}AQ;N=Msso^c;GY{tLXGih+K=aSOV_RKOa_9WPztBi|1f?rcQ z+Mb(?TYI99!Z>U`{x{POZ^eu+YcIo>deseMSd<|KpHM#iOHGA?Rn+y{%w6}(sR={lA5=Op75z%)K!_%fb6WB7s(8orDt zhYVlvvy5*=x%&Nu8OD9!+HY44E`FO+I+RDY1;dy2y`lJb3mNH6!xz6rKk7(Zk-Sgw zixpm~@H)n&U8LNjjQil~dNmrp)T`O>1#e@V>>(}LCJbN7y=ZXJnF`Ulrtp}EBfZYJ z)Jy!cVDts|j=0Rk*Kt+IxQ(}MhCj(=7a6|b#fC3&Rbu#p#~3HS>3BQFxDQ;nOPj&P zZyid9^2pX__~QQo#nW{ga`$)9kY7H(rM;Ny{T?&sm$>24~xYSGh(`WPrA5wfBZ^Mk+cpEYNNiKWT@C6?; ze2J@bhA;Se#%;W%823@0_S+4Ei{BQN4&{+8`ncQkk!YQ5j8nNf-ii%h{1#Ju9dG3d z*YQ@ZaDAVxVO-iPhVp5vW!%R;*%`w>ZH-Fjpo4NPNg?ujgaknG(%k|R7xR2A?&u0vuWxPSd7yK;a)Gm5G(kUWyD~@M6Q4>!rl- z1&=XqucLCteb}ShrPAOy9c;eR(f+S9{37NbReXIN9W#9KTbttR>!?@Z`Z^k5T-v3G z%RR%mk7Hf0A;V|7H*ENVk1}rK?SkPKafXWq7oF)4o$CsZ2^r}P#-(23pGBiDc=Qu4 zvyHcHj91{aj<;gNm$)i1e8G1ZembrUU+_5NHr^^3_hFB2muiE%+MwT3Iy&C!4Znyp z98-K9Z_S1;e(O?v9dCUK*YP&UxU`FuJ7n|)KWq5Z4z!IJzToE=xAAt-@J0WU!9`~# zMCXRWV}T{^Bl zzQk4B@C7e7{B&FyzTgSQZM@YmF7}Jxju;%(3$}WtqvNg3@I|LX@pZiQ8otEafa2?T z8&bHAw-LsrU8LMmqc8Y5!Zge9`Gud>wCnhA;jcRD2z8XBDpFZH#eg7b*9g(HH!@;Y+97{1`uhM$fr!xy}k zaT{+(85jG-Z^sM{bAzo->F9V%8oucCDZY-kGlnnz99DcCZ=(v=@pg`JX_pw=Id1d? zzohu&|Kui@VVZGi7r|#3w|-ktI(i&(gK;0S8uvcs$`L!=5$>Ce3t#YUj8nOEPPUlR zA^S(z{!+%pe!=C?A>1caK z826!}?K!9P2`4?;#tmQa38n7`O!sn0>5!e1((a6lor2FO9c|}z#z|Y-xoB{)$NObh zzHP^1#>H>bY)=W}Vvpc4rK9bsX589SYjClrPU%n{*_s&_duG|5Hpays!Ml`>wr7ZO zAHv!{BLWB5q4Jw*l=of5`vd-;Yh_8c*|=o}5v z8CLiqAtSvQg3l>DruZqwr9YAW^E%@`xKv-kZz?{;e~eye`?O1>eFcv)F7YtwXx=u% z7re;u<-SvF_=4|X-1e*03fKNQqV#n;)-mqGK8+t$I{LnI%<#oOZHoUst}7+I3fK3Y zQH7T%{>2ddY6zZUT-q_lTGtu(aZL4!;h(m`&$v|DMV>Q>GA`{XcoE~)&(VMGbbKUQ zzmoB^KKBC&#?$(YS2J$)k18F~kGtZ$dd8((!P}Hh4Ra~!Q#ur~@;$!;jEg;j4=Nqq zFO4zoLqpp$q4>JoON@&j;)TeFZJKc@SMV97qsvV(?jx@*cTw?mx!aCWDVfi$B)Hrn z#-&`rOBg5r>vDH6?gQ8Dn=tydtY2;P1+P*1`hA36rK9zejN5Y0Dn7MilFJ=oTL5buV%xav_hdUgDn#qc8ZB;_G<3#CQc% zHGbLfC%Nny!x#LD;Y(c28ouCjjN5pNHoAg*B)VNn3@(0)F>d`|VffLvauVcZ8x_j_^0*Kt+Ocm?XZTJ#bzTpdA%ealVF2==v z@!NpG#czX3=fi9xB_oC}I-`oO zR?E2fNANnsm+Sqg;R{}G_;S4;Gkn3D8K?T*6F0qhbu;3@HwTU>*cjNQ6Gu+!#2ikoKz@0 z=CTH_3C6`9saG}QK3JRaFZdC~zYTag9vHWAQg8SY5628&@J7Q=$AjSujvs3aHXA1c zjQcpd8UNzXA;s7J9A#YmAn`C}bOb-Abab4YH+=Eiq~hy1xukF%C$o%;J!1b=qc3<$ z>F9bzp9{QkSQ z`($Tt%WnL1`3HM?@w4fml0ZvaLu+>ve#UV(e)4*EQ!joR^Z2RWmL9I~29p@_Q`I&b z9iNZm(r|oSXm}Khg!u;Vde#B8oi2Sl5-KO^4%7WN#TDV37?-5Ylq)zlgB*J0*dxvL z=BHREO&!BH^rZZH>g?1e_6tOF&0O|RJ?$6?A#!T-(>0aLf0HSfVVv`k|EP^5zg*vk zfKmB!onklG7P(%q6`%5S^MeO+D^m;&Ogf+#&%$&Wy{|J%*Gxd zZ~7T}^}OFU;Ls zb2`E4B&SoHP9ufZY0rCMPuv^zp%?7$zl*C@pjIqyro1@^uMN>ZjOvu&C^l z#ZQ#=&*D7toc;@(zl!}YdI#o9ca}X{0sD#{+tu%Rhv&bho@$IZW3_H6NEk7c#x z6>sP1KRX;(?HSKHKkF?G{Mq4q-TB8H?<(>X^FC>g!5?&t-f7D7w#>l3(-FiC*(tUq z-om!|Z(-YN-@>-ly+v%JYk}g8t|RKFVnLr()<5Vqoc3zJ{QUUMmwdXOh(p&M?QcQ< zcm_CKbA;2iN&VJl&O5+)kAfq8+;Ez>b#-OIb@bDJ zBG>i!Tll)p$F?`?y3WV8H|x62$F?`?y0*5hc3qE}>zb~y+xYrD!`E*|9@lsRoUnU) z7w+ve4r@dD8FQ~6$Gsloo#0;oecWG%BRi{#A`Ml^L$~36U6VB~O1`JP&+~p~&sFc` zgZXf2e7FFu#mIrGLnxbHq%xnZ#r^lY7>oXO;^W>F zrd(ga{%<4wBGNMnJx0r~{8H%M{gCIi2lb<|os_4wBKTHj8T*BecM9?x@8sJr>apk* zv~%`&G<&Q%tH(DO8_{^`D)P{{i1umxGUd^@>9Kwpt5j^2@yr%Aj-v6+mif#$D))Hj zjkYcE7PifQ3)@!v7PhT!jkc}UFXkHW+;)q`J2XC8>v$*MdCaZ8cBbFL*R{3nt#n;m z+ulmowYBZ7bX{B9ZuNDYYrL~%o#P!Dx6pkZYcJ`0ysTXijx~}rE^A7(b|h;`MeiIv zNMo*OU_3t@!mO=9aWBMDx&Vm_N#x>4KV9p5b|ASbr+(Ml_Dv=o(R`eaiYX zYed;=LvGzD8_Q?CXxPjvVRtYGC;Md#mhXDen{8*lbIdo}&V1*aZ?>KJ&OLvYcCI$w zqB$n5Dara0*=GCYYC8|*HK-EcZQ#>-eMwsPY=?12+DrdVlh zY6N2pjI)9<#`mx`Re`ms1#k7WseHJ!Hg#j2Yg7Mzm9?q-%3u51lpbf%*eaiKR@i#f zN_}efeM#1)a*d6%vDrM);aH+W#_G)|E_nO zMQdNV##ywMwbpUgdgfkln9*bne5*bidf zz~kW378xk;@OD}DGh?Zx-}eGG%qK@9qX*}r4W}1yEbDQ2p6j8pFVS;F_x2y>XN0Ds?zy4w zMqf+)IrgWbJMq3Ey}$U46uplLTheuw_c1FYFK<9Qw=Rt|AHrzuBI(-cqM78g&GSVxZXei5EE zp#2EOKij;Q{RsL8%5TpXsPm*t{ROQ@jidhnKgd5CdD-{2G@LGi-b#JREcYcpM4Wyf z`!l95LA`VKCF|FAacXrbPCKZN$fGYwn!e<1k(HmHxb?PfEKU&{>GneVt*gC$6w+SP zx1hbUwOxBzU23nOPhUrS72U%2%Fot~wHNNsS^bKP9mZ}!|MEtUAF#&#P~9KBG2@5) zwZrbo>mNV7ca<2jA)#KYn;%l{mHIhmG61u{h0l{IHUp+4s%N+|l0W=^0p> zJFdkC+1j^${P3Y$*k1YBy0P}U)#C^HyxQp{x9%|My|y^zEiF!aJ733VpI)E!8eXS4 z{}|>4$@jg`H%=)&>okGXJs(^a%*Vfi_iw+3waDb5&3N|tVLU6l{JG6%n zoY@;!uC!AJu2ZSI7ojzxjL&C&Ms<&xauJWgXWZWCwk|T|&b`6qX0E076kSJ%_xav; zmGz&E;B%I^CT=eMP9hgh*TYRb?8A#i6=3OYv7wJ@g&CZ{Qoywy>@*5U{`-@ zWGnv5`dhsh`1mm#x8ryVt{Xc4W&CgHYxSc2!?le!TfIm7hwFW$U+N$BVmGBvi11n| zt*H!nnKhMVYo(D@)>637!ZVBLudtTlVJ!vySMo#O>yyve;@WvVdEdAD=5X!P=WSDz z(z*&#SudrO#x;~uAK{^&qCTRO)>3%CWYbGN?FVZmn_dcVT310o;zRTFHhu;Yx~F}9 zCR5f)@IKRf(Vj0#{si*Cp7dvHGx_DSwY$i^EFH?9;VnN;pJkxWhf+Ne@^=eU&;P2Y|wsMSF4VeeNsMyV(TIOYd-bpMLqBz)FWxyf$){;@%#qsLDz74 z{X$*K>s=qci?8VcdiECA^f0dJ5nR*bxc}4jJBGT_^?Qy|yzeoA6#uU7xL$ESeJz5M zbq&ciLf2A;=dKaW&2^2Sy7A?sQUvwJv)-TKDo0FhqE|Mu)bk&=jPll?zH{6;;s+&<3H#Ft^I_r)Cd0dEwVo>?$%O|0n`Kk zIqO0AO7-~a2J1n6ImT1zXIR!dj(Z39;YE?>7fT|qEXE?QF2*CTEmlO9788-3ultb$ zuh&KzUT;gsGrr>n`?>n-G590HbN#jE=IXC$e5mh_7(c#<|C~N0d?la$!3KRg%-8ZZ zT+3g@{a`?@LyX<(Bd?_5k?i-x&%;*y=d_jZm2CZY8?;r{d+LMrk6ry=MSq{Rm%oRg z!q}_F;P$$svH42&{^17gMQmh^-Bz+YVeGyDKjS~Ap9x>d?ti~QyGKk+462xDL`?X` z)=Aik|D3iGzLKr~X@j;(Of;&PNZZRXQETkI2z&9L(_X??viIT!?X@wnlHGO2?kU)f z|D1LczLMQv-=N(QUKgV=)Fs$~|D1LZzLFhN8?@sqkpuH1_`Z{Wi*y+2Zy+5+I*4=t z=>XCs(&v!UXHY(il)fLO4k>*X8v6Bl^zZZN=kd9dCG>BvrO^MUa34tFevp3tN7r{6 z^~HbA`VziUeZRHA`qDjb;TGKUewFWecwTf7pYg@}D0p@g^OhMkZ^8I8SjU(}eQEA8 zhxE^JPl$SltGO=0%AJ+}a`TaWk+LYqaTh-{|_pcQ$G(+I#pGw09G?H|mzP{yeAJdy(5a#qEta zd-40+-al0B-G%k7sPZ9>gZ0;7o(LaOd(RplCP_1-y$N5bz5n|LeOP2{_0;`~+I!B} zit+cl$L6nX(AKT!kA8@F{J!^E>fPK|-N}6w=2P(V&Uvgcz`xmXO8vsvEr^r#_X`d4 zZ)TtHHyiXjd>iydKZ`!$Z#Qb|o8Bi-jAr`(pLKum;|==nXW1Y8WP`T8+5JJjbK|d} zZ<@e(>UWWjBc*ZK7*ZOS(fEwUWi&pcaT$%zXk13)Ga8rC_^b;ljn6Q5Uf1}Hbc(Qk zIv&}1dMwg#y3T(L-M zSFgr>bpM~m{Q&%sq zWa~RNXzQ&So8}vH8*OtLuh6xO&`8TSc+qXemf7UU#(KeU9<5u@`2R7)(Tx~A4-s*nt z;0A4dv#SDum1PK=R$R!~EU0mEc12bOLDwFdPTZ%~ta|CRuMziu2ns?RaxIjU@@-;}6F9@Hr`Pb2b>jpaz&ur^wb{HOz$Sq9DQ z@9`bLdlmFOzU9z`Z_>JrIM%;c(B+|QQf7+;@XIAj@IL@K}5Be^;4^aO+%zf9w>(qC-_y5ha*xo?!EVk$E zIdP(APh02HEqj_fYERSWyBc~syE*`oSq@rdQY5 z)B8lriDy36^Hf7UFgkv+{>PpEfC+kd_PjznUZfW8YlpR@Tmh+d@Bh8nxgNlZ|JbLKRgRwY% z5U?zk*nR)*irBu2eS0hJ-&+}rKhe@0t8MCa_y_k^ltF`jpNzK1b5D4M$%B#iY>RlM zI4%iL&#R;#+k15TaPd11e&OYUS0V@BzH?Lm7Lc$J&!-)1bDQu|yM6c_;JvhonFZeq zh{VHqB-k1Yk<@M<%i?X?93dj{h8=BHy-DV+q!$Bcj(O*)+()(#L|~t*#e36b76!HP zyeqB_W5mhS;V;v5C}&=wtHWG2?{CvQj9r5568#Qf?e>W*-lm3hxft&R+YS1?xZ3Rt z*}VTf%{#}u1xn%LEMCE9)8$@fUc4aSnR+DCyc^8Bo>Q+q&D%jb*h+KieLl^rVP3D} zW!IzNU!{2+dGgNY$-9^bZwKtZ#=OGYaqtnehYNuJKn^}gKS_rl$@C(0QX&DnW+PV> zdVjZM;NUR$3X>csHhC0K%ePHX%C&9s%nwI0Y16V_+H}7u7$H8lrS!-2d*p-{F}|HO z=rSfeX7KwNuP}HG14Fl76GXf0gkrqcgzxfWd#A@nOdA#4&9z z)JW_-cmf6jQ6W93~qrVSs~49bl$F6AyVo-lmMv&q{+ z$+B%z@N1OIVDRyYkR014PrREsc{}WuK0AYY-u4juZs2z|a%GVr=+BXshw%4>;19A+ z?`~IW(BEUXmhq$XW60Qo{ut?}LUfLY;5{MuuZ7_MG6WwA!Rg_~Tz>nvz{x-27pWJ; z8R5mdf@-Df^@kxke;k7U*AV=_h2V3*soV<>xN?L07IuFa!v9GK-W!4!Azn$p@k35O zxaVP)`ube{DQA8qKB-1qaPLD(ai5ESnE8oA0o@Dkf!O_J#&2R3g|^_HhqNU`=NaZN zd_16ga=i{RKKBWS2lqPcj)v&`0rR6r9sfG~LfaoRe&dtwIJn1Q_rHbcEHJ;s4LiNy zUI%_5y7*jv*a@8cJoFi-FZ}yM_>VK+`;~0|@eqDL^Lrbz`M(*$KTmuw;-#7#Ke!jt zE{!gCpYR$QT2Gxk(a^AaZ{_{>@6(45?7J`Pu(C4i@PWNqhl#Ab`}bv?-GASHP2T?i zR_8M1?#CjZI!x@nKkM+mEHe`KXDKHhsLCQ&J)jS(va3*ae^xQ^XaU4%%^F#*6_LekqBoH%&Av%A-8ZS6SK)8@4#+k3s5mK^%^S^D)EJ6k(Cn|cGK z!`+xwxxF6Dr>I7qr+S0=Qr3jfJ8`PH>0>QVpTMte)9#}!y@7R4I^)vw5zL-4%!578 zo;;!EUZ0k%N1A$Ec3lv%s_71#e zF;;zfhCrR@X;Ci!L}&NOmhS8yb-#&AdZ)X@gI5`8{)lloj&eUp%X*2lOHK;uJ-AB?`a zKEsSxfUofp%jW_{EuZl*!{^(dch2wyKhHQN_pk;fmldx4bCq$auZ$$;826Ev>MQs) zr9*Q9*{&PD;ERfXuYgDk-{ubJbX?&VdB9FMtuM$n9fDs8!RJEo@^?B#(vOKa(&i9+ zGz7mAf>-kZpY(Sr{V|$IVk7(m!Jd1$sBqmbsSteIdtE-#(Q#YM_&(q|K1&$)4IWo~ z9iQcl+qkW?eCW}ZuzUx5)rK$e=^MV_wTx4}blkQnT>B@f^mTmpG44Z0;{!@Z$L*lu zv-#dx#n*8=rf?m%Gi)^3ujBS=2%ZYTZ-n47zp(vtf-7VD=UK)j9%PJpm2vTp;3>w* z{tt>1kXCZ#E#GI{@|zW|Ux9_*ui3 zI2Aohs;1C0A%>3R(*9bK>45dO6gev~f~s+W$FBF4p@z(~9lGwx%b?2)Zh z@pYWU8Mko~ELtNo=@VbJO2ZdCVf1VHM77}yUcC({a#3mK`bW7z(uWS1k^{->00a$>*4Rh)4j*|Z-j87IH- z5>X&L5W*h{;ZG=B$JHd`VoxBBmy1SU@XLx%aT4SHXNGZ!E5TZ_yZyQa|+jS zb)IptClJTWgwYp#O7SVKD!Bi-#JI$j;Fk?wbY=`+@GFKd@iS}qg3mE-<0?jmVDs^> z{aMbq^=CEX;s=Qz-{=TlqjYp!9Wi{efwp?Z*KyUX@VKJ}uNN5?dy4qn6yrXQb-gYt z9UUhndtFA$FJ;{Np;qBKPU;vJdz`B09X0xbH!Hr5lQzc5T#a`bzUcHCzTip2mw4zi ze8JB!ZsX(<<35D7KW7wQ`*V(Q@q@&}HKQYVO6ll0SulL5*GeVo(vDrMZpNmmHJFN8m) za2+S(jEg;F8*S%}zC$s7R(u^NQ;gdx4h=v-1bl_A>|#--dbJ~7LjE zrNdoUkfS8wGLk*I+-imEa*r@>%dKPFmU~p`=yHb@uFJika9!>t#%;ONjN5WAD;-^K zaaHd6CKRsAt!3PndxUXYZk^K6|wMs`{FGm>nVV1_r`MC%wcgmUVRWL5)3SP;$y^iGh3VXdbGyg}> zrT6IyS%0D0?T`+4fdR1XA%~MaWT$LJjQapI9%Gzzv_C794)qUpJRYcIT$iHwedO2mYF2#R-*zcn_qP)Y*Z#cBxb^1@CBhfDkZ~%L^ym0Q)bIr_V%++(gmEAFwLeQ0U;DE{;o6@` zg=>GFW!(C6gmGK$xYE)7oK!m6pBEVy|44jZGJI4o*rp9%@XLlj$0ueCU+`JRtv}}& z_mN-w^Sa_|e=aIq`%|8$vi(DXpR=<4!*#~V9=?TQ5AW;xL6RPSx+Blq#yBO~&K-=C zj`n{!;}UO;+&@$>F8&uhVfc^>wrby{!goiQe=sikb9|zPap4PogmLTtql{Cc>(!|E z+W#F2*Zv<;xQ^#>#>q~tf1YtlG=7nB>(9%KOMS&}GmJ}p1)nv1kGHFaFZdkeqCdwc zt}!n9f?sFc`tt_kl<0bS2LWIszV_!fg=>FSD_r}to^k8XV~qRI*X4F79m*qHpVFcJ zLHstrxYSqhLBkiFA;TAZ*zo80#96}^Jow}fIM$!%nD679uGa+P)}I#@uKjsK;o6@? zAAvA7>(64weVo(fmNHJ|YJXNL9qrEq(5cfZMo-_j`rt8rK9~h#klq7wBe(A!FJj31)nke zIX-d4@CCohxb^2X#(m`1{#;Oe?a!ME*Z!2}d+q(J`j9is-oI*V98UJ=cy4Cg`oE2F zAAD_RQt4>_4=Nq1cn}DxKR(4I6edO2v>{ER0&q0N2f6gde$LDp%tv?qSx8-_|zz}R?r}k$Ns6`v_p&x6zQVOX2NbUTIm)>8=NRKYG&dW+i`~RxaA^#8Xcwmlk@xS0H!$+22yKeY` zFBtwDpSWT8g5PA^`oHiom(fR}>s7=!@wNYVC|vu$R^eIk%((Su8{@Xzq|(v;98@~m zpF@mWf1WjbR3q3%3}5h3!=K|5V}>vIIOAKvyN9`yOfc?aU;Fc-;%k3SD_r|?QQ_L3 z#UG_ome0RR8252bmm6n%E9XHHYzd{K{aMYp^=FOYi%zZK3x34#=lDdO;R{~RIN7QF z*~qvLT-U2Z@wGpb3fKOeP`LKzWyWoM&MJf?8%&m`m4pM8wma)*?T_UEY5 z(f%A`T>K;b=eXgcdck(y@CBbR{5d{x!SDsY$hh_ACB}W^*Z!PQeC^Mx3fKPJ_AzGw z>1%(+8Mpo{XWW)st#q_Mk0>4O&pO7fKkE(OS?77j3}5g@!=K|5&4w>{2jkYCy^Q|0lAR{qxSf>R-n!co*r3&RHM-GGlBOnX z+Js~ZSxs?P@(?gW7J^g=>pYaDLXij&dW&v6N>& zmq^ck-XYF@wtXcuK;s_`yXosO;_P#maqn}t@mNZ8dxj_u`#eE$*yo~g@AH(?qp8zQ z4?g4ciDk?>J@}k)@AGxzv6ScYnkPN`yhxmV#^3Mz=YkE>`{#nsBqB!i^i18L_5A$)S53P=(38x1yI(=dplTHsl zZQT1gYdn_n>}QGe?B`A5>?h`(@ZHT;f`C4eOAJ5aqz5g@DceRt^Xc?q=7w$p zf6TbAx0B*%8KiEC!+z$Cdp`%99&v`89(=^<6U!(#J@|xi@8_iPSjw}XGo)uf=ZLeP zE5z+5Drt)_Uy2{+HRsao$dB_`RS z*v}%xVLvC0dq1b0KAerbe>y$*tkWl!an0$$OUAvQH;l(pp8Z@PJ^Q&toc+W+KYl!K zn%DmA28=)eN!~QoD|3Z+YuN}s{pPj~IQE|Q96o>sBqB!j5h;i@d zxYMIa6HX6abo#_HCY>I9+PL>~)_5%C`MgS`XFqQeXFu-}*H}oHpURK(hOVIS<9x-q zw$uKrKNU8AGw7A?=r7~D`pbAMdOojiinF7?D312my4}x5jHAE6$DLk^q-nzG!HZ6x zSjME&gHIdZ)nCSADbMFsBK?m3BF_D_N}T=NFz)@_H16xI`j#|AlD3omtT(QV{cJGq z{cLo4jj5^0=>wJd0-Zjwj25Q{&l&fA#>QhQ&wh52p8f11&VFKEH9yX0O#i;b=igUn zUJ)S4kLP2?z5lWCSjuoa&rlrpKTmPgf6OC!!8rT}A98vrlBN--2QN5%Vj1I34_-9x z{hu-(OL;!8S<+;S?}~|VR>nA zdhm?XCzjFZ^x)0Ly`OEyV=2#m#-wLIJBjb`leqolC$#9>VY4M09nVPnjr(!FXk6QQ z8e-YjeJ33F@!w+H_g9s^y-0Dmzs^w{?XOH_sISX7`U^bo^g%824>&#efYT?I zG34~%1>?TICXB~Yp3iHF^xR*w#JRtgi1YY=+qm~LG4AVKr#S3qbY2=LNg4aO-?;a) z#_7|-@>1*c;B`))SVq0mgJ+C;KbwrlQl9;6BR%^W6K6j$kEI{yZ(v6ScYZ6ZDU*+zVapTs+?ExdU~4jKql*}n3p zh}RNtCSFhc5OKtOQkdO>(_Fl#fMY(gAu9`xd4gsg$NU|Oj^pp@?>dgZcf~xDh>yRE zYpDnY!14DmU5?{-#`u3`=<$0ae6I z?+fzn*XF_P-5onNEVh|mYZ~+4E#E3-HKuj1?1j`~^?%uAp#9Jtmz}-ZUwkzvG7#F< zmv0xomw)jeLV>)MQ~$J&P#*s2&-k@|z0YzgS^ZgtvJd~T)t^~lpQV4Y^2~JKYkQ12 zo1$fucOB!$Pq&oc>-yg&OhjXnhxg(iO>vKn1k7N$F<&LyvT3cG4f4(h~d9FPtubT4JKRDHSy0YS7 z#ER(PuKv}EXAXqw)u%Y!jb;ADkIP=?G5Izs_f}=qL~T^DscQ-T($*4`HJD^*7ju3M zVXQg#;6bKc*OhCG-jtBN5~nXGE$NV;d6{wei!!^Xlz;5DjOz}K_0!I1;+>Ba-<7q? zY(M`l>kdZ;wmu)#Y|TWOEm?0aC+%5#YhTrbTkol&n6CGht#os{gz;e)iPWDEgta ze{#pUo~u0H-dio}RZD(8I^RBi_Qk8-izxc}q1EWklaHbuf2rwem&D9ho{(6lBv#|q z@fY^Vn$_?uv@0)~@v|M$rgx-Gf609|+G9=Wm!94(_h@xDN<8h8!8KnWpOdUs;QKK3 zO4}-H9=5Yq`?*;Cu%Dz4{<^ELD#LL6@!x(``up$akAJD>LZ(lqYR?pgGvDnm6b3K# z4_~~{WA8Nbd&mn%GwB@ZVTmifU8L#5tnFpjR~qMo*7lN_>1Fo#zJY#u?|zupe}ncv zWVZJoSOcm-LgBsO*BbWp<7cpRQeM{0$q33RmvmD)Pu7Sk9uxsqetJbT|Ep{3=)E^x zYer8_Qcc*Tum8=pT|Ol>Jdr-_hYInY@RS_tS`tWUf5?G8hxqp))jV5>C}96M!Z8Z*$n=a#sgMRHcjyT{&r(d#T?Ke%(FQrG( z_Biq9yJ-3TeAkU@d-(Zb!+7jCo-xsW_$9ZXG@(7}s=9VO#vCpeyMq1SktaJ@kvr&Rv-!Ns34zTo16FB0Y%Rg%QR*9rBeRVes+}^G!?4bR?<(}n7?1X9| zw5=~M4=j5=%g*ZsAxZB8n$$lX?i|Ap@mR~}(| zWJhCp|K_cH7lgL;x#yh!-s|M_{?P+19uKJEfk&X$Qz*dlR=3@PmFYB1_zG;s z*62QfXM%6HcxO7mQ!TH)aeHO;gWJ{Bk8gkcpKnzQUk=SI!|Cb`xKOi1$cpw^7a?fE5x`SwrL=9Hi?LNV7qgg)WE()e@5!&Yp0oHg^ef?w{OY?$ekGf{noX343$VVm z)A#lPuhGCY`tW-*P-h3~^kH0HJJek?ur^?%^4gJ2#p~Y<7stXQh=nR!kaK<5ZJRLs z8DRj!$PHCYlu;ZzN4haKj}=X{NAo?DJow?`{J-V-12}&W=MV7wL1+GvBJ~Z_N45kI z^J%syIoU#OWf!%>XcyI9w9D<+>_R&oo5{Yh&#|wue}>VHknl-&(T1+#D}U}f_4NH+ z$KHFO>kHStUcCUn=^cXeCi!(eaUox=u6FgC;df5A<2VoQbzWzGGWx$L78|iCxGtNz zi)8;s?9ji*MmdUkTE=`W(Z^DXA?e2TBci{VDk$5IyMPj-5MCv80_e6HOH}=zP#Li?h)acFU;=RYGlSwO= z=h`2~*f?eI*wBDs<#L(aUSnr|@6NohYwyk!HvM06#TTFyPtR?tvYMZDITjU39~n7g`<~_}Q;o&$nFg3_Q5KEj zFn*2ki;PDY&pzM+>N}oByit5h%%A5JQheTcaf6RUlG9W1NW|Z_d-v{L_1*ru?o)f} zy1@YC?F60)Y7=)hfB(_v2K^A9PQ;##rPG!R|`|0dBV&_s*Cm@-{%1%NunV!y1 zfK|Xl!x>>s<}GZx11GJ?c=nW1zIKuj@j%Y9AW1JiKTcRSpDB^7y=D-hbfQQsl~=@^ z6-%tCuffUbbXuvcq1I&9mSjh*Ms=_{qITTz8pWy<;f`~U@>s@G?QH*IT=kbZFKFj@ zh}%?s%I#fP%Uy1TaZ|%7WvP&!hn<%D>SUbsQ0it`wuSM4hHumOOb0{bD}0B>A7g>a zQ>99TI%G2agH-5gN#4Lf~pIC()~n>;9Z&+(eF?cV6g` z{(M*Hk^a2IxLR+PCdKle#&=PG%Nk$dS2Vuz+mgmt_*KSre=aj_qGGwOj|5-(vn+7w z&mOvOVIlpGIxY7#E^u`>BZ=I{I|P4@`Fj2@2|eEs{Eryd<8_m96S;C-D?*QqR~w%P zq=({F!iS2N@c_0Z-mdW-GQK)AzQQ{-zKY8hjjwQnaXnr>#!XZ#*R@CRWxPy*%Xl3X zIR9zbF;$&U`o3iFWO`h}jFX+)9S!bFooBk9^ieX-y$(Dq~xI{1eCHc{>(AiBwWx zO+=Ep*rde^{2wa=$J0_|PLN8IURahm58NL8Ca*7a77%9E!*H1|owNL1wxgWp;qKbs zT_}$T=i>!iTquDX6n6WXqz7B1^KQrY;aJisa~8Yq#RRJ>PN()#_ABIRY&5ceiS5_< zdcPmXH}aoJiHJqrfyjRpBQ;*(gNV`mw9m+LmFM?M5ZlUssvZ@Xr2ccA{*Uo^-G5ac ze@;!r%Juwt0r5ubALsRZc|5J3RO;&|u|79KFh>KZ=EQgq+q7Tl<0-xG$Q{It4t!zJ X?bnv${I+T|KFXJ*ldhVzw?6*AU}oV+ literal 0 HcmV?d00001 diff --git a/release/src/buffers/CMakeFiles/buffers.dir/buffer.c.o.d b/release/src/buffers/CMakeFiles/buffers.dir/buffer.c.o.d new file mode 100644 index 0000000..ae96357 --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/buffer.c.o.d @@ -0,0 +1,50 @@ +src/buffers/CMakeFiles/buffers.dir/buffer.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers/buffer.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/assert.h /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/buffers/buffer.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/string.h diff --git a/release/src/buffers/CMakeFiles/buffers.dir/build.make b/release/src/buffers/CMakeFiles/buffers.dir/build.make new file mode 100644 index 0000000..485322d --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/build.make @@ -0,0 +1,111 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/buffers/CMakeFiles/buffers.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/buffers/CMakeFiles/buffers.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/buffers/CMakeFiles/buffers.dir/progress.make + +# Include the compile flags for this target's objects. +include src/buffers/CMakeFiles/buffers.dir/flags.make + +src/buffers/CMakeFiles/buffers.dir/buffer.c.o: src/buffers/CMakeFiles/buffers.dir/flags.make +src/buffers/CMakeFiles/buffers.dir/buffer.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers/buffer.c +src/buffers/CMakeFiles/buffers.dir/buffer.c.o: src/buffers/CMakeFiles/buffers.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/buffers/CMakeFiles/buffers.dir/buffer.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/buffers/CMakeFiles/buffers.dir/buffer.c.o -MF CMakeFiles/buffers.dir/buffer.c.o.d -o CMakeFiles/buffers.dir/buffer.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers/buffer.c + +src/buffers/CMakeFiles/buffers.dir/buffer.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/buffers.dir/buffer.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers/buffer.c > CMakeFiles/buffers.dir/buffer.c.i + +src/buffers/CMakeFiles/buffers.dir/buffer.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/buffers.dir/buffer.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers/buffer.c -o CMakeFiles/buffers.dir/buffer.c.s + +# Object files for target buffers +buffers_OBJECTS = \ +"CMakeFiles/buffers.dir/buffer.c.o" + +# External object files for target buffers +buffers_EXTERNAL_OBJECTS = + +src/buffers/libbuffers.a: src/buffers/CMakeFiles/buffers.dir/buffer.c.o +src/buffers/libbuffers.a: src/buffers/CMakeFiles/buffers.dir/build.make +src/buffers/libbuffers.a: src/buffers/CMakeFiles/buffers.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C static library libbuffers.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers && $(CMAKE_COMMAND) -P CMakeFiles/buffers.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/buffers.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/buffers/CMakeFiles/buffers.dir/build: src/buffers/libbuffers.a +.PHONY : src/buffers/CMakeFiles/buffers.dir/build + +src/buffers/CMakeFiles/buffers.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers && $(CMAKE_COMMAND) -P CMakeFiles/buffers.dir/cmake_clean.cmake +.PHONY : src/buffers/CMakeFiles/buffers.dir/clean + +src/buffers/CMakeFiles/buffers.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers/CMakeFiles/buffers.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/buffers/CMakeFiles/buffers.dir/depend + diff --git a/release/src/buffers/CMakeFiles/buffers.dir/cmake_clean.cmake b/release/src/buffers/CMakeFiles/buffers.dir/cmake_clean.cmake new file mode 100644 index 0000000..d5389db --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/buffers.dir/buffer.c.o" + "CMakeFiles/buffers.dir/buffer.c.o.d" + "libbuffers.a" + "libbuffers.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/buffers.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/buffers/CMakeFiles/buffers.dir/cmake_clean_target.cmake b/release/src/buffers/CMakeFiles/buffers.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..a31ce66 --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libbuffers.a" +) diff --git a/release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.make b/release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.make new file mode 100644 index 0000000..8a1c7ee --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for buffers. +# This may be replaced when dependencies are built. diff --git a/release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.ts b/release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.ts new file mode 100644 index 0000000..f3ddc42 --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for buffers. diff --git a/release/src/buffers/CMakeFiles/buffers.dir/depend.make b/release/src/buffers/CMakeFiles/buffers.dir/depend.make new file mode 100644 index 0000000..537b43d --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for buffers. +# This may be replaced when dependencies are built. diff --git a/release/src/buffers/CMakeFiles/buffers.dir/flags.make b/release/src/buffers/CMakeFiles/buffers.dir/flags.make new file mode 100644 index 0000000..fdec4c2 --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + diff --git a/release/src/buffers/CMakeFiles/buffers.dir/link.txt b/release/src/buffers/CMakeFiles/buffers.dir/link.txt new file mode 100644 index 0000000..0b2e289 --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libbuffers.a CMakeFiles/buffers.dir/buffer.c.o +/usr/bin/ranlib libbuffers.a diff --git a/release/src/buffers/CMakeFiles/buffers.dir/progress.make b/release/src/buffers/CMakeFiles/buffers.dir/progress.make new file mode 100644 index 0000000..e6a48aa --- /dev/null +++ b/release/src/buffers/CMakeFiles/buffers.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_2 = 4 + diff --git a/release/src/buffers/CMakeFiles/progress.marks b/release/src/buffers/CMakeFiles/progress.marks new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/release/src/buffers/CMakeFiles/progress.marks @@ -0,0 +1 @@ +1 diff --git a/release/src/buffers/CTestTestfile.cmake b/release/src/buffers/CTestTestfile.cmake new file mode 100644 index 0000000..eb92c6e --- /dev/null +++ b/release/src/buffers/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/release/src/buffers/Makefile b/release/src/buffers/Makefile new file mode 100644 index 0000000..bd04262 --- /dev/null +++ b/release/src/buffers/Makefile @@ -0,0 +1,193 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers//CMakeFiles/progress.marks + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/buffers/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/buffers/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/buffers/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/buffers/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/buffers/CMakeFiles/buffers.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/buffers/CMakeFiles/buffers.dir/rule +.PHONY : src/buffers/CMakeFiles/buffers.dir/rule + +# Convenience name for target. +buffers: src/buffers/CMakeFiles/buffers.dir/rule +.PHONY : buffers + +# fast build rule for target. +buffers/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/build +.PHONY : buffers/fast + +buffer.o: buffer.c.o +.PHONY : buffer.o + +# target to build an object file +buffer.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/buffer.c.o +.PHONY : buffer.c.o + +buffer.i: buffer.c.i +.PHONY : buffer.i + +# target to preprocess a source file +buffer.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/buffer.c.i +.PHONY : buffer.c.i + +buffer.s: buffer.c.s +.PHONY : buffer.s + +# target to generate assembly for a file +buffer.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/buffers/CMakeFiles/buffers.dir/build.make src/buffers/CMakeFiles/buffers.dir/buffer.c.s +.PHONY : buffer.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" + @echo "... buffers" + @echo "... buffer.o" + @echo "... buffer.i" + @echo "... buffer.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/src/buffers/cmake_install.cmake b/release/src/buffers/cmake_install.cmake new file mode 100644 index 0000000..9a4f210 --- /dev/null +++ b/release/src/buffers/cmake_install.cmake @@ -0,0 +1,44 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/buffers + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + diff --git a/release/src/buffers/libbuffers.a b/release/src/buffers/libbuffers.a new file mode 100644 index 0000000000000000000000000000000000000000..fa3863fd78a2ed33fd6b50829df46d97a5f5b506 GIT binary patch literal 8478 zcmdT}O>A4o5gtlPLOY79q)Ow~F8qSn1tmEAkrazETAWl;hF5rXelMg}b06CCw4r&V&N?lZ) zd2d!6uE|7l4HRAAad*G@c6N4V-tOw@={@mmVr1{efKgpS-Jy<-a45K|%P@kDNd6i| zN4MKIjMzp1coe{Mbgj?H$yCb9Mn@+`ZQyolbRs@B`l_Y+rz|^~v|braSka7~mFP%1 zXG?4}r-)fAo}5zD3Y?l88@m^^#xu4gJ8CtmgH;g|>C9BrPV(J@^!CKyVkv*S-%W9Uh2< zl^ks<$Kd@EKrt*iWY-wlg-=bp2-o>!*VYGQR}7-%68n*ScnkZ=uO)1ge=~^VQzk!O zcG?$9Ub!}0LlN;s#r2%Sr>0*CujN=gauBiJ@@C}R z9CX_z41Pu!z#wva%O=Vwj;#mVF*eT>OteSyJrq6o;^X|k;rW9&e;DTv^88_E{(}YT z8>o+L2_ojxY*BKuh1$w4YDds6s=a8J+ppM#b~-kbeM6sPUv2*kq8+`$C+!6r+6u4z zscmZS!)+(td!+3P*S%J~0KX0lzy*{1x|X<*uU1ytdd$c>XPR-G2lqO!vp*R?wX6bvRt(}RnI(uZ|0qv3N*$?$t-jAQE{WIeDhxSF~rv~XKac14GpHBY| z{1iwea)FWbxD`lR@rlmRu0Y>+hN6jd(u&eGee@M8a4Ityi2o>qx6n+Q8i8Ck5pZwO zIj;Q)jEz(JPYm=KRyLc??lyMhcJIjf+IH_4#ipMw?dq=T-o!;;zm2O4u6rY|j8nLK z@g)VS9O&=gZTJoxInic>{m=P>Mn|wC6nrk!W%!O-Nh1=sUHsWlunotw@Ho$_N1-X- z=h@Qif$fNGX8bH&bR(PQ8y@fb@y{DCG+gxbJ+`gk9J0XSnauka)yVTm-nc`9ttc8{ zUXkkOH<^x};fj2Q<@2t5$dSh?@&%R;yK;B@k&65}%g;;s4=VB!%bj`D{NJm{y|f@K zm+5E!CKH$8nD9fSko`WEU()2?M>+W`!g7bF`yubnL%hrycr-=5Lc^QjuPe3W&egAm zpb;8tpnzyo9sHp>_`~<$l+7M^2r?{b=K8CQ7rC$U%*XgF<6q&roACwiw{lHYBWw`8 zO0yB%cd3H7tw!+b5bQ@p*&u~4VCRV#2L;)^kvgTI3~tyitnd2bQ>Z5{rHb@1z?2O~ejsa3>2l|SP{xR+CFo>@md?291 zNK7WTLyj!v9{R0bquKJ6d7qoLc&TXnb<#q?w za+h0T+|+PNSt_LG38&@$v@%Y5D0MR|+st@S!?$XDrh}pJ6~0~L53xYysnW0TAoI!2 zFDoTj(+3tRCO&e#1A;I2;30uONdviz2wd&uBzm23-Jdgzo5+##&IvuzpYIAi(w~WA-yQc9Kew}gMpNou}s93J+Bf*#cED2otb0^)mu#obZNDsxUhz}Jn z<3VgoyjkNrWc+E-_zG{;_$n@&HNL_P#`Spl7&lR|TvwOi%Xparm+?9-aQ-yxn5xbv zeP1$oGCeL4#>viYjt2KfooBk9#X5SHg&srbQRkno$L4cUx91Y$WRKMIdx3vl=>J6E z+Xb$!VtQUR@%d^ZmrZs?wK7ig%DnP1uJUTuVFT=BT;-L*gBqXd(53Me9@h9OfA(m6 zg%2>U=hb1xO;jw`H7xituaW|nd8O_jdc59bz8CE*_<6uoJJ}sutuV(Y<%3} z1^$B37>F z&r68cTK_Pw-^=4^{iIS~KZ*6Z5rSD7Ks6`EW7wwsN*_<@eNXNnX0+fB7TtbrInLi! RwZ_Nzl62Ztv-+!#{}1lqQ$hd$ literal 0 HcmV?d00001 diff --git a/release/src/checksum/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/checksum/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/checksum/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/checksum/CMakeFiles/checksum.dir/DependInfo.cmake b/release/src/checksum/CMakeFiles/checksum.dir/DependInfo.cmake new file mode 100644 index 0000000..ffcc1ae --- /dev/null +++ b/release/src/checksum/CMakeFiles/checksum.dir/DependInfo.cmake @@ -0,0 +1,20 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/checksum.c" "src/checksum/CMakeFiles/checksum.dir/checksum.c.o" "gcc" "src/checksum/CMakeFiles/checksum.dir/checksum.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/md5/md5.c" "src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o" "gcc" "src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/checksum/CMakeFiles/checksum.dir/build.make b/release/src/checksum/CMakeFiles/checksum.dir/build.make new file mode 100644 index 0000000..b405918 --- /dev/null +++ b/release/src/checksum/CMakeFiles/checksum.dir/build.make @@ -0,0 +1,127 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/checksum/CMakeFiles/checksum.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/checksum/CMakeFiles/checksum.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/checksum/CMakeFiles/checksum.dir/progress.make + +# Include the compile flags for this target's objects. +include src/checksum/CMakeFiles/checksum.dir/flags.make + +src/checksum/CMakeFiles/checksum.dir/checksum.c.o: src/checksum/CMakeFiles/checksum.dir/flags.make +src/checksum/CMakeFiles/checksum.dir/checksum.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/checksum.c +src/checksum/CMakeFiles/checksum.dir/checksum.c.o: src/checksum/CMakeFiles/checksum.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/checksum/CMakeFiles/checksum.dir/checksum.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/checksum/CMakeFiles/checksum.dir/checksum.c.o -MF CMakeFiles/checksum.dir/checksum.c.o.d -o CMakeFiles/checksum.dir/checksum.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/checksum.c + +src/checksum/CMakeFiles/checksum.dir/checksum.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/checksum.dir/checksum.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/checksum.c > CMakeFiles/checksum.dir/checksum.c.i + +src/checksum/CMakeFiles/checksum.dir/checksum.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/checksum.dir/checksum.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/checksum.c -o CMakeFiles/checksum.dir/checksum.c.s + +src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o: src/checksum/CMakeFiles/checksum.dir/flags.make +src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/md5/md5.c +src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o: src/checksum/CMakeFiles/checksum.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o -MF CMakeFiles/checksum.dir/md5/md5.c.o.d -o CMakeFiles/checksum.dir/md5/md5.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/md5/md5.c + +src/checksum/CMakeFiles/checksum.dir/md5/md5.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/checksum.dir/md5/md5.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/md5/md5.c > CMakeFiles/checksum.dir/md5/md5.c.i + +src/checksum/CMakeFiles/checksum.dir/md5/md5.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/checksum.dir/md5/md5.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/md5/md5.c -o CMakeFiles/checksum.dir/md5/md5.c.s + +# Object files for target checksum +checksum_OBJECTS = \ +"CMakeFiles/checksum.dir/checksum.c.o" \ +"CMakeFiles/checksum.dir/md5/md5.c.o" + +# External object files for target checksum +checksum_EXTERNAL_OBJECTS = + +src/checksum/libchecksum.a: src/checksum/CMakeFiles/checksum.dir/checksum.c.o +src/checksum/libchecksum.a: src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o +src/checksum/libchecksum.a: src/checksum/CMakeFiles/checksum.dir/build.make +src/checksum/libchecksum.a: src/checksum/CMakeFiles/checksum.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking C static library libchecksum.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && $(CMAKE_COMMAND) -P CMakeFiles/checksum.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/checksum.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/checksum/CMakeFiles/checksum.dir/build: src/checksum/libchecksum.a +.PHONY : src/checksum/CMakeFiles/checksum.dir/build + +src/checksum/CMakeFiles/checksum.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum && $(CMAKE_COMMAND) -P CMakeFiles/checksum.dir/cmake_clean.cmake +.PHONY : src/checksum/CMakeFiles/checksum.dir/clean + +src/checksum/CMakeFiles/checksum.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum/CMakeFiles/checksum.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/checksum/CMakeFiles/checksum.dir/depend + diff --git a/release/src/checksum/CMakeFiles/checksum.dir/checksum.c.o b/release/src/checksum/CMakeFiles/checksum.dir/checksum.c.o new file mode 100644 index 0000000000000000000000000000000000000000..6989772404034eebad4deb8cc0181fa00a73f992 GIT binary patch literal 3264 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'V($&vjDh;_01kO zdzN}d#t%dez#>G=%$%RW`eT^`2>J~zRqKuYS*GA$du z;dir3Z{pSE(i=R?zqg|;5!(uBVvkB&jkG7eGv-gklL_VrZeq;8b?;v0-?qE0ExrqM zyLKnyewYB}?@h$E?O=XcJl@*$l|8YxxOSIy;)NP;l(|Pj7nk;K%Oe^4nb$;6S7s9*fKL8*482^5% z1R2ZXW74HWmInRj``6h1b^3kU_ppki`uzuWeI{|oza9*>_`i&Sfu~viWenqwvzj~p zh{Nq0UkR4uU&dNBP#iZ{hx>ihxnmD1)~ori!VGy#+>B}h2)6eF`u_(unSwfXzyE(D CrAin8 literal 0 HcmV?d00001 diff --git a/release/src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o.d b/release/src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o.d new file mode 100644 index 0000000..1f0acfd --- /dev/null +++ b/release/src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o.d @@ -0,0 +1,9 @@ +src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum/md5/md5.c \ + /usr/include/stdc-predef.h /usr/include/string.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/checksum/md5/md5.h diff --git a/release/src/checksum/CMakeFiles/checksum.dir/progress.make b/release/src/checksum/CMakeFiles/checksum.dir/progress.make new file mode 100644 index 0000000..66952f1 --- /dev/null +++ b/release/src/checksum/CMakeFiles/checksum.dir/progress.make @@ -0,0 +1,4 @@ +CMAKE_PROGRESS_1 = 5 +CMAKE_PROGRESS_2 = 6 +CMAKE_PROGRESS_3 = + diff --git a/release/src/checksum/CMakeFiles/progress.marks b/release/src/checksum/CMakeFiles/progress.marks new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/release/src/checksum/CMakeFiles/progress.marks @@ -0,0 +1 @@ +2 diff --git a/release/src/checksum/CTestTestfile.cmake b/release/src/checksum/CTestTestfile.cmake new file mode 100644 index 0000000..1aea1f3 --- /dev/null +++ b/release/src/checksum/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/release/src/checksum/Makefile b/release/src/checksum/Makefile new file mode 100644 index 0000000..eeff0e9 --- /dev/null +++ b/release/src/checksum/Makefile @@ -0,0 +1,220 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum//CMakeFiles/progress.marks + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/checksum/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/checksum/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/checksum/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/checksum/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/checksum/CMakeFiles/checksum.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/checksum/CMakeFiles/checksum.dir/rule +.PHONY : src/checksum/CMakeFiles/checksum.dir/rule + +# Convenience name for target. +checksum: src/checksum/CMakeFiles/checksum.dir/rule +.PHONY : checksum + +# fast build rule for target. +checksum/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/build +.PHONY : checksum/fast + +checksum.o: checksum.c.o +.PHONY : checksum.o + +# target to build an object file +checksum.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/checksum.c.o +.PHONY : checksum.c.o + +checksum.i: checksum.c.i +.PHONY : checksum.i + +# target to preprocess a source file +checksum.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/checksum.c.i +.PHONY : checksum.c.i + +checksum.s: checksum.c.s +.PHONY : checksum.s + +# target to generate assembly for a file +checksum.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/checksum.c.s +.PHONY : checksum.c.s + +md5/md5.o: md5/md5.c.o +.PHONY : md5/md5.o + +# target to build an object file +md5/md5.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/md5/md5.c.o +.PHONY : md5/md5.c.o + +md5/md5.i: md5/md5.c.i +.PHONY : md5/md5.i + +# target to preprocess a source file +md5/md5.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/md5/md5.c.i +.PHONY : md5/md5.c.i + +md5/md5.s: md5/md5.c.s +.PHONY : md5/md5.s + +# target to generate assembly for a file +md5/md5.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/checksum/CMakeFiles/checksum.dir/build.make src/checksum/CMakeFiles/checksum.dir/md5/md5.c.s +.PHONY : md5/md5.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" + @echo "... checksum" + @echo "... checksum.o" + @echo "... checksum.i" + @echo "... checksum.s" + @echo "... md5/md5.o" + @echo "... md5/md5.i" + @echo "... md5/md5.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/src/checksum/cmake_install.cmake b/release/src/checksum/cmake_install.cmake new file mode 100644 index 0000000..fd4a69e --- /dev/null +++ b/release/src/checksum/cmake_install.cmake @@ -0,0 +1,44 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/checksum + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + diff --git a/release/src/checksum/libchecksum.a b/release/src/checksum/libchecksum.a new file mode 100644 index 0000000000000000000000000000000000000000..6ce5fa99282dde59a6fffcad1dcd8eff151d2e81 GIT binary patch literal 16010 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 literal 0 HcmV?d00001 diff --git a/release/src/cmake_install.cmake b/release/src/cmake_install.cmake new file mode 100644 index 0000000..189212e --- /dev/null +++ b/release/src/cmake_install.cmake @@ -0,0 +1,60 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/awp/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/argparse/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/buffers/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/vtk/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/checksum/cmake_install.cmake") + include("/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid/cmake_install.cmake") + +endif() + diff --git a/release/src/grid/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/grid/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/grid/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/grid/CMakeFiles/grid.dir/DependInfo.cmake b/release/src/grid/CMakeFiles/grid.dir/DependInfo.cmake new file mode 100644 index 0000000..6fbf45a --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/DependInfo.cmake @@ -0,0 +1,20 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/grid_3d.c" "src/grid/CMakeFiles/grid.dir/grid_3d.c.o" "gcc" "src/grid/CMakeFiles/grid.dir/grid_3d.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/shift.c" "src/grid/CMakeFiles/grid.dir/shift.c.o" "gcc" "src/grid/CMakeFiles/grid.dir/shift.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/grid/CMakeFiles/grid.dir/build.make b/release/src/grid/CMakeFiles/grid.dir/build.make new file mode 100644 index 0000000..c596db0 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/build.make @@ -0,0 +1,127 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/grid/CMakeFiles/grid.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/grid/CMakeFiles/grid.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/grid/CMakeFiles/grid.dir/progress.make + +# Include the compile flags for this target's objects. +include src/grid/CMakeFiles/grid.dir/flags.make + +src/grid/CMakeFiles/grid.dir/grid_3d.c.o: src/grid/CMakeFiles/grid.dir/flags.make +src/grid/CMakeFiles/grid.dir/grid_3d.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/grid_3d.c +src/grid/CMakeFiles/grid.dir/grid_3d.c.o: src/grid/CMakeFiles/grid.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/grid/CMakeFiles/grid.dir/grid_3d.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/grid/CMakeFiles/grid.dir/grid_3d.c.o -MF CMakeFiles/grid.dir/grid_3d.c.o.d -o CMakeFiles/grid.dir/grid_3d.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/grid_3d.c + +src/grid/CMakeFiles/grid.dir/grid_3d.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/grid.dir/grid_3d.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/grid_3d.c > CMakeFiles/grid.dir/grid_3d.c.i + +src/grid/CMakeFiles/grid.dir/grid_3d.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/grid.dir/grid_3d.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/grid_3d.c -o CMakeFiles/grid.dir/grid_3d.c.s + +src/grid/CMakeFiles/grid.dir/shift.c.o: src/grid/CMakeFiles/grid.dir/flags.make +src/grid/CMakeFiles/grid.dir/shift.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/shift.c +src/grid/CMakeFiles/grid.dir/shift.c.o: src/grid/CMakeFiles/grid.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object src/grid/CMakeFiles/grid.dir/shift.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/grid/CMakeFiles/grid.dir/shift.c.o -MF CMakeFiles/grid.dir/shift.c.o.d -o CMakeFiles/grid.dir/shift.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/shift.c + +src/grid/CMakeFiles/grid.dir/shift.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/grid.dir/shift.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/shift.c > CMakeFiles/grid.dir/shift.c.i + +src/grid/CMakeFiles/grid.dir/shift.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/grid.dir/shift.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/shift.c -o CMakeFiles/grid.dir/shift.c.s + +# Object files for target grid +grid_OBJECTS = \ +"CMakeFiles/grid.dir/grid_3d.c.o" \ +"CMakeFiles/grid.dir/shift.c.o" + +# External object files for target grid +grid_EXTERNAL_OBJECTS = + +src/grid/libgrid.a: src/grid/CMakeFiles/grid.dir/grid_3d.c.o +src/grid/libgrid.a: src/grid/CMakeFiles/grid.dir/shift.c.o +src/grid/libgrid.a: src/grid/CMakeFiles/grid.dir/build.make +src/grid/libgrid.a: src/grid/CMakeFiles/grid.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking C static library libgrid.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && $(CMAKE_COMMAND) -P CMakeFiles/grid.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/grid.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/grid/CMakeFiles/grid.dir/build: src/grid/libgrid.a +.PHONY : src/grid/CMakeFiles/grid.dir/build + +src/grid/CMakeFiles/grid.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid && $(CMAKE_COMMAND) -P CMakeFiles/grid.dir/cmake_clean.cmake +.PHONY : src/grid/CMakeFiles/grid.dir/clean + +src/grid/CMakeFiles/grid.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid/CMakeFiles/grid.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/grid/CMakeFiles/grid.dir/depend + diff --git a/release/src/grid/CMakeFiles/grid.dir/cmake_clean.cmake b/release/src/grid/CMakeFiles/grid.dir/cmake_clean.cmake new file mode 100644 index 0000000..f213c4b --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/cmake_clean.cmake @@ -0,0 +1,13 @@ +file(REMOVE_RECURSE + "CMakeFiles/grid.dir/grid_3d.c.o" + "CMakeFiles/grid.dir/grid_3d.c.o.d" + "CMakeFiles/grid.dir/shift.c.o" + "CMakeFiles/grid.dir/shift.c.o.d" + "libgrid.a" + "libgrid.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/grid.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/grid/CMakeFiles/grid.dir/cmake_clean_target.cmake b/release/src/grid/CMakeFiles/grid.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..3d8fbd8 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libgrid.a" +) diff --git a/release/src/grid/CMakeFiles/grid.dir/compiler_depend.make b/release/src/grid/CMakeFiles/grid.dir/compiler_depend.make new file mode 100644 index 0000000..c3fd010 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for grid. +# This may be replaced when dependencies are built. diff --git a/release/src/grid/CMakeFiles/grid.dir/compiler_depend.ts b/release/src/grid/CMakeFiles/grid.dir/compiler_depend.ts new file mode 100644 index 0000000..33def64 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for grid. diff --git a/release/src/grid/CMakeFiles/grid.dir/depend.make b/release/src/grid/CMakeFiles/grid.dir/depend.make new file mode 100644 index 0000000..6ed3096 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for grid. +# This may be replaced when dependencies are built. diff --git a/release/src/grid/CMakeFiles/grid.dir/flags.make b/release/src/grid/CMakeFiles/grid.dir/flags.make new file mode 100644 index 0000000..fdec4c2 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + diff --git a/release/src/grid/CMakeFiles/grid.dir/grid_3d.c.o b/release/src/grid/CMakeFiles/grid.dir/grid_3d.c.o new file mode 100644 index 0000000000000000000000000000000000000000..14a6ebd26ce9d5aef03537dec182d8b6839c7d0c GIT binary patch literal 19176 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 H*Y5v6fI>Ri literal 0 HcmV?d00001 diff --git a/release/src/grid/CMakeFiles/grid.dir/grid_3d.c.o.d b/release/src/grid/CMakeFiles/grid.dir/grid_3d.c.o.d new file mode 100644 index 0000000..e48fefc --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/grid_3d.c.o.d @@ -0,0 +1,35 @@ +src/grid/CMakeFiles/grid.dir/grid_3d.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/grid_3d.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/assert.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /usr/include/string.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/grid/grid_3d.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/error.h diff --git a/release/src/grid/CMakeFiles/grid.dir/link.txt b/release/src/grid/CMakeFiles/grid.dir/link.txt new file mode 100644 index 0000000..2bbd388 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libgrid.a CMakeFiles/grid.dir/grid_3d.c.o CMakeFiles/grid.dir/shift.c.o +/usr/bin/ranlib libgrid.a diff --git a/release/src/grid/CMakeFiles/grid.dir/progress.make b/release/src/grid/CMakeFiles/grid.dir/progress.make new file mode 100644 index 0000000..d47d864 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/progress.make @@ -0,0 +1,4 @@ +CMAKE_PROGRESS_1 = 13 +CMAKE_PROGRESS_2 = 14 +CMAKE_PROGRESS_3 = 15 + diff --git a/release/src/grid/CMakeFiles/grid.dir/shift.c.o b/release/src/grid/CMakeFiles/grid.dir/shift.c.o new file mode 100644 index 0000000000000000000000000000000000000000..1f4d3326cd0cf65e4be0a4c5b9aa19f2df27358e GIT binary patch literal 9536 zcmeHMO=w)#6+R=W^|VnGrAZo5yY+K2m{Fok$3FqN`O(NyV?{BpiCxe_R2o~8jEQU+ zX+qzanOKGtoRTgCT?A@3Z863PSt!8^QM_=9C~D}Ulq|e(Aq6kwI)sE|q0|QDoO{0` zJ)g|e_^;FiU-agl`<-*Yd)~R{{>Y9=|i+VHH9W->2>mvaTeVGQ%GPnE7v#Z+6;jZ>-irar()n5+C zx5bwYl4z@}=gZ4J zKJ*m1HUF&S{1Nu;%R4@PbK-ciAz5kV?RtLkkC#7PeE)KE?)e<)3m^VmG1x;vLNkqC0!SH*s&hdXBF?n-Y9R{Xh5pTE2--x5K#^^-X-b9nbVy`{fkw zA+o>ccz@^TNRnQAw3ImBE%L~NkCcfT`20^_yubgEDt{+9BJ$}~{Z(n7Y;3OvO_MuP zMAXaA2tTj#bAq2)elGCS#5;D1AO4FyOF9zNx01fOj{aljUa9}z>*(L9qkp}QezcB$ zdmViT>;Lz6!P@7*LB0!K&$%nPuHP5+Uch$)mp5nWc(=&clQ&t;5x#Uv0BAQq!~AeO zDdb0TNzWRIvC6{{nfol^EG)^)xg_%#OL8hAw?*XUh%9#!&i|UpUWP^>_jT^F$ zZ`d59pD&CAefg5dAKQ>^=kBebNE~{en!@hHYF=Dx7~@#DG9aH@TXJtEy6;}QgOyxF z-zfr@IK9JH(1)&feE&D<=x6Ha&(+Z{)X}%OH;wnNvyOfM`eQQA)|Q9RXSwSB#=a)Q+{Kh-#eWQZ7&)qVCveSw#k+yGVy+eM2VOMzF5qVkJ_x)GQ=mKr;0J-b zTx4uaaCWj8Q{&bEW547__f{5{3SXL>{j{ad6fCrdL<$oLatij(?9;Axe|54x}7g|G<%AF3YVQ`HN6ta^dZRS1gk z$@=2>z7bFDBxcU+{#j4P<4o_-O}-9&RrVD+^N7xf2Xr-$=V~6#*J$ft&IhmZ?u_R5 z6y(06`E-Tl?@J(1T9G&Z<+k8xQUF1&6-X7=BL$rAJXhhGf0qAr4F9a*=lhW>bB14W z&11_y0Ozd#Md0dx8~8_otN)7Yda(RgV))l!ok)5<0B)(Kfm@!_z^$JjMtB~K@aTH8 zJfm2LmgjZg;*Y+Q(CPZLJSnVC%d;7{#w`V(I)Q846xVfb`R8Kz&&BYckKr$3zp(tH zz^(rk;MV_1;MRZLFD(BB>?4*xKtc*Xrp`qu1w3c)Yz$rmZu9481dry!sR$mO-?<3B z#(CmD<|DYAm0FT_dr8Lqk%C;OBly|~-WS1x2wsff>ms=Bvo@X`*ne$22Y_olkp?sf zJjdJ;XT^&#_#YxXvSekRrJMk+^RD=plq zvEK>%4~@Oz=Z*aU>_0O0iq9MSVc36c>=pmQ*cV~HVC)s=fA+ef>+T@zn}AE)WnL6- zHufRxTaCTqP}6!A$!X0;Cf!V z$>4WTKlS`e;U28Go@aV5Q(Vs{eQ(9}Tsdlau#cZIxZWS<46gUbd4ucyF^T)Pj;rTE z*5JCYQD&mNzm(s@b!pt!MU}=2qxnp!5SA!2k}u^cvu9$0GUH>u;k9FXDYJKM|Ng=O zwmL9YDrESlmB%JZ`Moc(sSp&3LobZy_ZN^DH(3STU#2d4RtaTJKDcDD-h6BM{-^EL zEXb8CrvU0X98PCJEXz^G(e>B{J6V^4Bb-2aA28#p0%@jA>R?GYZ?wPsJSLo&ewKXE z@$qw*!b|=u@H7jx{QngGx2hp(eSd|wuuv<0M{)Sdz9>cFC!y5-8owUKWPG(_(H9Jy z(Kc$0pVr$MS2=2$v5uSmYMV!Y8^0|2_nC>2ca4@oZq$1J8NB}hh~@p|PGa9*e79pW xMB#n%Ni>Y{7l|0^Zu|KR`t literal 0 HcmV?d00001 diff --git a/release/src/grid/CMakeFiles/grid.dir/shift.c.o.d b/release/src/grid/CMakeFiles/grid.dir/shift.c.o.d new file mode 100644 index 0000000..bc9d866 --- /dev/null +++ b/release/src/grid/CMakeFiles/grid.dir/shift.c.o.d @@ -0,0 +1,8 @@ +src/grid/CMakeFiles/grid.dir/shift.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid/shift.c \ + /usr/include/stdc-predef.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/grid/shift.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h diff --git a/release/src/grid/CMakeFiles/progress.marks b/release/src/grid/CMakeFiles/progress.marks new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/release/src/grid/CMakeFiles/progress.marks @@ -0,0 +1 @@ +3 diff --git a/release/src/grid/CTestTestfile.cmake b/release/src/grid/CTestTestfile.cmake new file mode 100644 index 0000000..c8de98d --- /dev/null +++ b/release/src/grid/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/release/src/grid/Makefile b/release/src/grid/Makefile new file mode 100644 index 0000000..da0d8cb --- /dev/null +++ b/release/src/grid/Makefile @@ -0,0 +1,220 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/grid//CMakeFiles/progress.marks + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/grid/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/grid/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/grid/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/grid/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/grid/CMakeFiles/grid.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/grid/CMakeFiles/grid.dir/rule +.PHONY : src/grid/CMakeFiles/grid.dir/rule + +# Convenience name for target. +grid: src/grid/CMakeFiles/grid.dir/rule +.PHONY : grid + +# fast build rule for target. +grid/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/build +.PHONY : grid/fast + +grid_3d.o: grid_3d.c.o +.PHONY : grid_3d.o + +# target to build an object file +grid_3d.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/grid_3d.c.o +.PHONY : grid_3d.c.o + +grid_3d.i: grid_3d.c.i +.PHONY : grid_3d.i + +# target to preprocess a source file +grid_3d.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/grid_3d.c.i +.PHONY : grid_3d.c.i + +grid_3d.s: grid_3d.c.s +.PHONY : grid_3d.s + +# target to generate assembly for a file +grid_3d.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/grid_3d.c.s +.PHONY : grid_3d.c.s + +shift.o: shift.c.o +.PHONY : shift.o + +# target to build an object file +shift.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/shift.c.o +.PHONY : shift.c.o + +shift.i: shift.c.i +.PHONY : shift.i + +# target to preprocess a source file +shift.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/shift.c.i +.PHONY : shift.c.i + +shift.s: shift.c.s +.PHONY : shift.s + +# target to generate assembly for a file +shift.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/grid/CMakeFiles/grid.dir/build.make src/grid/CMakeFiles/grid.dir/shift.c.s +.PHONY : shift.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" + @echo "... grid" + @echo "... grid_3d.o" + @echo "... grid_3d.i" + @echo "... grid_3d.s" + @echo "... shift.o" + @echo "... shift.i" + @echo "... shift.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/src/grid/cmake_install.cmake b/release/src/grid/cmake_install.cmake new file mode 100644 index 0000000..3160c7e --- /dev/null +++ b/release/src/grid/cmake_install.cmake @@ -0,0 +1,44 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/grid + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + diff --git a/release/src/grid/libgrid.a b/release/src/grid/libgrid.a new file mode 100644 index 0000000000000000000000000000000000000000..83d92b9fa0ec3bb25f155185e7f97e89cc069eea GIT binary patch literal 29814 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 literal 0 HcmV?d00001 diff --git a/release/src/interpolation/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/interpolation/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/interpolation/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/DependInfo.cmake b/release/src/interpolation/CMakeFiles/interpolation.dir/DependInfo.cmake new file mode 100644 index 0000000..ae75b2f --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/DependInfo.cmake @@ -0,0 +1,21 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.c" "src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o" "gcc" "src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/lagrange.c" "src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o" "gcc" "src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.cu" "src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o" "gcc" "src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/build.make b/release/src/interpolation/CMakeFiles/interpolation.dir/build.make new file mode 100644 index 0000000..9e27984 --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/build.make @@ -0,0 +1,144 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/interpolation/CMakeFiles/interpolation.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/interpolation/CMakeFiles/interpolation.dir/progress.make + +# Include the compile flags for this target's objects. +include src/interpolation/CMakeFiles/interpolation.dir/flags.make + +src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o: src/interpolation/CMakeFiles/interpolation.dir/flags.make +src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.c +src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o: src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o -MF CMakeFiles/interpolation.dir/interpolation.c.o.d -o CMakeFiles/interpolation.dir/interpolation.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.c + +src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/interpolation.dir/interpolation.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.c > CMakeFiles/interpolation.dir/interpolation.c.i + +src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/interpolation.dir/interpolation.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.c -o CMakeFiles/interpolation.dir/interpolation.c.s + +src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o: src/interpolation/CMakeFiles/interpolation.dir/flags.make +src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o: src/interpolation/CMakeFiles/interpolation.dir/includes_CUDA.rsp +src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.cu +src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o: src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CUDA object src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler $(CUDA_DEFINES) $(CUDA_INCLUDES) $(CUDA_FLAGS) -MD -MT src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o -MF CMakeFiles/interpolation.dir/interpolation.cu.o.d -x cu -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.cu -o CMakeFiles/interpolation.dir/interpolation.cu.o + +src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CUDA source to CMakeFiles/interpolation.dir/interpolation.cu.i" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_PREPROCESSED_SOURCE + +src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CUDA source to assembly CMakeFiles/interpolation.dir/interpolation.cu.s" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_ASSEMBLY_SOURCE + +src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o: src/interpolation/CMakeFiles/interpolation.dir/flags.make +src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/lagrange.c +src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o: src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o -MF CMakeFiles/interpolation.dir/lagrange.c.o.d -o CMakeFiles/interpolation.dir/lagrange.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/lagrange.c + +src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/interpolation.dir/lagrange.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/lagrange.c > CMakeFiles/interpolation.dir/lagrange.c.i + +src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/interpolation.dir/lagrange.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/lagrange.c -o CMakeFiles/interpolation.dir/lagrange.c.s + +# Object files for target interpolation +interpolation_OBJECTS = \ +"CMakeFiles/interpolation.dir/interpolation.c.o" \ +"CMakeFiles/interpolation.dir/interpolation.cu.o" \ +"CMakeFiles/interpolation.dir/lagrange.c.o" + +# External object files for target interpolation +interpolation_EXTERNAL_OBJECTS = + +src/interpolation/libinterpolation.a: src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o +src/interpolation/libinterpolation.a: src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o +src/interpolation/libinterpolation.a: src/interpolation/CMakeFiles/interpolation.dir/lagrange.c.o +src/interpolation/libinterpolation.a: src/interpolation/CMakeFiles/interpolation.dir/build.make +src/interpolation/libinterpolation.a: src/interpolation/CMakeFiles/interpolation.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Linking CUDA static library libinterpolation.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && $(CMAKE_COMMAND) -P CMakeFiles/interpolation.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/interpolation.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/interpolation/CMakeFiles/interpolation.dir/build: src/interpolation/libinterpolation.a +.PHONY : src/interpolation/CMakeFiles/interpolation.dir/build + +src/interpolation/CMakeFiles/interpolation.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation && $(CMAKE_COMMAND) -P CMakeFiles/interpolation.dir/cmake_clean.cmake +.PHONY : src/interpolation/CMakeFiles/interpolation.dir/clean + +src/interpolation/CMakeFiles/interpolation.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/interpolation/CMakeFiles/interpolation.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/interpolation/CMakeFiles/interpolation.dir/depend + diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean.cmake b/release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean.cmake new file mode 100644 index 0000000..0a2c29d --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean.cmake @@ -0,0 +1,15 @@ +file(REMOVE_RECURSE + "CMakeFiles/interpolation.dir/interpolation.c.o" + "CMakeFiles/interpolation.dir/interpolation.c.o.d" + "CMakeFiles/interpolation.dir/interpolation.cu.o" + "CMakeFiles/interpolation.dir/interpolation.cu.o.d" + "CMakeFiles/interpolation.dir/lagrange.c.o" + "CMakeFiles/interpolation.dir/lagrange.c.o.d" + "libinterpolation.a" + "libinterpolation.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C CUDA) + include(CMakeFiles/interpolation.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean_target.cmake b/release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..b5074bd --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libinterpolation.a" +) diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.make b/release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.make new file mode 100644 index 0000000..019cdb3 --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for interpolation. +# This may be replaced when dependencies are built. diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.ts b/release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.ts new file mode 100644 index 0000000..e2f8c84 --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for interpolation. diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/depend.make b/release/src/interpolation/CMakeFiles/interpolation.dir/depend.make new file mode 100644 index 0000000..ee5fd5c --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for interpolation. +# This may be replaced when dependencies are built. diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/flags.make b/release/src/interpolation/CMakeFiles/interpolation.dir/flags.make new file mode 100644 index 0000000..868f911 --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/flags.make @@ -0,0 +1,17 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +# compile CUDA with /sw/summit/cuda/11.7.1/bin/nvcc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + +CUDA_DEFINES = + +CUDA_INCLUDES = --options-file CMakeFiles/interpolation.dir/includes_CUDA.rsp + +CUDA_FLAGS = -O4 -Xcompiler -std=c++11 -use_fast_math -Xptxas=-v -lineinfo "--generate-code=arch=compute_70,code=[compute_70,sm_70]" + diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/includes_CUDA.rsp b/release/src/interpolation/CMakeFiles/interpolation.dir/includes_CUDA.rsp new file mode 100644 index 0000000..8b5bbf1 --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/includes_CUDA.rsp @@ -0,0 +1 @@ +-I"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include" -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o b/release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o new file mode 100644 index 0000000000000000000000000000000000000000..33c4cc796e57106d92c107d68dc131540af71bd9 GIT binary patch literal 8224 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 kFwf_9YWf}!y(KR>U82|tP literal 0 HcmV?d00001 diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o.d b/release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o.d new file mode 100644 index 0000000..af5eda9 --- /dev/null +++ b/release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o.d @@ -0,0 +1,37 @@ +src/interpolation/CMakeFiles/interpolation.dir/interpolation.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/interpolation/interpolation.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/string.h /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /usr/include/assert.h /usr/include/math.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/grid/grid_3d.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/interpolation/lagrange.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/interpolation/interpolation.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/error.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h diff --git a/release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o b/release/src/interpolation/CMakeFiles/interpolation.dir/interpolation.cu.o new file mode 100644 index 0000000000000000000000000000000000000000..9fa5904ff0fc804158d1d5068f01a335578c5c64 GIT binary patch literal 37272 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 E1Bh6GuK)l5 literal 0 HcmV?d00001 diff --git a/release/src/mpi/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/mpi/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/mpi/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/mpi/CMakeFiles/mpi.dir/DependInfo.cmake b/release/src/mpi/CMakeFiles/mpi.dir/DependInfo.cmake new file mode 100644 index 0000000..6cd9834 --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/DependInfo.cmake @@ -0,0 +1,21 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/distribute.c" "src/mpi/CMakeFiles/mpi.dir/distribute.c.o" "gcc" "src/mpi/CMakeFiles/mpi.dir/distribute.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/io.c" "src/mpi/CMakeFiles/mpi.dir/io.c.o" "gcc" "src/mpi/CMakeFiles/mpi.dir/io.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/partition.c" "src/mpi/CMakeFiles/mpi.dir/partition.c.o" "gcc" "src/mpi/CMakeFiles/mpi.dir/partition.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/mpi/CMakeFiles/mpi.dir/build.make b/release/src/mpi/CMakeFiles/mpi.dir/build.make new file mode 100644 index 0000000..67ad27a --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/build.make @@ -0,0 +1,143 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/mpi/CMakeFiles/mpi.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/mpi/CMakeFiles/mpi.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/mpi/CMakeFiles/mpi.dir/progress.make + +# Include the compile flags for this target's objects. +include src/mpi/CMakeFiles/mpi.dir/flags.make + +src/mpi/CMakeFiles/mpi.dir/partition.c.o: src/mpi/CMakeFiles/mpi.dir/flags.make +src/mpi/CMakeFiles/mpi.dir/partition.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/partition.c +src/mpi/CMakeFiles/mpi.dir/partition.c.o: src/mpi/CMakeFiles/mpi.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/mpi/CMakeFiles/mpi.dir/partition.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/mpi/CMakeFiles/mpi.dir/partition.c.o -MF CMakeFiles/mpi.dir/partition.c.o.d -o CMakeFiles/mpi.dir/partition.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/partition.c + +src/mpi/CMakeFiles/mpi.dir/partition.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpi.dir/partition.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/partition.c > CMakeFiles/mpi.dir/partition.c.i + +src/mpi/CMakeFiles/mpi.dir/partition.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpi.dir/partition.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/partition.c -o CMakeFiles/mpi.dir/partition.c.s + +src/mpi/CMakeFiles/mpi.dir/distribute.c.o: src/mpi/CMakeFiles/mpi.dir/flags.make +src/mpi/CMakeFiles/mpi.dir/distribute.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/distribute.c +src/mpi/CMakeFiles/mpi.dir/distribute.c.o: src/mpi/CMakeFiles/mpi.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object src/mpi/CMakeFiles/mpi.dir/distribute.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/mpi/CMakeFiles/mpi.dir/distribute.c.o -MF CMakeFiles/mpi.dir/distribute.c.o.d -o CMakeFiles/mpi.dir/distribute.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/distribute.c + +src/mpi/CMakeFiles/mpi.dir/distribute.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpi.dir/distribute.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/distribute.c > CMakeFiles/mpi.dir/distribute.c.i + +src/mpi/CMakeFiles/mpi.dir/distribute.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpi.dir/distribute.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/distribute.c -o CMakeFiles/mpi.dir/distribute.c.s + +src/mpi/CMakeFiles/mpi.dir/io.c.o: src/mpi/CMakeFiles/mpi.dir/flags.make +src/mpi/CMakeFiles/mpi.dir/io.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/io.c +src/mpi/CMakeFiles/mpi.dir/io.c.o: src/mpi/CMakeFiles/mpi.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object src/mpi/CMakeFiles/mpi.dir/io.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/mpi/CMakeFiles/mpi.dir/io.c.o -MF CMakeFiles/mpi.dir/io.c.o.d -o CMakeFiles/mpi.dir/io.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/io.c + +src/mpi/CMakeFiles/mpi.dir/io.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mpi.dir/io.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/io.c > CMakeFiles/mpi.dir/io.c.i + +src/mpi/CMakeFiles/mpi.dir/io.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mpi.dir/io.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/io.c -o CMakeFiles/mpi.dir/io.c.s + +# Object files for target mpi +mpi_OBJECTS = \ +"CMakeFiles/mpi.dir/partition.c.o" \ +"CMakeFiles/mpi.dir/distribute.c.o" \ +"CMakeFiles/mpi.dir/io.c.o" + +# External object files for target mpi +mpi_EXTERNAL_OBJECTS = + +src/mpi/libmpi.a: src/mpi/CMakeFiles/mpi.dir/partition.c.o +src/mpi/libmpi.a: src/mpi/CMakeFiles/mpi.dir/distribute.c.o +src/mpi/libmpi.a: src/mpi/CMakeFiles/mpi.dir/io.c.o +src/mpi/libmpi.a: src/mpi/CMakeFiles/mpi.dir/build.make +src/mpi/libmpi.a: src/mpi/CMakeFiles/mpi.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Linking C static library libmpi.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && $(CMAKE_COMMAND) -P CMakeFiles/mpi.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mpi.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/mpi/CMakeFiles/mpi.dir/build: src/mpi/libmpi.a +.PHONY : src/mpi/CMakeFiles/mpi.dir/build + +src/mpi/CMakeFiles/mpi.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi && $(CMAKE_COMMAND) -P CMakeFiles/mpi.dir/cmake_clean.cmake +.PHONY : src/mpi/CMakeFiles/mpi.dir/clean + +src/mpi/CMakeFiles/mpi.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/mpi/CMakeFiles/mpi.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/mpi/CMakeFiles/mpi.dir/depend + diff --git a/release/src/mpi/CMakeFiles/mpi.dir/cmake_clean.cmake b/release/src/mpi/CMakeFiles/mpi.dir/cmake_clean.cmake new file mode 100644 index 0000000..1d906df --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/cmake_clean.cmake @@ -0,0 +1,15 @@ +file(REMOVE_RECURSE + "CMakeFiles/mpi.dir/distribute.c.o" + "CMakeFiles/mpi.dir/distribute.c.o.d" + "CMakeFiles/mpi.dir/io.c.o" + "CMakeFiles/mpi.dir/io.c.o.d" + "CMakeFiles/mpi.dir/partition.c.o" + "CMakeFiles/mpi.dir/partition.c.o.d" + "libmpi.a" + "libmpi.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mpi.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/mpi/CMakeFiles/mpi.dir/cmake_clean_target.cmake b/release/src/mpi/CMakeFiles/mpi.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..9ec452a --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libmpi.a" +) diff --git a/release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.make b/release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.make new file mode 100644 index 0000000..d083345 --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for mpi. +# This may be replaced when dependencies are built. diff --git a/release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.ts b/release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.ts new file mode 100644 index 0000000..2c934c6 --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mpi. diff --git a/release/src/mpi/CMakeFiles/mpi.dir/depend.make b/release/src/mpi/CMakeFiles/mpi.dir/depend.make new file mode 100644 index 0000000..e24b723 --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mpi. +# This may be replaced when dependencies are built. diff --git a/release/src/mpi/CMakeFiles/mpi.dir/distribute.c.o b/release/src/mpi/CMakeFiles/mpi.dir/distribute.c.o new file mode 100644 index 0000000000000000000000000000000000000000..297bc3f8db774390a86daf539c56eee97e6a9ff2 GIT binary patch literal 5128 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 V({XH8Y9Hu!+keHaw!U@y{{;xLN?iZ| literal 0 HcmV?d00001 diff --git a/release/src/mpi/CMakeFiles/mpi.dir/io.c.o.d b/release/src/mpi/CMakeFiles/mpi.dir/io.c.o.d new file mode 100644 index 0000000..4ee0a01 --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/io.c.o.d @@ -0,0 +1,27 @@ +src/mpi/CMakeFiles/mpi.dir/io.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/mpi/io.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/mpi/io.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/string.h diff --git a/release/src/mpi/CMakeFiles/mpi.dir/link.txt b/release/src/mpi/CMakeFiles/mpi.dir/link.txt new file mode 100644 index 0000000..409109f --- /dev/null +++ b/release/src/mpi/CMakeFiles/mpi.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libmpi.a CMakeFiles/mpi.dir/partition.c.o CMakeFiles/mpi.dir/distribute.c.o CMakeFiles/mpi.dir/io.c.o +/usr/bin/ranlib libmpi.a diff --git a/release/src/mpi/CMakeFiles/mpi.dir/partition.c.o b/release/src/mpi/CMakeFiles/mpi.dir/partition.c.o new file mode 100644 index 0000000000000000000000000000000000000000..44813cb0d45965d743f16957f6e77c02bd8831f4 GIT binary patch literal 2360 zcmbtU%}*0i5TEU$R{0Q2OpKVYC_zYM(>7ujCFw$ykAT=9Momo0(k{|SX|vtLYFg;g zqa>b%6Mur?Ml>G$FNn7`dca#1lRDGB*FK)xi%zncncw@(%zN`@-`2hPDW9SM7X>at z)8i<>{;9g{LuJ-X6S|-it@&|)Nn_9F&v%1TIjVjp^&+(8CY0U|>?UHD7(PyyINg=$nb>^q+fgPu`?iqL zT4=2eepI~}skDF`7JM8a&pb4MUilxlz@N9kA!9ji(oLo}^f;tbnPiNoN zFFlCpa6dX5i(qIh?%0-VH~s8da@B3R@pRfrWNZGU;oN`5 zIMgTc)|MG=N_c|d=TLVro77uoo2bP+?-)*ex;rkPnPH+9`Ck|=^GhxG-vxdbvq{nU zNlg62{CvbI|9Sjm8AL#w#w(0)88y9$4bii&Qm(ZEde(L7dW~C-y>98QopV7?Sgr;7 zN;V669ZknUrzx;EaCIZ?+B!Z3BU#sqzhD%5Ew<`dDZ5eWzYGnd>905~Wigr0{}aB< z=YspaXb@&{fawx@5)Ags(X5fl|8V|3Q9lWnUywYD!=)1& ze)%S3KZpxn=hxU!@pIDo3F7e_zk?W+3g9Qo8&+QzL9`j%(02t)q<-K;5%l0bW!Qo}NeE&L;<&>&g6$m^Fu#OY?w^DD(Q?mr0oh+ z)bG4^&hF9CK1Xs=$emf;cfb4HbI(2Z-23jk?>=qW-QL&H`N=!BdrL#Z&W6Uu=7z+M zCeKR*S^BT%H9m-pAf)ba&aHPY_ONqz{9x(tu3tG<`FE_hE7{xLm+Q)PWqXp1Y4>zr zS323%lYA_~oB7P(zHxqh~W( zU#2}R*InuS5+bFSkO{B_j&}95cXxd`<4Ucl@2JnhjM{Py5A1B%=`}Vr?`-lK5{VsT z&Bh0Igr@XTcbt6W;Gsd38@@ z(q3zOF2wI|NNk0WY7zA1C*0cnp4dm$!0V1Q?i)PKI8Vi#a&CmLe8gJLS;mP^eJ9~6U-*bMe~NL-FGTQPSNsipO%b)9 zf{&k;FD_2<-;19O_X5z~Si^)5Bc?gA6zcm=9Lu#olg(x7F%{h3pKI@UhAElOl6F%236k=He*zd)mB3GjVXnVkgSck66z@}*rv5;P z8mz$mBgU5aF0ctMPxGJ-w*LBMD&NNXcc`*-Y0J|Ju&?W>;~1#HqU+7pTn{!hHV2E5h3w3V&0{n5obDO7|!B2m1>xtJEx9&<{eYNqi`>^JTE_)xBtwmYiU3dvHChOdp z|CnCu=A1jTxZa)juT*)vFiu-3AG{^`&;9bJpIPs|?*9-R^lhudT9DRFDXg2!TFJo| zVE%HOzsGI%(B}L{pC8!fTF~C)bRE`)SWnK9-rGxmyc2A<+xHXjZYeU`laoZQr zc2Bka&16Ki0qe}0wn5g))PJYAEu(0|7}_w7b@Bw($&*+oPhp)r?M_b5xC_%{AK2yv ziqnX1xRz5f_x#5tvRWK6gV1uH|!P9e{h#r%Oj4g3xLu@%1`?RM@T0e=(mw-7&v_%znm zAH~`|T;IdNQ_$^{bI)(z1mA!T!8Q2_Ju7HG8B*(O<1euxX-rMlJ zv2Rf8JrP6uV=oq_V%H1PvBknnZ1e1mSj%i7mYmK1^2aBoeNAtptPhZU==TufImC(B z=E)+);vvKfh$+8z^VSnuPwIPz_EDKid2!^CovYEFO=ypY_SB(0kUi^Sq5n`H{Yh2J zY!f)U!Py7SL2wSmlBe=dwhqP>?;Pr(zMp}9WX~Ij=g`-PgSloD_K|r;u(1;M{7b!6 zEvI1n`2}|YZ96$R=QhvAQCGoTFF4dalJXZuoVP&s4cg|uvwg^YeUHdWRfY1aphIU> z@|0`+^OGs~QXX>2$2NjX*BD3SZ+qad@b{M480JXC^W?)LK^qQG8v>n4-y4`CF5mtb z=Enms5Keq*W9XkQMfDSgc%Hc9km0v}_hfwW{2pybZ7ZddPjZnXWtq~+r$#zpm^VgRPfl_A3pX{KKe5VSLyG*4Q)aG(_y{`=rG|3 z-Eb)P=!T&f9-aeE)u#fI2Y3KK3JX>Evwy=}RrvwC>Tki?Lk|y6_Z)XIdPZGKk|G0T z{w|)m>3Jxoo__S&Zq2eM0_>kLe+V&!4~9|jH~JZ!JYji=e%7az-qLVClKR;_=vQES z@vB}+4N?d2m-xa9`We_4@TG>}acrY+!(dv$6uz>C8#~x@p-PQB7OD2yV@99V;>l+?SH14$fp1d0x zZbq1$(r{0-KbOw*^+gT-qrH7yJ-MSxvZ2DUj@}btRV1?^nb(OE?pS+wH=c}x`i^#W zcQ=$TlP8ktWA12QhI%m!3yAcyzW6omZ4fSLnFnNVgZhcW?l20T$!^27;8+I*!SeHr zClG7C_@C9M$b73$f@cYlKgzr&#zns1xd?tff-nAU^|``)t4}k{Z3uQRMd6yipzseUeu5pIayX+-KzKO>airKZ_n|Tf!&;7{Z<=!C_qCvY7fsd8QhJfYNGb=+IWL_ zlKqOtG}R;HMSO$$i*TmlDhw%8ui!l0NYY_%Adq>hCg8PM~%!Z|&!E`SU{L*!mBRw@U4=3aZ>j9+b)omjR9{#5 zoi^Ij`xfm{F26E+oLQwks#jr;)#-$I|e-MYYkH?Od-R;SDI zenQ)4Nk+AMzCbbU^UR zi8GjU5o?*3VgKdjUd5WMavAEA$yN5rXII!KtJ7n7Kji~oE5C#8V@_5%c zgtg`{)|w-*t#eD)n&*%|iu^I;k0akhejV1L39Ln%(RUb+1#ew>4Z6~M<;|YQWDV-w z;u>^mxwmf(`Vg-{zp%o-qj`Mgx-9QIxu?X{8Z?|U?m|EPe7AG|hVupYVhqvq!kTg|+&PC2RHa zIzKG`D%Sax%aVOo{Ok>15c{N8X`kh7x|vSPZ9{&D^Wni7oz`!%MhAvx$d=gzuo%vd zhu4CI{5s^(Tw8;41(c8d6`Y?6Idn}jFfUi!&$!t-f5p$}%5L2&w%c-j!ZYqm_a=A_ zY?gEEt9gFD)%h!Gy-fFgd4{%gMpPN{zoAt;CyM_aU!fhTzgMoya=)uQzG=;4$M`#I z{>rb=K9$>N+g52_jkeYDu}=1i9`EEgzwPM=khT^ z^Yw_@m#K6v@~xZ+qxTi4BMA8Z#KUoqY~MrS!LPcl58cz{-Sa@2(s+N;)1JfmGFSS* zjlP1Tz+c6MAGej$!MANHKl+0>A|bGxn|>D;GH>zk+i)hW7FEl;zG`|=)Vg8%eK;@n zwKe=nR@L`Q=gNFm^APd&ZJuo4{&+~oMGn7gmOmjRC4|ma!993%$cN@cUGr0 zcg094;=RJWOBHz^3V0qk3(O1RM>mX+?!mdaF9yxy+{zKX6Z>79fg^1yopq!4v~)HO z&+S22&oQ01Abg0^^gfZo-S`nc5~PC9P=l)kT{zz5jc1?p%_8H*;6wE=;=VuXeei?zk3-U=$8y~<5<|xSd zKt#QD%wOOGQZi@lj^MlCW>-2BxpQapgXI&FJ9qBdsZz}i4LbEeLZ_N`=+urzo!Z${ z{sc7Jo9sV+tekGgaY@H#Dl2^_TEenNkM?IupO^=qo0mTs-P7IOmq{P*2tOEogl^bL z`fv&7J>^6ueM!3Kscc{P5$PlO{*LyZvKn1IN3+SEGRkMcA5Oj>2&qssCZ_~j4lOLf9{$uD(fo-HfLYC~tGL$E?A6$%wy$|!x0Us7tx z=~Or;0{NXji$}Ls3ctdSa7mvg5P{A}@=y=ba)0*?ekRB*^W&Tz;n+t^as%*96sTPv4z9vKZH)U!YP%gWxY(^z$&oc8Ny;-W z_K~~+BS-KdC5O)QNjPid2!77U5&XR2dz>+9_<~<%oa|7;T#8;Xe94+IxW^fg7Cu>cKD2Z@soXqFZe;m zt^cGL_aRvOPuk!fSDaUJwEgAGo7hMEcD~w3&lL!EzB{T!io$jOUSnMJspdLv82N%16<_!70^_8&#%1u6d_51W z<%ICLS{G+r_|lK-4PWq$jNAT|@8^98rv9aRD6}fRw&!70FY%=xk1*~7(|AhB(fxZy z;di5qgs})*pXJy6@(S~9zsxZ1Lon$h{W7QcbUB0{g*O-%I}Zh@b49~v*ew{o;6Y_b z*nU|{N+5`Q>6i74+kUB0xVFzW#-+Vt{{-Vc>Yz)(o0J@Fe|es>^KB>d?R-1RxYS#R zIw)LZ+{ZOt3VxY!J3q`s@Cy-l6M0{3|T#*Vu>#zh~o|2D>@U4rjZd~N?$#%;eGG<=vS2yKQh_#wk@<&49I zFL;V^+b_Ke*Y+7w@~OYX&ZimofoXhL$IN4CFf&G{!|42-l5V8kas8D*U|GA@21 z_$I?=x~nmK!9Bwlf2cKl!M8C^>gwn2-HiLdwLN{s*Y=ce+r$pyKZlGQ!4E4r+J83j zivf`%{aeGh)n^;yq<ec;Q&HK}YZ^chS zjl%B}5V7oM+xg@y^X+^x&A8|(ZFq%oA2O-Eg1@Hf^?*x=^M}Sh0L|aTIO*@?^m;RkJ z@&%tVa;SY2rWv<(zMx{NybGV!Dkd-+y5Hl3FxWu8-|bUAiQSyf)@;5?Ekvq3;qVEv+h-%= z(q6IiCdPg6^|-51awaJRd!fWeM0(uC8TSqDDL(b@6n+$H8JB(+yw31LHtuDHFL=W6TREf2@CDz^ zxb62tjQc3B?U`15k7ZMoV_fVY{*X6v1Rqdxv_G6Pa_YE_^G1%~ql!=V>}38$#>Jk3 zUs8N(7v)nJH}VCaV4Uou*AF)gU-WrR$=CW67`OV&897pKk#SpZ4IhLeT>D`y<6{46 zY7{~p<36snfBK5A{cs=SqURI|L1;Dn5XFBdHGIL_48N5#4jI1SM;Nz$m}lHadF_V- zMt&#DA2RX)RIm8$MI%S>F(pU)^OTVz^}cN62!2h;+0JdED9-;7 z$;Y+!+f9s<{+hpA;o493F>d{&)yS`gJPIkr*M5>_ob=Xsr{M=e@Tc4G1@AR{@rRt@ z3qHWO^^^0A`w*<{b4l^FeXcMrc94FYG;##Ls^sYY_4r&B>7(zDyCd+F!garNGA{av z{ks{Lb_sr3@wNSj8Mpm%#_*wT5Jn7N@Uw<5_CII%f{!w8`(<3=+CGy?z8+s!8TX-x z#;24VZGU~PO`k84!$x-fP|GCJvq2h**pI-|3fKMB&A9EaUdDaMB>knoh83UsYX(0G zXBe0M5`4t)LpIhqhA;Rz!@LpDI_6#n~sO%d6h0?D~6xC;N& z@HOqJR4II)!R5S2r@`gD<{5*_{`_ z-etu2oG!B8NcLK};Fx@gFrU*Bjc*CBs;MIpXxo$O5x>&@LO35Y!BrTVg&+XO#MOb; zfF$!)%hQ-5ncAn2bW;E8lu$wR7bxm~x7G3F)GS1fZTVfmE7@;ye^_9Q%aQ%4kEFbq zXD=|)U&akCgOK9->jmIg>?iR-;Bu|0f2k)|m0`Kh{yzXxmTXZQWFIoCYSvTp?{+)BI-3(`z>CJAhnjGyQe$F(ceGCy-gGeD#5_{4-%x I`fJPoA0eX86aWAK literal 0 HcmV?d00001 diff --git a/release/src/readers/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/readers/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/readers/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/readers/CMakeFiles/progress.marks b/release/src/readers/CMakeFiles/progress.marks new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/release/src/readers/CMakeFiles/progress.marks @@ -0,0 +1 @@ +3 diff --git a/release/src/readers/CMakeFiles/readers.dir/DependInfo.cmake b/release/src/readers/CMakeFiles/readers.dir/DependInfo.cmake new file mode 100644 index 0000000..a4b0273 --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/DependInfo.cmake @@ -0,0 +1,20 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/input.c" "src/readers/CMakeFiles/readers.dir/input.c.o" "gcc" "src/readers/CMakeFiles/readers.dir/input.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/version.c" "src/readers/CMakeFiles/readers.dir/version.c.o" "gcc" "src/readers/CMakeFiles/readers.dir/version.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/readers/CMakeFiles/readers.dir/build.make b/release/src/readers/CMakeFiles/readers.dir/build.make new file mode 100644 index 0000000..bfd4cb4 --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/build.make @@ -0,0 +1,127 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/readers/CMakeFiles/readers.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/readers/CMakeFiles/readers.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/readers/CMakeFiles/readers.dir/progress.make + +# Include the compile flags for this target's objects. +include src/readers/CMakeFiles/readers.dir/flags.make + +src/readers/CMakeFiles/readers.dir/input.c.o: src/readers/CMakeFiles/readers.dir/flags.make +src/readers/CMakeFiles/readers.dir/input.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/input.c +src/readers/CMakeFiles/readers.dir/input.c.o: src/readers/CMakeFiles/readers.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/readers/CMakeFiles/readers.dir/input.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/readers/CMakeFiles/readers.dir/input.c.o -MF CMakeFiles/readers.dir/input.c.o.d -o CMakeFiles/readers.dir/input.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/input.c + +src/readers/CMakeFiles/readers.dir/input.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/readers.dir/input.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/input.c > CMakeFiles/readers.dir/input.c.i + +src/readers/CMakeFiles/readers.dir/input.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/readers.dir/input.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/input.c -o CMakeFiles/readers.dir/input.c.s + +src/readers/CMakeFiles/readers.dir/version.c.o: src/readers/CMakeFiles/readers.dir/flags.make +src/readers/CMakeFiles/readers.dir/version.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/version.c +src/readers/CMakeFiles/readers.dir/version.c.o: src/readers/CMakeFiles/readers.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object src/readers/CMakeFiles/readers.dir/version.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/readers/CMakeFiles/readers.dir/version.c.o -MF CMakeFiles/readers.dir/version.c.o.d -o CMakeFiles/readers.dir/version.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/version.c + +src/readers/CMakeFiles/readers.dir/version.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/readers.dir/version.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/version.c > CMakeFiles/readers.dir/version.c.i + +src/readers/CMakeFiles/readers.dir/version.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/readers.dir/version.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/version.c -o CMakeFiles/readers.dir/version.c.s + +# Object files for target readers +readers_OBJECTS = \ +"CMakeFiles/readers.dir/input.c.o" \ +"CMakeFiles/readers.dir/version.c.o" + +# External object files for target readers +readers_EXTERNAL_OBJECTS = + +src/readers/libreaders.a: src/readers/CMakeFiles/readers.dir/input.c.o +src/readers/libreaders.a: src/readers/CMakeFiles/readers.dir/version.c.o +src/readers/libreaders.a: src/readers/CMakeFiles/readers.dir/build.make +src/readers/libreaders.a: src/readers/CMakeFiles/readers.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking C static library libreaders.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && $(CMAKE_COMMAND) -P CMakeFiles/readers.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/readers.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/readers/CMakeFiles/readers.dir/build: src/readers/libreaders.a +.PHONY : src/readers/CMakeFiles/readers.dir/build + +src/readers/CMakeFiles/readers.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers && $(CMAKE_COMMAND) -P CMakeFiles/readers.dir/cmake_clean.cmake +.PHONY : src/readers/CMakeFiles/readers.dir/clean + +src/readers/CMakeFiles/readers.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers/CMakeFiles/readers.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/readers/CMakeFiles/readers.dir/depend + diff --git a/release/src/readers/CMakeFiles/readers.dir/cmake_clean.cmake b/release/src/readers/CMakeFiles/readers.dir/cmake_clean.cmake new file mode 100644 index 0000000..9a0727f --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/cmake_clean.cmake @@ -0,0 +1,13 @@ +file(REMOVE_RECURSE + "CMakeFiles/readers.dir/input.c.o" + "CMakeFiles/readers.dir/input.c.o.d" + "CMakeFiles/readers.dir/version.c.o" + "CMakeFiles/readers.dir/version.c.o.d" + "libreaders.a" + "libreaders.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/readers.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/readers/CMakeFiles/readers.dir/cmake_clean_target.cmake b/release/src/readers/CMakeFiles/readers.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..c6c0386 --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libreaders.a" +) diff --git a/release/src/readers/CMakeFiles/readers.dir/compiler_depend.make b/release/src/readers/CMakeFiles/readers.dir/compiler_depend.make new file mode 100644 index 0000000..9263dea --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for readers. +# This may be replaced when dependencies are built. diff --git a/release/src/readers/CMakeFiles/readers.dir/compiler_depend.ts b/release/src/readers/CMakeFiles/readers.dir/compiler_depend.ts new file mode 100644 index 0000000..083644e --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for readers. diff --git a/release/src/readers/CMakeFiles/readers.dir/depend.make b/release/src/readers/CMakeFiles/readers.dir/depend.make new file mode 100644 index 0000000..09519ee --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for readers. +# This may be replaced when dependencies are built. diff --git a/release/src/readers/CMakeFiles/readers.dir/flags.make b/release/src/readers/CMakeFiles/readers.dir/flags.make new file mode 100644 index 0000000..fdec4c2 --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + diff --git a/release/src/readers/CMakeFiles/readers.dir/input.c.o b/release/src/readers/CMakeFiles/readers.dir/input.c.o new file mode 100644 index 0000000000000000000000000000000000000000..26cee340ce8542d1b2cf65b6bb70db1292beb936 GIT binary patch literal 16136 zcmb_jU2I&(b)F?@n^G8+ag>I!)#%EiTvC=vN}=qfs-LB0(G=ir;0FpeP_=ad zx)Q*CXYM)6qtRZIqCL>=o%!a>H)qbAnK^fsI{D1OzPeDzND7&6nWd7T#x(wkpRdCs zVzUv`Z2kbbgS(A+D*Vg3#_?toT3A^8k6Wh}H!YOEwr_mEoLm?%`);5`PfO#0&n54v z{O-mBX9y2LCam&pEJJt~=bKD>k1?;IzsYd<` z6J}o+I?w;IzHuCSf8v>m=k3sp2~C8^40n(1*F3f^j4f==EfAMy_MJg_p7bd{oEa~F ze`^KUsq&$AdY*yYysjtg5saC1=wF2n@ms!qCmK#JOf{UtXQ}UDaN~2znAba-%$t$F zK|d39WGCNlB1?A5V+<1ws5h~m@}Z|I+NO3K;3`+SrX&A?v37%N!t8_nwp4@@Ja+8F zNqjUhtEK`6e?H4w;FtF@x~c1oFP0 zlCKPyeV>1TGT8~fcmw4d$#1uxSpVGCN}YLYo^bf_9k?-T<_L#RJNWDG5f1-$@XUK@ zlfis$t)xS1@oBH5&Ffr#4&@BWYpkE9Lq9=z&3M{0R!&C;Zl}$&mD5Kfc>ZnWwDE4& znq$&AggK_MQ2#Wa115GO68+W5w#Bo(+8=1lQp|X}CUyrO}?dttQY%6;MamrX}oK0prl7ju#!(V_` z*O=IJHG7BdU;3rB4%?lv(`h2h3n5B9g7a`W%z^`1pz7{D0tv190hj~MgF9%IO7Fn5p_d+T`|#5ks~ zrx9nZdg7&Vwqh>w&Hmm-I_SR1CXp3zYy-z|Bki3_XV>XQb9>W$<|c6unYH81IG;WX zEw2y8SCi|-2h8n>=8achYmVI@PC8T1uYhkQy3v_@^ef_`GregATx~VRY0oC?Z8ScL zA1=Z7mYcujcv_$jCi+YBP;Ap}*Ugge4cqhend*6|=YMC&>uI#|yiYdY`#yPw_sIy> zWfU<;Ch8#3*`?L0kA~Yei#v-D3}q=(=u< zBa3mgfd_h2*S_#ziB!+Q<#<||C#raKU$Xz@zvTW)@mt95T@=4zt>6rE*R}W>?Tz7n zKb|AmCUc-CY@ZbCv{uT8_E+OkYSV4nE3f{0`;oo(w;y@u0csaJ6^T1T7f*)ua&p4)C%NxvAm6~ zAitb__OiTyZ(@7<#J7+F_1*A~i~Umq_&_N(!T z`3P}8;^IRGD!cI{U!*yO@0>#Ul!^Z2B+l(#ISa{G_EKzQ?mVyP%;2?Web0}Xm(B&M zBfn_{H?_yJCt?A=<_{QCS;?MI+{e<3Og1LUXVt=D|p09$Z|102e z?W)i1ygG}phkSxP?rgQMSJNH<` zjn(@SvQxQf$xd{4QpVcB+~VEfI^vhPa2?+5WnMHF@#h2XQI_jtJ^G+?WB|HQJd(uo zJZzC~pcriFo%Ag`g*ih@@yNbBVF;aeN!w* zdW3N2bZ~LH*IyU7UxH2axkl}lvjw%KcQUf=>83A^h3SlT?+7S<37NMZ+l{$||KFf8 zVy_!5jce`GYkcm;zy2^<`MX1FD)j7+Zp9gB-?e+6bYk%c{Lb+=GZEl#t{!q%(QV`8 zrF#i_k0iaK(2M%TyxDR;m+_v`Ys~w*jrr$rDzxNl?p+db&^}!&p67F$?w3Aai5&Lo z70F>QUXdL3S}P}aF&J~NGiF@AIO8)%Mvsr?ULN)0g`u&L)M!aM+>-3D z|9m!MHgEZ>7uWtZZhe==VXHb5iDKt)ZY0&2OvOjPxBZFE-aqe;C34ABEM7BpzObu(*3pzfk2A&v=_`H-G{>mnjD1PQ92AslIfzEmGCaQz(N zNN>}Zs(+DnxK21yYdyZ8!zSsV?w_hUG}sXtvyGm8>+&K}VUAX=Z}rDf9cSH-Ern@C zvnb2t8>nD8-mIUlvnH!w8?u5Ps`4y%*zaqJ>sg@p;vdb*X zl#w@2t&7->{%nckD%Vf?996s4(c~a`_}pfhE?;J*I>)d2GQIRO;n3)q2|a*}SP9u0 zi6|P(e=XLiGB$j!QBjYYTB#mPwNkyguNDlJ`|rZn00}|f+7S7#D~WnTwRfj_!<(B^ zRc{d8)JXNF=`QpUAP)|(VUfSa5FhcI_G5f%^?ND+|N8*^=K=UH0`Rwhlm1bjV!Q5v%?8N-hUGV~ z{u3xu`aM3i^uHQ_e*~QRJ;<(N_XA*`FrH_Z*v3)JgEy6+5-e>wpFVE`Trz()e`ap0uS94`&KA3~p>2FOnb;1`(ZGrU|< zvilgG|H$~{gBGr?@AnBeAv4bMc3*_Zzp;Gz4}E#N*CBfyc&&N-?*M!q_WoM(-wnVw z2jE5mf>^Bog=Y>Q{)<@Ok>~dxKJbI*W3i4Wd!E?g3&b*`nNm!GzmCH{*xzA_`9fy2 zgdd10q_6@8-;}3dgJB!9ah_r-KZuJDBDzZF@~Kht5~7k!ZWPfK23%QY)4Qd7PTO^=w zyp$QtWHY4`CKk&SbBUgwSh|>qkEYE~s+0g2FBVgUQY?*F+4tI|@7u`gvrJCP|6^Rr zd2X@;Pkm~Z81HiMamHyIS;u*L$ob>;d!1$6e*MV7*ppPBj4*0qdNS@C)9^IO+K< zE8%}_U|e`wxXyEU1aAxA+3oPOF%N#vwn_96JQ~1r%;5<$&w#@t_;3KvxWm)WJQEI& z;8OuSXC0nl=9zJL1iui#^RB~FW}Z2RNASx5Jl7naDdxHE@CZI1z;oN-d4qW*1eW;{ zypcoWyZnc7@t+IK<1sEgf=ir3JbVP&7S|n~S?2lJ;Su~(#$A0{c*7z5+sr`^iSOKX zeURndbv>zgzN2_91mGV8;5P$si632kJl-5#eReZ0cD~FyMHm-53m#>h?4b9PtirW@ zBp!G5nPGWXpE0ct)1aQ#KA8rc^b+UD~qtw;g`LXBCg;|4`wYf5G8zWd7R@zu*n*z+`95?G5#sz5tK~}X$bOa?WA7R|pAOG3KCRctcK>kvI{FMNCxtDdrn&tubreq+){%eN|= z#wIDEa4mm00GE3{*Pc@>@7nVn#q&Ms6weP8uKWFr@g0yM`yb_VZGmyIzu;nY8ZR$3 zRzO3yaFWFfn;$!+b^3fFd%`(W1}7Fgc(hr@jNB6eP2 z{f{y(b{2fVk)L4sq$4l*up@t&<+F~w;CaSryiY1SOetK)Gj9jrR|9Z)$tQlzBlq8~ z-NyM+z_r^P<6^g2*7XwOVmHA*V4V8hsm3MQN0Hee1w7@PC%jGJ;*W&4D_qWD!nZ2i z<2>PyDO~z`2w0uMBb*of8kYwge1PY1(!u3k-sx8=czUF0wjoEHt8GtbKXK|cf})ZB?{g|df0CiJ7oS@C-{hAX zy|zi-ZQlc|mi;b-N!pmQ|FFM#&>Ts7vEP1R)IaS%3?ox9#k0BOX}nH zQkJK*lX4sx!W=W1D7W9>RJi_g3~g(T-y_2y4ReR&KeV^H<3A4Ue-{^Xc-)bayaCF7 zDwVGOwR9)hGPjRVP=rLW4!!@m{nKl;>wAFA>?Zm)X1gC Ix7+^z0d$9-_y7O^ literal 0 HcmV?d00001 diff --git a/release/src/readers/CMakeFiles/readers.dir/input.c.o.d b/release/src/readers/CMakeFiles/readers.dir/input.c.o.d new file mode 100644 index 0000000..326df44 --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/input.c.o.d @@ -0,0 +1,33 @@ +src/readers/CMakeFiles/readers.dir/input.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/input.c \ + /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/string.h /usr/include/assert.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/readers/input.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/readers/version.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/error.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h diff --git a/release/src/readers/CMakeFiles/readers.dir/link.txt b/release/src/readers/CMakeFiles/readers.dir/link.txt new file mode 100644 index 0000000..42602f4 --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libreaders.a CMakeFiles/readers.dir/input.c.o CMakeFiles/readers.dir/version.c.o +/usr/bin/ranlib libreaders.a diff --git a/release/src/readers/CMakeFiles/readers.dir/progress.make b/release/src/readers/CMakeFiles/readers.dir/progress.make new file mode 100644 index 0000000..debc4f1 --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/progress.make @@ -0,0 +1,4 @@ +CMAKE_PROGRESS_1 = 37 +CMAKE_PROGRESS_2 = 38 +CMAKE_PROGRESS_3 = 39 + diff --git a/release/src/readers/CMakeFiles/readers.dir/version.c.o b/release/src/readers/CMakeFiles/readers.dir/version.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4b5b0bc249bc9d32daeca77b6feb3f483b00316e GIT binary patch literal 5136 zcmbtXO>7fa5FRIP2oTJV+A3`j-8P|(tFkyKNDD%ELrQ)~pe_N41CqUQHrUONslA}3 zvWZjWLT^YMDzyb6RY=^5ltT}+Ku;~|fkO{e;y@)-CE}9atWqhRc{|VEysQa=5$k#T zy_tD4^JZql%;Dj_hEND3h2RaSy-5@xvBg_AAT!0%gv}7a)$jp;L&lAU=HeCzRVvGW zJ-fC1ZpGagFUDY|V!*YE4%)s>h~EO_8pJQ-dY?PgQ8Hj=0nZvhBPqA-Gn9`n67G)l zmI!y-vPF03!xHMu8i^?JsxGP+s%{vf!tTrJH@|@Xd&0-|QUc-z#=CH%vAKvbKh>ao zOr!-MR1RSx0`d^z_$kf?7+f?2k1o1L220%#EnWOGdh%dX^yK_HiZwZF3=E2xNxq5Y zo8ZOdH?aJM7m)YIq{IR;mV11s8s2Fq-YMRNhym{sd2|s5zM7eXt0v*(E8*lT;RfU6 z6XC+Ak%1E3?fkm+_#7!E@O~d}j$V-QXYl@2TkaY<-K;~om42d}jf|WrJ+jdM;Z8xVgInuJ&NAMc>83UO!Xc zYS^n(SCo@qF*l@}2tU7P0{v2EiS&zj2cAJ3&%cawW&zI>=a7%yx}$_MNX!`WiTv&K zYSHso*`s^>O}WRl`dsySY5CqW>iz3JzuoprMHBAeER0{KUfvJMMH7}6+>t)K$6w+A zKckPU^Gi7-d75i0b%N#PtaL|cet5bx(_Tgw^=APt?QVhZ%==1CQoj1ac%Lf06Dl_V zUcu_`LeLE1JL$o>;`+tsag9=FG|0n735U0ty#D)MI!LSGz*u-g-AYYD-2#9P^DD@F=^ zk;K-Xi`POuo8EDG-{AeZJ;Opz) z8|vU#l?rXd_iZUo2(Crmh~pz`371vcfvX^VC*owMm0cCNMa&=^^CRtw`a-Oq@h5zA z1>cEI<3sX~=npp}QBTNo_>lb=r&QDtVzc-J`E!Zo=UHCV6k^}hk-yIJ!+bTOz7YGV zj{JR=mscj^dsIjM?>ab~xATQ;Zdy;vRWduBbwEGyNv{qCC-3AYpkO;mmP<~bn;NzA zRbl({bJk>``g$gBTaKMiIvH!a3Z`>YXDuf?I%!uSCznLq+37P-IE%~~ukMWJb5qIj zEXt0bv7MUbbjD6kB&DhBWY)O=Xg8ar2Q5?$jOKIJSlTK$a5OQPJS0|@lgnZPeDoi# zsrDqvj`$Y=!sWZk0#wm0ye4*v*Mx84H8ELts=T~^RsJ^Xs`3wgxZl34Kh^(kt~1qt zm+?Jl&)?le#$yUT$2j@3jeQ^{>sUSa$2#XO`Ru&zv$KU0OZMrJBXmvw(v z!DU@OQE*vLVV>_*KRI8W3NG^ndf~#9V~rxm*(Z2LuJZPzr8~BZ({aplEYL>_1<><3 z@5S5Ar9sCbHD%*O(x-Edt>d3gy9$n#oX-pl9H9QM-^ zpRfBtT+94PKJ3H%qC3|4-)d{AClL!5gsJ({Sl?6>)cT>m4vN2dvvC^qHwL|(3NEqp<$Ev?dIItCWg7hD={}WYBZ=ve{4;Lr&oB#j- literal 0 HcmV?d00001 diff --git a/release/src/readers/CMakeFiles/readers.dir/version.c.o.d b/release/src/readers/CMakeFiles/readers.dir/version.c.o.d new file mode 100644 index 0000000..480feea --- /dev/null +++ b/release/src/readers/CMakeFiles/readers.dir/version.c.o.d @@ -0,0 +1,21 @@ +src/readers/CMakeFiles/readers.dir/version.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers/version.c \ + /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/readers/version.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/error.h diff --git a/release/src/readers/CTestTestfile.cmake b/release/src/readers/CTestTestfile.cmake new file mode 100644 index 0000000..ebcd00e --- /dev/null +++ b/release/src/readers/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers +# Build directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/release/src/readers/Makefile b/release/src/readers/Makefile new file mode 100644 index 0000000..0a1e44e --- /dev/null +++ b/release/src/readers/Makefile @@ -0,0 +1,220 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/readers//CMakeFiles/progress.marks + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/readers/all + $(CMAKE_COMMAND) -E cmake_progress_start /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/readers/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/readers/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/readers/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/readers/CMakeFiles/readers.dir/rule: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/readers/CMakeFiles/readers.dir/rule +.PHONY : src/readers/CMakeFiles/readers.dir/rule + +# Convenience name for target. +readers: src/readers/CMakeFiles/readers.dir/rule +.PHONY : readers + +# fast build rule for target. +readers/fast: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/build +.PHONY : readers/fast + +input.o: input.c.o +.PHONY : input.o + +# target to build an object file +input.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/input.c.o +.PHONY : input.c.o + +input.i: input.c.i +.PHONY : input.i + +# target to preprocess a source file +input.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/input.c.i +.PHONY : input.c.i + +input.s: input.c.s +.PHONY : input.s + +# target to generate assembly for a file +input.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/input.c.s +.PHONY : input.c.s + +version.o: version.c.o +.PHONY : version.o + +# target to build an object file +version.c.o: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/version.c.o +.PHONY : version.c.o + +version.i: version.c.i +.PHONY : version.i + +# target to preprocess a source file +version.c.i: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/version.c.i +.PHONY : version.c.i + +version.s: version.c.s +.PHONY : version.s + +# target to generate assembly for a file +version.c.s: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(MAKE) $(MAKESILENT) -f src/readers/CMakeFiles/readers.dir/build.make src/readers/CMakeFiles/readers.dir/version.c.s +.PHONY : version.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... test" + @echo "... readers" + @echo "... input.o" + @echo "... input.i" + @echo "... input.s" + @echo "... version.o" + @echo "... version.i" + @echo "... version.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/release/src/readers/cmake_install.cmake b/release/src/readers/cmake_install.cmake new file mode 100644 index 0000000..f77f14f --- /dev/null +++ b/release/src/readers/cmake_install.cmake @@ -0,0 +1,44 @@ +# Install script for directory: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/readers + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + diff --git a/release/src/readers/libreaders.a b/release/src/readers/libreaders.a new file mode 100644 index 0000000000000000000000000000000000000000..7a6754d48f2ae411d505490563e88b5448d22b32 GIT binary patch literal 21952 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 literal 0 HcmV?d00001 diff --git a/release/src/test/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/test/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/test/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/test/CMakeFiles/progress.marks b/release/src/test/CMakeFiles/progress.marks new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/release/src/test/CMakeFiles/progress.marks @@ -0,0 +1 @@ +3 diff --git a/release/src/test/CMakeFiles/testing.dir/DependInfo.cmake b/release/src/test/CMakeFiles/testing.dir/DependInfo.cmake new file mode 100644 index 0000000..b7d92db --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/DependInfo.cmake @@ -0,0 +1,21 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/check.c" "src/test/CMakeFiles/testing.dir/check.c.o" "gcc" "src/test/CMakeFiles/testing.dir/check.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/grid_check.c" "src/test/CMakeFiles/testing.dir/grid_check.c.o" "gcc" "src/test/CMakeFiles/testing.dir/grid_check.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/test.c" "src/test/CMakeFiles/testing.dir/test.c.o" "gcc" "src/test/CMakeFiles/testing.dir/test.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/test/CMakeFiles/testing.dir/build.make b/release/src/test/CMakeFiles/testing.dir/build.make new file mode 100644 index 0000000..ebe6657 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/build.make @@ -0,0 +1,143 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/test/CMakeFiles/testing.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/test/CMakeFiles/testing.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/test/CMakeFiles/testing.dir/progress.make + +# Include the compile flags for this target's objects. +include src/test/CMakeFiles/testing.dir/flags.make + +src/test/CMakeFiles/testing.dir/test.c.o: src/test/CMakeFiles/testing.dir/flags.make +src/test/CMakeFiles/testing.dir/test.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/test.c +src/test/CMakeFiles/testing.dir/test.c.o: src/test/CMakeFiles/testing.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/test/CMakeFiles/testing.dir/test.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/test/CMakeFiles/testing.dir/test.c.o -MF CMakeFiles/testing.dir/test.c.o.d -o CMakeFiles/testing.dir/test.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/test.c + +src/test/CMakeFiles/testing.dir/test.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/testing.dir/test.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/test.c > CMakeFiles/testing.dir/test.c.i + +src/test/CMakeFiles/testing.dir/test.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/testing.dir/test.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/test.c -o CMakeFiles/testing.dir/test.c.s + +src/test/CMakeFiles/testing.dir/check.c.o: src/test/CMakeFiles/testing.dir/flags.make +src/test/CMakeFiles/testing.dir/check.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/check.c +src/test/CMakeFiles/testing.dir/check.c.o: src/test/CMakeFiles/testing.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object src/test/CMakeFiles/testing.dir/check.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/test/CMakeFiles/testing.dir/check.c.o -MF CMakeFiles/testing.dir/check.c.o.d -o CMakeFiles/testing.dir/check.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/check.c + +src/test/CMakeFiles/testing.dir/check.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/testing.dir/check.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/check.c > CMakeFiles/testing.dir/check.c.i + +src/test/CMakeFiles/testing.dir/check.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/testing.dir/check.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/check.c -o CMakeFiles/testing.dir/check.c.s + +src/test/CMakeFiles/testing.dir/grid_check.c.o: src/test/CMakeFiles/testing.dir/flags.make +src/test/CMakeFiles/testing.dir/grid_check.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/grid_check.c +src/test/CMakeFiles/testing.dir/grid_check.c.o: src/test/CMakeFiles/testing.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object src/test/CMakeFiles/testing.dir/grid_check.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/test/CMakeFiles/testing.dir/grid_check.c.o -MF CMakeFiles/testing.dir/grid_check.c.o.d -o CMakeFiles/testing.dir/grid_check.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/grid_check.c + +src/test/CMakeFiles/testing.dir/grid_check.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/testing.dir/grid_check.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/grid_check.c > CMakeFiles/testing.dir/grid_check.c.i + +src/test/CMakeFiles/testing.dir/grid_check.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/testing.dir/grid_check.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/grid_check.c -o CMakeFiles/testing.dir/grid_check.c.s + +# Object files for target testing +testing_OBJECTS = \ +"CMakeFiles/testing.dir/test.c.o" \ +"CMakeFiles/testing.dir/check.c.o" \ +"CMakeFiles/testing.dir/grid_check.c.o" + +# External object files for target testing +testing_EXTERNAL_OBJECTS = + +src/test/libtesting.a: src/test/CMakeFiles/testing.dir/test.c.o +src/test/libtesting.a: src/test/CMakeFiles/testing.dir/check.c.o +src/test/libtesting.a: src/test/CMakeFiles/testing.dir/grid_check.c.o +src/test/libtesting.a: src/test/CMakeFiles/testing.dir/build.make +src/test/libtesting.a: src/test/CMakeFiles/testing.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Linking C static library libtesting.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && $(CMAKE_COMMAND) -P CMakeFiles/testing.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/testing.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/test/CMakeFiles/testing.dir/build: src/test/libtesting.a +.PHONY : src/test/CMakeFiles/testing.dir/build + +src/test/CMakeFiles/testing.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test && $(CMAKE_COMMAND) -P CMakeFiles/testing.dir/cmake_clean.cmake +.PHONY : src/test/CMakeFiles/testing.dir/clean + +src/test/CMakeFiles/testing.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/test/CMakeFiles/testing.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/test/CMakeFiles/testing.dir/depend + diff --git a/release/src/test/CMakeFiles/testing.dir/check.c.o b/release/src/test/CMakeFiles/testing.dir/check.c.o new file mode 100644 index 0000000000000000000000000000000000000000..bb041f0a3f4cdf9d6cc90d6ae8e1187667e3282b GIT binary patch literal 2832 zcmbtVL2MgU5S_IHaj9!k1frryS=y+w4PBf-B^MQWoj~i9s8|6+4@j}&xHu$^U3)8B zWaC8QKv55_)B}g2h)X3nAPznBfJBfuq!I^?y>i2%hjKu2!NR;*&ySZMx1wSWp8wzc znR)YP_PhD|+)1BdkP?HQqQOp~M6J>O+6QI3OPfNpk2<|y{<_k8u2b8asN2-+q-e8K zd;Y6>ni5xj9-+G?jo&6RkB6~eB1%Om(O!Bwa?z%R_LHZh4WdgwC@i&u?b!-b@XnZz zx-t02X!920Y!hAX1?dYL*meN17~}YeyjoLj|4ZQ?1OK@2x51Zro1!P63&?py_{W5+k7nBni_8r7txDbj_~4HQV4Ei0{_Gc_wfM`P~{?sNoQD*4{YW z$ULA1y$5OfzT@SO-1o}h58a*^_uhY`%{&#Jk{Sp#+!&3xy!AR_;E4K%*1>V47xz$W z8@*`Tsjr)#dg{1eFNo$&5KYIg`vUbbwB})EYxN;#i|Ej+sPQ=F?^Y{gcX>uI_bH4; z2KC)GF>^d;Q3`e+G-H?D8B1&{-&TO!SX?7&`1QI!P}kd(*N0N^N zdw=Z$8T?3$sM`4CE@9&c{odPU0N~%bmVaCQunZGFA`KHiJu(bN6nVrntDo?i3=uy) zIs|2&kL|+u0C~d0e@jm67hLV#`v>-n;Gf8Cx%Uq2Fyk46=J=t7xc3e1?Y(P|pBJIk zOnC8^?t@dVkk74HIp~#z<+XE4FRR6>yO<*D?KfvEDwjT_>iLSZ!>5b5Ay1;T@cdJ7 z)sdTmPXYIK<2%7)8vc{ue6u`GN&?b)#=Uj&OtbJkimSUn;rXa#MF=fSN}=L@0|$_uKX2W##r<{{t(={ zcs{+dE`%&Eh_&Lc^t1=_9{olyNQ}x)oqbpQb^hOq|5bHRwBEmY;KTZNQ~H+?Kkgsb zuIg9)%L4nO*DJ}f9rc05Cq2Gw4R^e(P3A0S00f#>|W9H T^LsnY|A0LG=e^EY>;C@$rCoVp literal 0 HcmV?d00001 diff --git a/release/src/test/CMakeFiles/testing.dir/check.c.o.d b/release/src/test/CMakeFiles/testing.dir/check.c.o.d new file mode 100644 index 0000000..33672e4 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/check.c.o.d @@ -0,0 +1,26 @@ +src/test/CMakeFiles/testing.dir/check.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/check.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /usr/include/assert.h /usr/include/math.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/check.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h diff --git a/release/src/test/CMakeFiles/testing.dir/cmake_clean.cmake b/release/src/test/CMakeFiles/testing.dir/cmake_clean.cmake new file mode 100644 index 0000000..9c6beb1 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/cmake_clean.cmake @@ -0,0 +1,15 @@ +file(REMOVE_RECURSE + "CMakeFiles/testing.dir/check.c.o" + "CMakeFiles/testing.dir/check.c.o.d" + "CMakeFiles/testing.dir/grid_check.c.o" + "CMakeFiles/testing.dir/grid_check.c.o.d" + "CMakeFiles/testing.dir/test.c.o" + "CMakeFiles/testing.dir/test.c.o.d" + "libtesting.a" + "libtesting.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/testing.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/test/CMakeFiles/testing.dir/cmake_clean_target.cmake b/release/src/test/CMakeFiles/testing.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..f9f9264 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libtesting.a" +) diff --git a/release/src/test/CMakeFiles/testing.dir/compiler_depend.make b/release/src/test/CMakeFiles/testing.dir/compiler_depend.make new file mode 100644 index 0000000..2f7f657 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for testing. +# This may be replaced when dependencies are built. diff --git a/release/src/test/CMakeFiles/testing.dir/compiler_depend.ts b/release/src/test/CMakeFiles/testing.dir/compiler_depend.ts new file mode 100644 index 0000000..789a245 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for testing. diff --git a/release/src/test/CMakeFiles/testing.dir/depend.make b/release/src/test/CMakeFiles/testing.dir/depend.make new file mode 100644 index 0000000..c5732d6 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for testing. +# This may be replaced when dependencies are built. diff --git a/release/src/test/CMakeFiles/testing.dir/flags.make b/release/src/test/CMakeFiles/testing.dir/flags.make new file mode 100644 index 0000000..fdec4c2 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + diff --git a/release/src/test/CMakeFiles/testing.dir/grid_check.c.o b/release/src/test/CMakeFiles/testing.dir/grid_check.c.o new file mode 100644 index 0000000000000000000000000000000000000000..85e80ee4341d9ce4bf61f473b88e48cea740150d GIT binary patch literal 8864 zcmd5=Z){uD6+h1oG^U{h2BL$Gyp9$nZSd04ZYc!fEc{7m$2usY5}j(diE-An39-8w zW+x8nSVOz%P1}cPV#G+OO4KjeR<>+os{@*3C;i}0lUrA6n5M~I_|QpAGQ-9Do%`;! zUmtcDXht9(QOOsiM&xRM8Yl6u-xm9jH7)^iU(+LWR=% zAOEtnz7SsB85yRrLYSrs;mvPF!Vmm85`O6Kk#P5_Xn1FHG<@$wBu1S-32&Z>9OwFh zRK(!=p?qYL>uy&x&h<0B(P`A_I=ZY=Q-(<2(F`4Z$6HZfB#O zSF}BfHmpgs@!DF^c3iftLmTEu8l)F@Q)fHkysT5~DG_@7#57LRt`4HFx1Vy2BF`)F>3eUt!KcpoLX#y(1OjeV5i8vAI8 zYwV*OYTid)!~lK91JENH^}v375b_?#upJ+U+zNRR{JRWY?H}xk^8N{6{}e=9W&ecG z@4IsU%$E1c#Js}h%2;Lpgy9R$h!lKE5}hnH&@Vi|lJ&?PW9%!pSMuu;b}`tgaVvAV z5(=x#H8Jm}37k2bqJHg3d;?KGxgw_i8gy4=gf8Wdz_;(fcR%$+jlG_tpMDr+4uzk2 z41G65i4I_I9c)*5MU2EgZ_&wcWG7h);eIHnv!-HOb&#(ISGoA6cCUPv-3%NJH069SGKYACn7d2v&=l6%9P34YjW4ZA2gV9sY ziRk*e*i(pI&Zws%`@f+{yaRUdJD^eAEv`&;d?J-p`d( zaaxk=TT4_Va;5qFa;_HUj@ShhFWo z-8+{{^I6t-EA#}a0$A#V?b+$EQJu%Pn?E)VVGEuLnImeh&$ed%uYhEYc4nNJv zbA4e9=X}IZDXIShdN1_6)Hg-^+D!E4j!U@!tv(;1W!y8H&wFWgYA@|Pk1w^G4xPuB z>Y)?o@ufVpI)g81wCh)l-AhGdZ=z^;<2b8hxGOLp)1lf&3< zGXB;PwaNbhA)EZ~6|%|y79pGbcfBXi$x+GwQSg5h=cLqMgFXX2FZBiJ`O&+amvT8; zon4~M*$nN>rs+^NNhh)iI-Q-P#q2CCXQyd%CQhf%U*~-?YD|iKGHOhVeKKmy=|$aH z$~8JG=WnA{{rqjzuI>Dtwd@n{bs2nJ2HzLJ_XY5M0eoKo-xt951@L_ld|$klee`4O zqsK-@hDLN>=s|sBpZO2c3;gdU9Q{Q7-2S|3`?mhDY}y!X-q_coi|#?)k1;j|-8XIQ z*Il~$Sy2;%sRl>`$d)~y1O6L zo1b{<*%rOsz1`iWZ*AMUrEU9`ZF=+5{e60mFJ$8PZ)s~mmqyu5d--Xq3wLREH)ymD z7~XH9;O}buSInB-Q(D)}O^)Z#ikCCKc6?mkVc_vKyKn6pHBEfNMA+;T7DTNMVPj}z zqiA`Yn6#<;lufW~^Om&fF>RI{<#CP)n+<4BN}DwM)4L{p18n}}IIF!;H|1o{y|8RW z6aH8dCBS2SV@>=<*!}*-Kiu$6-5;I8zJ6*I+mFJ&1136;htlK3&$DZ0SHb>QYkqz6 znTEGl|K_IOy5{PCx9Y0?jZ?R9|5NDSbqo5uaO5ayt03U7%M}VY*3myp)l8iH9I8^B z#7=#>I5ASS;-nj@!5HPn8n~+lULl~>z)AI1wJbZSp)4z54TRe)>k>Qzb~oc*jg&6< z1*{pL;wr>)aYL$xZ>@oU4LFbAE<-1{3GCGx_K!>ZJ{dZ}Q((_YJiw_%5!^)W!&l9p zKn;8dIQugzLoN6VY_x{`4{G2)s)7F$IFBD&4FN^)9yRYN#&b6_D*4UA3nK%4`ws^C z4<2$KBvJ484{pKnT~@ZT;@14sN;Q>eou14mT5Z*Y(f_a6@S zhbS288#=0RVZ;6W{=uWc00jl$C;#x#P*9GoY_>mO2ez}@iZ4aTa!CyH|0j#`Z~QW@ zc1D=@KMM1NQ#&l}A`)-2;U^`|%xCVZQZISLIB$1V6u<2LbVz%kU0Aio0E=L2bP zkIx>t`R(!9D{;G@eG<3x=VT)mgrefJBs3yJ;wnB0pOm;gK5>bA(BB%LGZuSmeBP;H zpS0Lp<0IXo`ykw*6x8dad>3kYGzz4{hO2YgYs1y~c+7^Y^Jvg<$K3~X3?gPOfxkrXf#cUlqNbZ9} zhY$DTa&sRU3iZ43k(B<(j+W3dxS&Vt`S<7Xa{Jrx0=WW3AsF$5OyORlGhYI@%ntXf4@{S@MZz?eOL&9eVK zTL(LT_MvYz{&?m36KLnc>*q7ezWzhN{#7dR^Y^N9OkVEtI4ZZ<+^On28&Asqak(%) oe))>B&(GJooqK?&UGo2JRxHInKhwNgfBhb_)AucXS+w{651%u0bN~PV literal 0 HcmV?d00001 diff --git a/release/src/test/CMakeFiles/testing.dir/grid_check.c.o.d b/release/src/test/CMakeFiles/testing.dir/grid_check.c.o.d new file mode 100644 index 0000000..9109bbb --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/grid_check.c.o.d @@ -0,0 +1,31 @@ +src/test/CMakeFiles/testing.dir/grid_check.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/test/grid_check.c \ + /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/stdio.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/stdlib-float.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/grid_check.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/string.h diff --git a/release/src/test/CMakeFiles/testing.dir/link.txt b/release/src/test/CMakeFiles/testing.dir/link.txt new file mode 100644 index 0000000..7762cf7 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libtesting.a CMakeFiles/testing.dir/test.c.o CMakeFiles/testing.dir/check.c.o CMakeFiles/testing.dir/grid_check.c.o +/usr/bin/ranlib libtesting.a diff --git a/release/src/test/CMakeFiles/testing.dir/progress.make b/release/src/test/CMakeFiles/testing.dir/progress.make new file mode 100644 index 0000000..febc6c5 --- /dev/null +++ b/release/src/test/CMakeFiles/testing.dir/progress.make @@ -0,0 +1,5 @@ +CMAKE_PROGRESS_1 = 68 +CMAKE_PROGRESS_2 = 69 +CMAKE_PROGRESS_3 = +CMAKE_PROGRESS_4 = 70 + diff --git a/release/src/test/CMakeFiles/testing.dir/test.c.o b/release/src/test/CMakeFiles/testing.dir/test.c.o new file mode 100644 index 0000000000000000000000000000000000000000..177577b11c3ad4e33b75a92aa80aaf335019974c GIT binary patch literal 6720 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 literal 0 HcmV?d00001 diff --git a/release/src/topography/CMakeFiles/CMakeDirectoryInformation.cmake b/release/src/topography/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..3e55bed --- /dev/null +++ b/release/src/topography/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/release/src/topography/CMakeFiles/mapping.dir/DependInfo.cmake b/release/src/topography/CMakeFiles/mapping.dir/DependInfo.cmake new file mode 100644 index 0000000..07e90ee --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/DependInfo.cmake @@ -0,0 +1,19 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mapping.c" "src/topography/CMakeFiles/mapping.dir/mapping.c.o" "gcc" "src/topography/CMakeFiles/mapping.dir/mapping.c.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/topography/CMakeFiles/mapping.dir/build.make b/release/src/topography/CMakeFiles/mapping.dir/build.make new file mode 100644 index 0000000..254b7ab --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/build.make @@ -0,0 +1,111 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/topography/CMakeFiles/mapping.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/topography/CMakeFiles/mapping.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/topography/CMakeFiles/mapping.dir/progress.make + +# Include the compile flags for this target's objects. +include src/topography/CMakeFiles/mapping.dir/flags.make + +src/topography/CMakeFiles/mapping.dir/mapping.c.o: src/topography/CMakeFiles/mapping.dir/flags.make +src/topography/CMakeFiles/mapping.dir/mapping.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mapping.c +src/topography/CMakeFiles/mapping.dir/mapping.c.o: src/topography/CMakeFiles/mapping.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/topography/CMakeFiles/mapping.dir/mapping.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/topography/CMakeFiles/mapping.dir/mapping.c.o -MF CMakeFiles/mapping.dir/mapping.c.o.d -o CMakeFiles/mapping.dir/mapping.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mapping.c + +src/topography/CMakeFiles/mapping.dir/mapping.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/mapping.dir/mapping.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mapping.c > CMakeFiles/mapping.dir/mapping.c.i + +src/topography/CMakeFiles/mapping.dir/mapping.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/mapping.dir/mapping.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mapping.c -o CMakeFiles/mapping.dir/mapping.c.s + +# Object files for target mapping +mapping_OBJECTS = \ +"CMakeFiles/mapping.dir/mapping.c.o" + +# External object files for target mapping +mapping_EXTERNAL_OBJECTS = + +src/topography/libmapping.a: src/topography/CMakeFiles/mapping.dir/mapping.c.o +src/topography/libmapping.a: src/topography/CMakeFiles/mapping.dir/build.make +src/topography/libmapping.a: src/topography/CMakeFiles/mapping.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C static library libmapping.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && $(CMAKE_COMMAND) -P CMakeFiles/mapping.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mapping.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/topography/CMakeFiles/mapping.dir/build: src/topography/libmapping.a +.PHONY : src/topography/CMakeFiles/mapping.dir/build + +src/topography/CMakeFiles/mapping.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && $(CMAKE_COMMAND) -P CMakeFiles/mapping.dir/cmake_clean.cmake +.PHONY : src/topography/CMakeFiles/mapping.dir/clean + +src/topography/CMakeFiles/mapping.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/mapping.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/topography/CMakeFiles/mapping.dir/depend + diff --git a/release/src/topography/CMakeFiles/mapping.dir/cmake_clean.cmake b/release/src/topography/CMakeFiles/mapping.dir/cmake_clean.cmake new file mode 100644 index 0000000..3e63c35 --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/mapping.dir/mapping.c.o" + "CMakeFiles/mapping.dir/mapping.c.o.d" + "libmapping.a" + "libmapping.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mapping.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/topography/CMakeFiles/mapping.dir/cmake_clean_target.cmake b/release/src/topography/CMakeFiles/mapping.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..f43153e --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libmapping.a" +) diff --git a/release/src/topography/CMakeFiles/mapping.dir/compiler_depend.make b/release/src/topography/CMakeFiles/mapping.dir/compiler_depend.make new file mode 100644 index 0000000..2c8370f --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for mapping. +# This may be replaced when dependencies are built. diff --git a/release/src/topography/CMakeFiles/mapping.dir/compiler_depend.ts b/release/src/topography/CMakeFiles/mapping.dir/compiler_depend.ts new file mode 100644 index 0000000..4782a85 --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mapping. diff --git a/release/src/topography/CMakeFiles/mapping.dir/depend.make b/release/src/topography/CMakeFiles/mapping.dir/depend.make new file mode 100644 index 0000000..5a58003 --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mapping. +# This may be replaced when dependencies are built. diff --git a/release/src/topography/CMakeFiles/mapping.dir/flags.make b/release/src/topography/CMakeFiles/mapping.dir/flags.make new file mode 100644 index 0000000..fdec4c2 --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + diff --git a/release/src/topography/CMakeFiles/mapping.dir/link.txt b/release/src/topography/CMakeFiles/mapping.dir/link.txt new file mode 100644 index 0000000..abbc52b --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libmapping.a CMakeFiles/mapping.dir/mapping.c.o +/usr/bin/ranlib libmapping.a diff --git a/release/src/topography/CMakeFiles/mapping.dir/mapping.c.o b/release/src/topography/CMakeFiles/mapping.dir/mapping.c.o new file mode 100644 index 0000000000000000000000000000000000000000..f303982cc0b2b99fd4b8f9d232daac45e2f1545b GIT binary patch literal 12680 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 literal 0 HcmV?d00001 diff --git a/release/src/topography/CMakeFiles/mapping.dir/mapping.c.o.d b/release/src/topography/CMakeFiles/mapping.dir/mapping.c.o.d new file mode 100644 index 0000000..38b4663 --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/mapping.c.o.d @@ -0,0 +1,23 @@ +src/topography/CMakeFiles/mapping.dir/mapping.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mapping.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/assert.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/mapping.h diff --git a/release/src/topography/CMakeFiles/mapping.dir/progress.make b/release/src/topography/CMakeFiles/mapping.dir/progress.make new file mode 100644 index 0000000..ec204d3 --- /dev/null +++ b/release/src/topography/CMakeFiles/mapping.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 28 +CMAKE_PROGRESS_2 = 29 + diff --git a/release/src/topography/CMakeFiles/progress.marks b/release/src/topography/CMakeFiles/progress.marks new file mode 100644 index 0000000..0691f67 --- /dev/null +++ b/release/src/topography/CMakeFiles/progress.marks @@ -0,0 +1 @@ +52 diff --git a/release/src/topography/CMakeFiles/topography.dir/DependInfo.cmake b/release/src/topography/CMakeFiles/topography.dir/DependInfo.cmake new file mode 100644 index 0000000..46a2ed7 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/DependInfo.cmake @@ -0,0 +1,26 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/geometry.c" "src/topography/CMakeFiles/topography.dir/geometry.c.o" "gcc" "src/topography/CMakeFiles/topography.dir/geometry.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/grids.c" "src/topography/CMakeFiles/topography.dir/grids.c.o" "gcc" "src/topography/CMakeFiles/topography.dir/grids.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/host.c" "src/topography/CMakeFiles/topography.dir/host.c.o" "gcc" "src/topography/CMakeFiles/topography.dir/host.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/topography.c" "src/topography/CMakeFiles/topography.dir/topography.c.o" "gcc" "src/topography/CMakeFiles/topography.dir/topography.c.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/energy.cu" "src/topography/CMakeFiles/topography.dir/energy.cu.o" "gcc" "src/topography/CMakeFiles/topography.dir/energy.cu.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mms.cu" "src/topography/CMakeFiles/topography.dir/mms.cu.o" "gcc" "src/topography/CMakeFiles/topography.dir/mms.cu.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/stress.cu" "src/topography/CMakeFiles/topography.dir/stress.cu.o" "gcc" "src/topography/CMakeFiles/topography.dir/stress.cu.o.d" + "/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/velocity.cu" "src/topography/CMakeFiles/topography.dir/velocity.cu.o" "gcc" "src/topography/CMakeFiles/topography.dir/velocity.cu.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/release/src/topography/CMakeFiles/topography.dir/build.make b/release/src/topography/CMakeFiles/topography.dir/build.make new file mode 100644 index 0000000..23175a3 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/build.make @@ -0,0 +1,227 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake + +# The command to remove a file. +RM = /autofs/nccs-svm1_sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/cmake-3.27.7-zedecrrdzkqtcxzquip2l4ii7n67egan/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release + +# Include any dependencies generated for this target. +include src/topography/CMakeFiles/topography.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include src/topography/CMakeFiles/topography.dir/compiler_depend.make + +# Include the progress variables for this target. +include src/topography/CMakeFiles/topography.dir/progress.make + +# Include the compile flags for this target's objects. +include src/topography/CMakeFiles/topography.dir/flags.make + +src/topography/CMakeFiles/topography.dir/topography.c.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/topography.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/topography.c +src/topography/CMakeFiles/topography.dir/topography.c.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object src/topography/CMakeFiles/topography.dir/topography.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/topography.c.o -MF CMakeFiles/topography.dir/topography.c.o.d -o CMakeFiles/topography.dir/topography.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/topography.c + +src/topography/CMakeFiles/topography.dir/topography.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/topography.dir/topography.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/topography.c > CMakeFiles/topography.dir/topography.c.i + +src/topography/CMakeFiles/topography.dir/topography.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/topography.dir/topography.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/topography.c -o CMakeFiles/topography.dir/topography.c.s + +src/topography/CMakeFiles/topography.dir/velocity.cu.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/velocity.cu.o: src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp +src/topography/CMakeFiles/topography.dir/velocity.cu.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/velocity.cu +src/topography/CMakeFiles/topography.dir/velocity.cu.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CUDA object src/topography/CMakeFiles/topography.dir/velocity.cu.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler $(CUDA_DEFINES) $(CUDA_INCLUDES) $(CUDA_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/velocity.cu.o -MF CMakeFiles/topography.dir/velocity.cu.o.d -x cu -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/velocity.cu -o CMakeFiles/topography.dir/velocity.cu.o + +src/topography/CMakeFiles/topography.dir/velocity.cu.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CUDA source to CMakeFiles/topography.dir/velocity.cu.i" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_PREPROCESSED_SOURCE + +src/topography/CMakeFiles/topography.dir/velocity.cu.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CUDA source to assembly CMakeFiles/topography.dir/velocity.cu.s" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_ASSEMBLY_SOURCE + +src/topography/CMakeFiles/topography.dir/stress.cu.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/stress.cu.o: src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp +src/topography/CMakeFiles/topography.dir/stress.cu.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/stress.cu +src/topography/CMakeFiles/topography.dir/stress.cu.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CUDA object src/topography/CMakeFiles/topography.dir/stress.cu.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler $(CUDA_DEFINES) $(CUDA_INCLUDES) $(CUDA_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/stress.cu.o -MF CMakeFiles/topography.dir/stress.cu.o.d -x cu -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/stress.cu -o CMakeFiles/topography.dir/stress.cu.o + +src/topography/CMakeFiles/topography.dir/stress.cu.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CUDA source to CMakeFiles/topography.dir/stress.cu.i" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_PREPROCESSED_SOURCE + +src/topography/CMakeFiles/topography.dir/stress.cu.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CUDA source to assembly CMakeFiles/topography.dir/stress.cu.s" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_ASSEMBLY_SOURCE + +src/topography/CMakeFiles/topography.dir/geometry.c.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/geometry.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/geometry.c +src/topography/CMakeFiles/topography.dir/geometry.c.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object src/topography/CMakeFiles/topography.dir/geometry.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/geometry.c.o -MF CMakeFiles/topography.dir/geometry.c.o.d -o CMakeFiles/topography.dir/geometry.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/geometry.c + +src/topography/CMakeFiles/topography.dir/geometry.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/topography.dir/geometry.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/geometry.c > CMakeFiles/topography.dir/geometry.c.i + +src/topography/CMakeFiles/topography.dir/geometry.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/topography.dir/geometry.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/geometry.c -o CMakeFiles/topography.dir/geometry.c.s + +src/topography/CMakeFiles/topography.dir/host.c.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/host.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/host.c +src/topography/CMakeFiles/topography.dir/host.c.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object src/topography/CMakeFiles/topography.dir/host.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/host.c.o -MF CMakeFiles/topography.dir/host.c.o.d -o CMakeFiles/topography.dir/host.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/host.c + +src/topography/CMakeFiles/topography.dir/host.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/topography.dir/host.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/host.c > CMakeFiles/topography.dir/host.c.i + +src/topography/CMakeFiles/topography.dir/host.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/topography.dir/host.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/host.c -o CMakeFiles/topography.dir/host.c.s + +src/topography/CMakeFiles/topography.dir/grids.c.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/grids.c.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/grids.c +src/topography/CMakeFiles/topography.dir/grids.c.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object src/topography/CMakeFiles/topography.dir/grids.c.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/grids.c.o -MF CMakeFiles/topography.dir/grids.c.o.d -o CMakeFiles/topography.dir/grids.c.o -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/grids.c + +src/topography/CMakeFiles/topography.dir/grids.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/topography.dir/grids.c.i" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/grids.c > CMakeFiles/topography.dir/grids.c.i + +src/topography/CMakeFiles/topography.dir/grids.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/topography.dir/grids.c.s" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/grids.c -o CMakeFiles/topography.dir/grids.c.s + +src/topography/CMakeFiles/topography.dir/mms.cu.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/mms.cu.o: src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp +src/topography/CMakeFiles/topography.dir/mms.cu.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mms.cu +src/topography/CMakeFiles/topography.dir/mms.cu.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CUDA object src/topography/CMakeFiles/topography.dir/mms.cu.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler $(CUDA_DEFINES) $(CUDA_INCLUDES) $(CUDA_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/mms.cu.o -MF CMakeFiles/topography.dir/mms.cu.o.d -x cu -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/mms.cu -o CMakeFiles/topography.dir/mms.cu.o + +src/topography/CMakeFiles/topography.dir/mms.cu.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CUDA source to CMakeFiles/topography.dir/mms.cu.i" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_PREPROCESSED_SOURCE + +src/topography/CMakeFiles/topography.dir/mms.cu.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CUDA source to assembly CMakeFiles/topography.dir/mms.cu.s" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_ASSEMBLY_SOURCE + +src/topography/CMakeFiles/topography.dir/energy.cu.o: src/topography/CMakeFiles/topography.dir/flags.make +src/topography/CMakeFiles/topography.dir/energy.cu.o: src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp +src/topography/CMakeFiles/topography.dir/energy.cu.o: /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/energy.cu +src/topography/CMakeFiles/topography.dir/energy.cu.o: src/topography/CMakeFiles/topography.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CUDA object src/topography/CMakeFiles/topography.dir/energy.cu.o" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && /sw/summit/cuda/11.7.1/bin/nvcc -forward-unknown-to-host-compiler $(CUDA_DEFINES) $(CUDA_INCLUDES) $(CUDA_FLAGS) -MD -MT src/topography/CMakeFiles/topography.dir/energy.cu.o -MF CMakeFiles/topography.dir/energy.cu.o.d -x cu -c /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/energy.cu -o CMakeFiles/topography.dir/energy.cu.o + +src/topography/CMakeFiles/topography.dir/energy.cu.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CUDA source to CMakeFiles/topography.dir/energy.cu.i" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_PREPROCESSED_SOURCE + +src/topography/CMakeFiles/topography.dir/energy.cu.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CUDA source to assembly CMakeFiles/topography.dir/energy.cu.s" + $(CMAKE_COMMAND) -E cmake_unimplemented_variable CMAKE_CUDA_CREATE_ASSEMBLY_SOURCE + +# Object files for target topography +topography_OBJECTS = \ +"CMakeFiles/topography.dir/topography.c.o" \ +"CMakeFiles/topography.dir/velocity.cu.o" \ +"CMakeFiles/topography.dir/stress.cu.o" \ +"CMakeFiles/topography.dir/geometry.c.o" \ +"CMakeFiles/topography.dir/host.c.o" \ +"CMakeFiles/topography.dir/grids.c.o" \ +"CMakeFiles/topography.dir/mms.cu.o" \ +"CMakeFiles/topography.dir/energy.cu.o" + +# External object files for target topography +topography_EXTERNAL_OBJECTS = + +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/topography.c.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/velocity.cu.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/stress.cu.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/geometry.c.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/host.c.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/grids.c.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/mms.cu.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/energy.cu.o +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/build.make +src/topography/libtopography.a: src/topography/CMakeFiles/topography.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CUDA static library libtopography.a" + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && $(CMAKE_COMMAND) -P CMakeFiles/topography.dir/cmake_clean_target.cmake + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/topography.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/topography/CMakeFiles/topography.dir/build: src/topography/libtopography.a +.PHONY : src/topography/CMakeFiles/topography.dir/build + +src/topography/CMakeFiles/topography.dir/clean: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography && $(CMAKE_COMMAND) -P CMakeFiles/topography.dir/cmake_clean.cmake +.PHONY : src/topography/CMakeFiles/topography.dir/clean + +src/topography/CMakeFiles/topography.dir/depend: + cd /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/release/src/topography/CMakeFiles/topography.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : src/topography/CMakeFiles/topography.dir/depend + diff --git a/release/src/topography/CMakeFiles/topography.dir/cmake_clean.cmake b/release/src/topography/CMakeFiles/topography.dir/cmake_clean.cmake new file mode 100644 index 0000000..be8c91c --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/cmake_clean.cmake @@ -0,0 +1,25 @@ +file(REMOVE_RECURSE + "CMakeFiles/topography.dir/energy.cu.o" + "CMakeFiles/topography.dir/energy.cu.o.d" + "CMakeFiles/topography.dir/geometry.c.o" + "CMakeFiles/topography.dir/geometry.c.o.d" + "CMakeFiles/topography.dir/grids.c.o" + "CMakeFiles/topography.dir/grids.c.o.d" + "CMakeFiles/topography.dir/host.c.o" + "CMakeFiles/topography.dir/host.c.o.d" + "CMakeFiles/topography.dir/mms.cu.o" + "CMakeFiles/topography.dir/mms.cu.o.d" + "CMakeFiles/topography.dir/stress.cu.o" + "CMakeFiles/topography.dir/stress.cu.o.d" + "CMakeFiles/topography.dir/topography.c.o" + "CMakeFiles/topography.dir/topography.c.o.d" + "CMakeFiles/topography.dir/velocity.cu.o" + "CMakeFiles/topography.dir/velocity.cu.o.d" + "libtopography.a" + "libtopography.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C CUDA) + include(CMakeFiles/topography.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/release/src/topography/CMakeFiles/topography.dir/cmake_clean_target.cmake b/release/src/topography/CMakeFiles/topography.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..e65ae69 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libtopography.a" +) diff --git a/release/src/topography/CMakeFiles/topography.dir/compiler_depend.make b/release/src/topography/CMakeFiles/topography.dir/compiler_depend.make new file mode 100644 index 0000000..bec6cfd --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for topography. +# This may be replaced when dependencies are built. diff --git a/release/src/topography/CMakeFiles/topography.dir/compiler_depend.ts b/release/src/topography/CMakeFiles/topography.dir/compiler_depend.ts new file mode 100644 index 0000000..004b786 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for topography. diff --git a/release/src/topography/CMakeFiles/topography.dir/depend.make b/release/src/topography/CMakeFiles/topography.dir/depend.make new file mode 100644 index 0000000..cb33f9a --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for topography. +# This may be replaced when dependencies are built. diff --git a/release/src/topography/CMakeFiles/topography.dir/energy.cu.o b/release/src/topography/CMakeFiles/topography.dir/energy.cu.o new file mode 100644 index 0000000000000000000000000000000000000000..cd9306ace63ebddb6cc1028af091c3dd630dcf96 GIT binary patch literal 74936 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 JIsVZ4{{oDrE^hz; literal 0 HcmV?d00001 diff --git a/release/src/topography/CMakeFiles/topography.dir/energy.cu.o.d b/release/src/topography/CMakeFiles/topography.dir/energy.cu.o.d new file mode 100644 index 0000000..d8f76f0 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/energy.cu.o.d @@ -0,0 +1,163 @@ +src/topography/CMakeFiles/topography.dir/energy.cu.o : /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/energy.cu \ + /usr/include/stdc-predef.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /usr/include/features.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/limits.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include-fixed/syslimits.h \ + /usr/include/limits.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stddef.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/common_functions.h \ + /usr/include/string.h \ + /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/time.h \ + /usr/include/bits/time.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/new \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/c++config.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/os_defines.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/powerpc64le-unknown-linux-gnu/bits/cpu_defines.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/exception \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_ptr.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/exception_defines.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cxxabi_init_exception.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/typeinfo \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/hash_bytes.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/nested_exception.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/move.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/concept_check.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/type_traits \ + /usr/include/stdio.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/lib/gcc/powerpc64le-unknown-linux-gnu/9.3.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/stdlib.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cstdlib \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/sys/types.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/std_abs.h \ + /usr/include/assert.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/math_functions.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/math.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/cmath \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/bits/cpp_type_traits.h \ + /autofs/nccs-svm1_sw/summit/gcc/9.3.0-2/include/c++/9.3.0/ext/type_traits.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h \ + /usr/include/bits/mathinline.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/math_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/device_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/device_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_atomic_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_atomic_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/device_double_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/device_double_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_20_atomic_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_20_atomic_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_32_atomic_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_32_atomic_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_35_atomic_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_60_atomic_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_60_atomic_functions.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_20_intrinsics.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_20_intrinsics.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_30_intrinsics.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_30_intrinsics.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_32_intrinsics.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_32_intrinsics.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_35_intrinsics.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_61_intrinsics.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/sm_61_intrinsics.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/sm_70_rt.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/sm_70_rt.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/sm_80_rt.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/sm_80_rt.hpp \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_fetch_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_indirect_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_indirect_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/cudacc_ext.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_launch_parameters.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/energy.cuh \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/metrics/metrics.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/grid/grid_3d.h diff --git a/release/src/topography/CMakeFiles/topography.dir/flags.make b/release/src/topography/CMakeFiles/topography.dir/flags.make new file mode 100644 index 0000000..ea0f1e3 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/flags.make @@ -0,0 +1,17 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# compile C with /usr/bin/cc +# compile CUDA with /sw/summit/cuda/11.7.1/bin/nvcc +C_DEFINES = + +C_INCLUDES = -I/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include + +C_FLAGS = -std=c99 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wno-unused-parameter + +CUDA_DEFINES = + +CUDA_INCLUDES = --options-file CMakeFiles/topography.dir/includes_CUDA.rsp + +CUDA_FLAGS = -O4 -Xcompiler -std=c++11 -use_fast_math -Xptxas=-v -lineinfo "--generate-code=arch=compute_70,code=[compute_70,sm_70]" + diff --git a/release/src/topography/CMakeFiles/topography.dir/geometry.c.o b/release/src/topography/CMakeFiles/topography.dir/geometry.c.o new file mode 100644 index 0000000000000000000000000000000000000000..6f28368082b7dc139663105f25f609f6ce414898 GIT binary patch literal 6216 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 literal 0 HcmV?d00001 diff --git a/release/src/topography/CMakeFiles/topography.dir/grids.c.o.d b/release/src/topography/CMakeFiles/topography.dir/grids.c.o.d new file mode 100644 index 0000000..9cf3f75 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/grids.c.o.d @@ -0,0 +1,30 @@ +src/topography/CMakeFiles/topography.dir/grids.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/grids.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/grids.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/grid/grid_3d.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/string.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/grid/shift.h diff --git a/release/src/topography/CMakeFiles/topography.dir/host.c.o b/release/src/topography/CMakeFiles/topography.dir/host.c.o new file mode 100644 index 0000000000000000000000000000000000000000..64bf854cdb35538d818ac721144efaa89f65878b GIT binary patch literal 11624 zcmb`MK};Oy7015?l5QKvAt`B5Z7I`~q`Q{0ERG#*DJ?^A>`hGFRe}``mX`JI;-vw0 zwL5Ny3St_$lH2;=NRPXF1MRtV|z{8JY)7l zYoN!N*JGbH1*cj~U}IzJ?~nhy_1z8ksotrmxwsKEy=x~-c+E10Cb9jN*A7qq?af2e z%uerO;mPjS@EOa5CoR+a`xoID_tf{M!BZSgHtZf4opMhdn#NkUn%?|Rwf?0V{mV7_ zts4EI8vW54{jnPTc8&gcjs8T9{-GNE!!`PIHTnxR`d#S9&op6rV=#ACKWz?9!Tfn( znVHkx6f-6;6Ts=XdycJc{qgbo)@P4#u65B|n}fNwU_OR*XTD)u&o^X#^KBUB+gy2G zt)cE#Q+Vy1d10-|EXCaZC#Ky~9nZSSx^`B(EbFrAHeof%>DOYF7jM2*9q^M{{b@`<9_rCbKLW~REO6b zc!jm1SLD^azSsb-aJ_k6m+SC423}#U=oNW2uN@8W3fI2p)vCj50ldOm(JS(5USDp2 zSGW&(UPEVj8TD|$s<&Fi5Cc!m43=QUP`*D3G{ zYelcft9d=#0I%>};d!;|@HzutVXf#Dc{Q(*26%<+vZzxOr6?^n(6drUL@zR(Qs%aY;vZ882m(W23WFOn2hW`C_V& zn}nlFP9#nB`p+Eiv$DlvzG#h3STB{jUmAtKp>Q|+jeNrxJT94W@;TCPZ%+32cUz&8 zr_Y3~SmanFY8{Cl>53lfI%_#x}x~gwv`SH{PJzn;`Rj&>6E&9w^UQq;S9gC}V*|JvG3%X{8*tI*MGnk!HPw8e)%v4`X588ACs9@%W3+@r^w zQ14O?M!`$7`8qduZJUi$?Q}I8o=rRK`_O!D*o)kQ-sb_WW3cjP=XKDZh!6jv4}Tpv z*5|t3X9;Y;NB^!5|CtXj`tV5~{yuQ@)A}?tVDaV*Y<~@FrSTfNYR0opaWq{@7E+na z=)`%GOpaWbNGFq#u2*BRW97>wmmE)xjpfrOGWgT}h$%T4xWL4fl)jKj{Uke{E=(G1 zp3FLL;05>&RECNp1=u(vW@KdSLMdmm?x@3MM~c}jnib0?v}p()<$3g9;=Iq-FU|;j ztHjG?YG}UT!K0NNjb3XjC4`1-%%RYS7hX?V#1j`=(KAh*b{#O3(a}(sOPbO3$3Xa&(?Sy72Y5+K8iG=4lBo^BfRd=9wd| z^Bg0t&pRdR$ULuzIx^3z#C4w6m7a5(ReI)gO3%5?D?Rf?;yTZp#PztAgkI)(S8$o< zhTt;KHXJ-GI?s0EHuTB)86u88Wu7rn2b(UexbzU$c^+4K&MmI=%mpTw<*XKPI!}wZK5vvb){%MIqK?e-IB}ilfYOs~lTdo*gG$f24JkeI zVd6T^9C1A^N9bjqGlI)J7X_DjE)&;z-X*TjdtcO%c|H_%WS;B9b)Fka&$(?XJ#&5q zgFdl7=hlLO!NT>K?<21BY$I;NF?0*T!;K~MGS9<;%RGk!mw7tGb)GJ98_p%qds)#Bsbb z&oSb9T&~c|JTD0@^SmLr%=0dBo#zU1ecmrb9hv94s3Y@yL|o^&sq~zi*#`l@!g}T{ z#L=g`-h)cddA1VQdA1X`p^ls<9YQbjj0!IEJS(`&(L<5n>{mWnu8*D;Yy%1N2Xxl+kQiuv+RxfkEQr}N|E z*$GfhQ-v!5F zP5GI_?)LdVz#Xx$e?~usMkW6%G&BI(pJx(v%o8jf1So3r{i$^crVi9 zM?d=9c*tcszfGNZJHQ(HczpcTa|e)FrZ1h};*MDK_)%8r_*l4n(0k%oZ0h6x2euka A;Q#;t literal 0 HcmV?d00001 diff --git a/release/src/topography/CMakeFiles/topography.dir/host.c.o.d b/release/src/topography/CMakeFiles/topography.dir/host.c.o.d new file mode 100644 index 0000000..5db7862 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/host.c.o.d @@ -0,0 +1,56 @@ +src/topography/CMakeFiles/topography.dir/host.c.o: \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/src/topography/host.c \ + /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/bits/libc-header-start.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64-v2.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stddef.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_config.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/builtin_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/device_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/crt/host_defines.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_types.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/limits.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/syslimits.h \ + /usr/include/limits.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/surface_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/texture_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/library_types.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/channel_descriptor.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda_device_runtime_api.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/driver_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/vector_functions.hpp \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/pmcl3d_cons.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/host.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/topography.h \ + /usr/include/stdlib.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdlib-float.h \ + /sw/summit/cuda/11.7.1/targets/ppc64le-linux/include/cuda.h \ + /usr/lib/gcc/ppc64le-redhat-linux/8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/metrics/metrics.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/awp/definitions.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi.h \ + /sw/summit/spack-envs/summit-plus/opt/gcc-8.5.0/spectrum-mpi-10.4.0.6-20230210-f3ouht4ckff2qogy74bwki5ovljfou36/include/mpi_portable_platform.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/grid/grid_3d.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/vtk/vtk.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/test/test.h \ + /usr/include/time.h /usr/include/bits/time.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_tm.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/string.h \ + /ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include/topography/mapping.h diff --git a/release/src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp b/release/src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp new file mode 100644 index 0000000..8b5bbf1 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/includes_CUDA.rsp @@ -0,0 +1 @@ +-I"/sw/summit/cuda/11.7.1/targets/ppc64le-linux/include" -I/ccs/home/dean316/AWP_code_archive/gpu/awp_topo/awp/include diff --git a/release/src/topography/CMakeFiles/topography.dir/link.txt b/release/src/topography/CMakeFiles/topography.dir/link.txt new file mode 100644 index 0000000..edce772 --- /dev/null +++ b/release/src/topography/CMakeFiles/topography.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libtopography.a CMakeFiles/topography.dir/topography.c.o CMakeFiles/topography.dir/velocity.cu.o CMakeFiles/topography.dir/stress.cu.o CMakeFiles/topography.dir/geometry.c.o CMakeFiles/topography.dir/host.c.o CMakeFiles/topography.dir/grids.c.o CMakeFiles/topography.dir/mms.cu.o CMakeFiles/topography.dir/energy.cu.o +/usr/bin/ranlib libtopography.a diff --git a/release/src/topography/CMakeFiles/topography.dir/mms.cu.o b/release/src/topography/CMakeFiles/topography.dir/mms.cu.o new file mode 100644 index 0000000000000000000000000000000000000000..42184830e93a928bf1da3fa61c18d82c6e75b7f6 GIT binary patch literal 150728 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

^R&p=VT?}!K=sPm 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 z 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

1$F5O|&5K(zHYmTicyP3;NKh{N~e%#N5 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 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/release/CMakeFiles/3.27.7/CompilerIdC/a.out b/release/CMakeFiles/3.27.7/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..10aa3419428dcb2bfaf9d846c7cd9e748e3a2cdf GIT binary patch literal 79512 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 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if __cplusplus > 202002L + "23" +#elif __cplusplus > 201703L + "20" +#elif __cplusplus >= 201703L + "17" +#elif __cplusplus >= 201402L + "14" +#elif __cplusplus >= 201103L + "11" +#else + "03" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/release/CMakeFiles/3.27.7/CompilerIdCUDA/a.out b/release/CMakeFiles/3.27.7/CompilerIdCUDA/a.out new file mode 100755 index 0000000000000000000000000000000000000000..73b311567a2eb05d238133238dbf6ad5aa0baf2d GIT binary patch literal 926560 zcmeFa4`5Wqy)QnS1V|8QXt50ybR*Cv5FoVJZV2iI|1_wyp+y^7S~e!Z#3m3R=tehW zmjF!=>_)@}6-)}!K(!C=)%&m&O;p;T@*Y;b7pv5y+TLBzd-18a8xZz=zGr66&YnGI zHwnS^zTa>4u$wvO%zXdPcfRwTnTG3bx<1KfWAc;4E@t#s$Mr0o%AE8MK5btfqkSjg zUng_0k@$BKyPOTj-zi#|cAK7;?`hw;^a4KeJC*;*lJQON)rkA})}EK&W5sjwTS7?R z!^A!DrM-vW+V|`~kJO6gH`B1;{}QaM^CIm&>m0@36W=x0@nYAH`L}$Jz@zt?KIZQ= zeazpJ-wOQNixNM=jjr_qKYVNL$#1*%G-L9co~6$ST-t97IJJl9pD3&uEBZ@q8NC;J zhvScL?Fsqq5iiPb+1^6Dr_n{+PxK|5{jO-wik{3VY7*a)e>1BpZ~eyXnN?-qm_1|l ziWy&{rwA6Rm!A37w{OP3Op_0eiS{RJ#MeW(?#D$hEypz**L+;^GXp=eaNURN`?$8? zT8!%kT&r=(&lLRl7Or|(AijyipA)}b;`?rV--PQy@wddE{;b25hie#Mjn z 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 z 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